Описание типов данных. Структура программы
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Список модулей:

TTex.h                     -   описание структуры TTex

TSurfTex.h     -   описание структур TPlaneTex и TEllipsoidTex

TPoint.h         -   описание структур TPoint2d и TPoint3d

TRGBColor.h          -   описание страктуры TRGBColor

TLamp.h         -   описание класса TLamp

TCam.h          -   описание класса TCam

TPrimitive.h             -   описание класса TPrimitive

TFrstSurface.h -   описание класса TFrstSurface

TScndSurface.h -   описание класса TScndSurface

TTriangle.h     -   описание класса TTriangle

TEllipsoid.h             -   описание класса TEllipsoid

TParaboloid.h          -   описание класса TParaboloid

TScene.h         -   описание класса TScene

TTracer.h        -   описание класса TTracer

Модули реализующие, интерфейс программы:

_AboutUnit.h                    -   модуль формы «О программе»

_ZoomUnit.h                     -   модуль формы «Лупа»

_Options.h               -   модуль формы «Опции»

_ExtraGlassOptions.h       -   модуль формы «Свойства стекла»

_ExtraTableOptions.h -   модуль формы «Свойства стола»

_ExtraCamOptions.h        -   модуль формы «Свойства камеры»

_MainUnit.h                      -   модуль главной формы программы

 

Рис. 2.3.1. Схема связей между модулями программы.


Рис.2.3.2. Схема наследования примитивов

 

Краткое описание структур и классов программы

 

struct TPoint3d – структура, описывающая точку в мировой системе координат

struct TPoint2d – структура, описывающая точку на плоскости (в текстуре) с целочисленными координатами

struct TRGBColor – структура, описывающая цвет по трем составляющим (RGB)

struct TTex – структура, описывающая текстуру – содержит адрес массива пикселей и его размеры

struct TPlaneTex – структура, описывающая привязку текстуры к плоскости.

Содержит три точки, к которым привязывается текстура

class TLamp – класс, описывающий источник освещения.

Содержит объект TPoint3d coord с координатами источника и три переменные типа float (Ir, Ig, Ib) для хранения интенсивности трех компонент света.

class TCam – класс, описывающий камеру.

Содержит два угла (a, b), указывающих направление зрения камеры, точку, на которую направлена камера (viewP) и расстояние от камеры до этой точки (r).

class TPrimitive – абстрактный класс примитива. От него наследуются поверхности первого и второго порядка.

class TFrstSurface – абстрактный класс поверхности первого порядка. От него наследуется класс треугольника.

class TScndSurface – абстрактный класс поверхности второго порядка. От него наследуются классы эллипсоида и параболоида.

class TTriangle – класс треугольника. Содержит три вершины треугольника и его нормаль

class TParaboloid – класс параболоида.

class TEllipsoid – класс эллипсоида.

class TScene – класс сцены. Содержит информацию о всех примитивах, источниках и камере.

class TTracer – класс, отвечающий за построения изображения. Содержит буфер (buffer) разметом 400x400 пикселей, в котором формируется изображение сцены. Перед генерацией необходимо вызвать функцию

selectScene передав ей в качестве параметра указатель на сцену, которуюнеобходимо сгенерировать. Для генерации вызвать функцию render.

Все классы – потомки TPrimitive предоставляют следующие функции:

float getT(TPoint3d p0, TPoint3d viewDir) – возвращает расстояние от точки начала(p0) луча viewDir до ближайшей точки пересечения с примитивом void getTArr(float* arr, int& n, TPoint3d p0, TPoint3d viewDir) – заполняет массив arr расстояниями от точки начала(p0) луча viewDir  до ближайшей всех точек пересечения с примитивом void getNormal(TPoint3d& n, const TPoint3d& p) – возвращает координаты вектора нормали к примитиву в точке p void getColor(TRGBColor& c, const TPoint3d& p) - возвращает цвет примитива точке p (с учетом текстуры).




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

 

Выбор языка программирования

 

При разработке программы был использован язык программирования высокого уровня C++ в составе среды визуального программирования CBuilder6.

Данный язык был выбран благодаря тому, что он предоставляет максимально удобные средства по работе с оперативной памятью, позволяет реализовывать алгоритмы более эффективно, по сравнению с другими высокоуровневыми языками. Программы, написанные на C++, работают быстрее и занимают меньше места на диске.

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

 

Дата: 2019-07-24, просмотров: 206.