Схема выбранной последовательности преобразований

В результате проведения анализа алгоритмов была выбрана следующая последовательность проведения преобразований:

 

 



Объекты сцены

 

Источник освещения

В связи со спецификой требований к программному продукту, т.е. необходимости реализации естественного (Солнечного) освящения. Источник освещения сцены мы считаем точечным и удалённым от прорисовываемых объектов.

Поэтому, источник задаётся двумя углами (азимутальным и зенитным), а также цветом.

 

Прорисовываемые объекты

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

Каждый объект загружается из файла в виде списка треугольников, либо четырехугольников. Треугольник, выбранный в данной программе единицей аппроксимации, задаётся в виде трёх вершин.

Задача нахождения пересечения треугольника и отрезка разбита на несколько этапов:

нахождение точки пересечения прямой, содержащей отрезок, и плоскости, содержащий треугольник.

проверка принадлежности найденной точки отрезку.

проверка на принадлежность этой точки треугольнику.

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



Технологическая часть

 

Выбор языка программирования и среды разработки

 

В качестве языка реализации программного комплекса был выбран Object Pascal, а средой разработки - Delphi 7. При данном выборе учитывались следующие моменты:

Поддержка объектно-ориентированного программирования, что облегчает создание сложных систем.

Предоставление средств визуального программирования для создания удобного интерфейса.

Обеспечение необходимой функциональности и читаемость кода программы.

Delphi был выбран оптимальной средой реализации как наиболее широко используемый и полнофункциональный компилятор на основе языка Pascal.

 

Структуры данных

 

Структура программного комплекса

На рисунке 2 представлена схема взаимодействия классов программы, на которой отображены основные вызовы. Стрелками с кружочком показаны включения методов в классы, а обычными стрелками - их вызовы.

Класс Фигура (TShape)
Прорисовать

Рис. 4 Структура программы

 

Класс объекта

Класс объекта хранит следующие данные о нём:

Точка "Центра объекта" - некоторая точка, перемещаемая при изменении координат объекта. Все координаты вершин вычисляются относительно этой точки.

Точка "Место назначения" - точка, необходимая для указания места назначения при движении объекта.

Цвет объекта - как и все цвета в программе задаётся в формате RGB.

Собственный угол поворота объекта.

Список треугольников, составляющих объект.

Также класс объекта предоставляет следующие методы:

Прорисовка. Выполняется прорисовка изображения в Bitmap и запись данных о глубине в массив Z-величин.

Прорисовка с освещением. Производятся вычисления аналогичные прорисовки, но используется дифференциальное освещение.

Загрузка из файла. Производится чтений фигуры из файла установленного стандарта.

Поворот. Фигура поворачивается на заданные зенитные и азимутальные углы. Все повороты производятся относительно "Центра объекта".

Масштабирование. Расчет производится относительно "Центра объекта".

Поворот при перемещении. Производится расчет угла между текущим направлением объекта и направлением к точке "Место назначения". В случае необходимости происходит изменение угла с учетом заданной скорости поворота объекта.

Перемещение. Производится расчет следующего местоположения на пути к точке "Место назначения" с учетом скорости объекта. Результат присваивается точке "Центра объекта".

 

Интерфейсный класс

На уровне методов формы реализованы:

Расчет сцены. Внутри этого метода производится выбор способа расчета (с освещением, или без) в зависимости от настроек.

Очистка экрана. Очищается экран изображения и Z-буфер.

Масштабирование всех объектов с заданным коэффициентом.

 

Структуры данных

В виде глобальных переменных хранятся:

Массив объектов, включает в себя всё объекты. Динамический массив, изменяется каждый раз, когда мы создаём новый объект.

Источник освещения.

Данные о необходимом количестве просчитываемых кадров.

Сведения о скорости работы программы, необходимые для тестирования скоростных показателей программы.

Данные о полигонах в объектах хранятся в виде односвязных списков полигонов. Каждый полигон - набор из трех вершин.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: