- •Содержательная и формальная постановки задачи
- •Структура решения
- •Моделирование поверхности
- •Программное представление поверхности:
- •Геометрические преобразования
- •Определение цвета точек поверхности
- •Вычисление нормали поверхности в данной точке
- •Определение косинуса угла между направлением нормали и направлением на источник света (наблюдателя)
- •Определение косинуса угла между нормалью и векторов источника света
- •Определение цвета точки
- •Подсчёт нормалей можно осуществить с помощью 2 способов:
- •Определение цвета сегмента
- •Проецирование
- •Визуализация
- •1.Платформа .Net
- •Описание реализации применяемых методов
- •Моделирование поверхности в исходном положении
- •Геометрические преобразования
- •Определение цвета сегмента поверхности
- •Визуализация
- •Проецирование.
- •Визуализация.
- •Руководство пользователя
- •Результаты
-
Моделирование исходной поверхности.
-
Геометрическое преобразование.
-
Определение цветов точек поверхности.
-
Проецирование.
-
Визуализация.
Приведем краткое описание данных классов.
Класс Library – класс-библиотека, содержащий необходимые для геометрических преобразований функции.
Метод/свойство/функция |
Описание |
NewellMethod |
Функция, считающая нормаль сегмента |
OrthogonalProj_XOY |
Функция, задающая матрицу ортогонального проецирования |
ScalarMult |
Функция, считающая скалярное произведение двух векторов |
VectorLen |
Функция, вычисляющая длину вектора |
ZRotateMatrix |
Функция, задающая матрицу поворота вокруг оси х |
YRotateMatrix |
Функция, задающая матрицу поворота вокруг оси у |
XRotateMatrix |
Функция, задающая матрицу поворота вокруг оси z |
Класс Equations – содержит параметрические уравнения различных поверхностей, инкапсулированные в методы.
Метод/свойство |
Описание |
Helicoid |
Инкапсулирует параметрическое уравнение поверхности «Геликоид» |
Класс GraphicsHelper – вспомогательный класс, содержащий некоторые методы, используемые для выполнения геометрических преобразований.
Метод/свойство |
Описание |
BaseMatrix |
Поле, хранящее матрицу, накапливающую геометрические преобразования |
CalculateScreen |
Метод, выполняющий вычисление экранных координат точки |
ProjectXY |
Метод, выполняющий проецирование точки на плоскость XOY |
Rotate |
Метод, выполняющий преобразования поворота |
Класс Figure – представляет полигонально заданную поверхность.
Метод/свойство |
Описание |
m_Polygons |
Поле, хранящее массив полигонов поверхности |
InnerColor |
Свойство, хранящее внутренний цвет заливки поверхности |
OuterColor |
Свойство, хранящее внешний цвет заливки поверхности |
Calculate |
Метод, инициирующий вычисление всеми полигонами их положения |
Figure |
Конструктор класса. Принимает в качестве параметра массив точек поверхности, и выполняет построение полигонов на этих точках |
Fill |
Метод, выполняющий визуализацию поверхности, при этом выполняется заполнение полигонов с использованием flat-сглаживания |
Stroke |
Метод, выполняющий визуализацию каркаса поверхности |
Класс Polygon – представляет собой отдельный полигон поверхности
Метод/свойство |
Описание |
Points |
Свойство, хранящее массив точек вершин данного полигона |
ScreenPoints |
Свойство, хранящее массив экранных точек вершин данного полигона |
Calculate |
Метод, выполняющий геометрические преобразования точек вершин полигона и вычисляющий их экранные координаты |
CalculateColor |
Метод, выполняющий вычисление цвета закраски полигона |
Fill |
Метод, выполняющий закраску полигона |
Polygon |
Конструктор класса |
Stroke |
Метод, выполняющий визуализацию каркаса полигона |
Класс Point3D – представляет точку в трехмерном пространстве
Метод/свойство |
Описание |
X |
Свойство, хранящее координату X точки |
Y |
Свойство, хранящее координату Y точки |
Z |
Свойство, хранящее координату Z точки |
Point3D |
Конструктор класса |
Форма приложения представлена классом MainForm.
Метод/свойство |
Описание |
m_Figure |
Поле, хранящее объект Figure, представляющий поверхность |
ChangeColor |
Метод, вызываемый при изменении ползунков, определяющих цвет поверхности |
Draw |
Метод, осуществляющий визуализацию поверхности |
FigureChanged |
Метод, вызываемый при изменении ползунков, задающих параметры поверхности |
Rebuild |
Метод, выполняющий перепостроение поверхности на основании ее новых параметров |
FillTypeRadioChanged |
Метод, вызываемый при изменении способа визуализации поверхности |
xTrackBar_Scroll yTrackBar_Scroll zTrackBar_Scroll |
Методы, вызываемые при изменении значений ползунков, задающих углы поворота вокруг координатных осей |