Создание компоненты, реализующей модель движущегося человека

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

 

 

 

 

 

 

 

 

 

 

Создание компоненты, реализующей модель движущегося человека

 

 

1. Анализ предметной области. Выявление состава, структуры, и возможных состояний объекта

 

 

Физическая модель, движущегося в реальной жизни человека, очень трудна. У него много составных подвижных частей, который могут изменять свое положение в трех измерениях. При составлении математической модели, было принято решение выделить только основные части тела, характерные человеку. А так же ограничиться только двумя степенями свободы для вращающихся частей тела.

К вращающимся частям тела относятся руки, состоящие из плеч и предплечий, и ног состоящие соответственно из бедер и голеней. Они представляют собой отрезки с заданным началом (центром вращения), углом и длиной (более подробное описание составляющих встретится ниже). Так же в тело человека входят Голова, представленная окружностью, и туловище, отображаемое как прямая линия.

Класс вращающаяся часть тела

Вращающаяся часть тела, как говорилось ранние, представляет собой отрезок, положение которого задается углом, начальной точкой и длиной. Но для вращения так же характерно направление положительного движения: почасовой или против часовой стрелки (под положительным движение понимается движение, при котором конечная точка отрезка станет выше предыдущего положения ()). Это необходимо для того, чтобы при команде такой как Поднять_часть_тела_вверх, части тела, принадлежащие левой стороне двигались по часовой стрелке (т.е. увеличивая угол ?), а принадлежащие правой стороне, соответственно против часовой (т.е. уменьшая угол ?) (см. рис. 2)

 

 

Любая вращающаяся часть тела имеет предельные углы: начальный и конечный, выход за которые не допустим. При этом учитывается направление положительного вращения. Иными словами, допустимый диапазон углов может быть разный при одинаковых начальном и конечном углах, но при разных направлениях. (см. рис. 3)

 

Можно так же заметить, что некоторые части тела связаны с другими, т.е. у них есть общая точка (например: плечо и предплечье). Что при движении одной части приводит к изменению другой.

Основываясь на выше сказанном, класс должен иметь следующее:

Поля:

.Начальный точка (центр вращения)

.Текущий угол

.Длина

.Начальный угол

.Конечный угол

.Угловая скорость (общее поле для всех экземпляров)

.Направление движения

.Связанная часть тела (экз. такого же класса)

Свойства:

.Чтение / Изменение начального угла

.Чтение / Изменение конечного угла

.Чтение / Изменение текущего угла (при изменении проверяется допустимый диапазон углов, а так же угол приводится к виду когда он всегда положительный (>= 0 и <=360))

.Чтение начальной точки

.Чтение / Изменение координат начальной точки

.Чтение конечной точки (расчет на основе угла и длины)

.Чтение / Изменение угловой скорости

Функции:

1.Обновление координат связанной части тела

.Проверка принадлежности угла допустимому диапазону

.Рисования части тела

.Задание диапазона углов

.Вращать по направлению положительного вращения

.Вращать против направления положительного вращения

Класс голова

Голова представляет собой окружность некоторого радиуса с определенными координатами центра.

Класс Голова должна иметь:

Поля:

.Радиус;

.Центр;

И у нее должна быть следующая функция:

.Функция рисования себя.

Класс человек

Как известно, у человека две руки и две ноги, каждые из которых состоят из двух связанных вращающихся частей тела (плечо и предплечье, бедро и голень). Итого таких частей всего 8. А так же голова, представленная отдельным классом, и туловище. В виду малой возложенной функциональности на туловище, было решено не выделять его как отдельный класс, а просто графически представить как элементарный отрезок.

Класс Человек состоит из:

Поля:

.Координаты начальной точки туловища

.Длина туловища

.Цвет

.Экземпляры класса Вращающаяся Часть Тела (8 шт.)

.Экземпляр класса Голова

Функции: Рисование человека

 

2. Выбор и обоснование программного решения

 

Наша компонента наследуется от класса UserControl, который в свою очередь порождается от класса Control. Это означает, что мы имеем дело с элементом управления. UserControl предоставляет контекст графического устройства для рисования как Graphics.

Компонента наследуется от класса UserControl, но это не означает, что ее нельзя реализовать, унаследовав от другого класса. Например, можно воспользоваться готовым классом компоненты Component, содержащий минимальный интерфейс. Но данный класс не имеет собственного Graphics. То есть данный класс не может себя прорисовывать без помощи извне. А наш класс должен иметь пользовательский интерфейс (то есть являться визуальным).

Таким образом, можно заключить, что наследование от класса UserControl хоть и не является единственно верным путем к созданию компоненты, но в тоже время такой способ имеет право на существование.

Теперь перейдем непосредственно к разработке.

Наша компонента будет состоять из простейших геометрических фигур: окружностей и прямых.

Создаваемая компонента представляет собой класс, порождённый от UserControl и включающий в себя иерархию классов, показанную выше.

 

3. Разр