Описание алгоритмов машинной графики, построение выпуклой оболочки, триангуляции Делоне, звездчатого полигона многоугольника и диаграммы Воронова. Проектирование модуля на языке C , в среде Visual Studio, с использованием библиотеки классов MFC.
Аннотация к работе
Министерство образования Республики Беларусь «Белорусский государственный университет информатики и радиоэлектроники» ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту по курсу: “Проектирование интеллектуальных систем и систем принятия решений”Работа выполнена на 38 листах с пояснительной запиской на 28 листах; включает 4 раздела, 2 приложения, 5 рисунков и 5 литературных источников. В первом разделе проекта приведено описание алгоритмов машинной графики, а в частности построение выпуклой оболочки, построение триангуляции Делоне, построение звездчатого полигона.Решаемые задачи: В рамках данного курсового проекта необходимо реализовать алгоритмы машинной графики: Построение выпуклой оболочки. Программа должна уметь генерировать задачи для каждого из вышеуказанных методов, а также решение этих задач. Программа должна позволять проводить пошаговое исполнение указанных алгоритмов машинной графики, с графической демонстрацией.Каждый метод машинной графики был реализован в своем классе. Каждый класс имеет свои поля для хранения промежуточных данных, при работе программы, методы, реализующие соответствующий алгоритм, методы, реализующие графическую демонстрацию работы алгоритма. Все классы наследуются от базового класса CCONTAINER, который содержит общие данные и функции для всех классов: в нем хранятся точки, которые отображаются на экране, а также происходит рисование этих точек, задается масштаб координатной сетки. Графическое представление происходит в классе CDINKUMVIEW, в методе ONDRAW, в котором реализуется отображение координатной сетки - Show_grid.В классе CCONTAINER содержатся данные и функции, которые используются классами-наследниками. static int NUM_POINTS - количество точек static int SCALE - масштаб координатной стеки static Vector2D *v_points - массив векторов static COLORREF SEL_STATES[4] - массив возможных состояний точек CRECT SETINSIDE(Vector2D pt, CDC *dc, int index, int alg_type) - метод, который рисует точки, в соответствии с состоянием каждой точки. void init_points (); - инициализация точек (генерация случайным образом) void draw_points (CDC *dc); - рисование точек void garbage_collector(); - метод удаления выделенной памяти Класс Polygonn отвечает за построение двух алгоритмов: выпуклой оболочки, а также звездчатого многоугольника, в нем содержатся следующие методы и данные: Point *b_p, *e_p; - указатели на хранимые точки void init(); - инициализация данных void create_report(); - создание отчета void garbage_collector(); - удаление выделенной памяти int draw_all (CDC *dc, int i_step, int j_step); - рисование заданного шага по i,j int ADDVERTEX(Vector2D *v,int num=0); - добавление вершины int CONVS (Vector2D *s, bool true_if_start_again=false) - функция построения выпуклого многоугольника. Данные и методы, приведенные ниже относятся к построению звездчатого полигона: Vector2D *vertices - набор точек int NUMVERTICES ; - количество точек int MAXVERTICES ; - максимальное количество точек int ADDVERTEX(const Vector2D &v, int after); - добавление вершины в полигону int POLARCMP(Vector2D *p, Vector2D *q); - сравнение точек по углу между ними void Polygonn::resize(int size); - изменение размера массива точек Triangle *triangles - указатель на класс треугольника int count; - количество треугольников void Insert(Triangle t); - добавление треугольника void draw_triangle(Triangle ,CDC *) - рисование треугольника void draw_all(CDC *dc, bool if_init,int *res); - рисование промежуточных результатов void garbage_collector(); - удаление выделенной памятиДля иллюстрации работы программы, приведем несколько примеров работы программы. Второй пример иллюстрирует работу программу программы при построении триангуляции Делоне.В результате выполнения данного курсового проекта был разработан программный макет лабораторного практикума по курсу ГИИСИКГ, проанализирована теория, описывающая методы компьютерной графики, а также разработано программное приложение, реализующее 3 алгоритма машинной графики, демонстрирующее их работу и генерирующее задачи, а также решение к ним.