- •1. Постановка задачи
- •Математический аппарат:
- •2. Математическое моделирование
- •2.1. Математические модели геометрических объектов
- •2.7. Определение вхождения точки в многоугольник (Ray Casting)
- •2.8. Сортировка точек на прямой (Скалярное произведение)
- •2.9. Расчет угла поворота (Арктангенс)
- •2.10. Вычисление центроида группы
- •3. Структура и Архитектура приложения
- •3.1. Слой Математического Ядра
- •3.2. Взаимодействие приложения с математикой (Interaction Pipeline)
- •3.3. Абстракция Системы Координат
- •4. Организация данных
- •5. Руководство пользователя
- •Список использованных источников
- •Заключение
- •Приложение а Реализация математического ядра
- •Реализация матричных преобразований
- •Парсинг и сохранение данных
- •Логика отрисовки и взаимодействия
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра САПР
ПРАКТИЧЕСКАЯ РАБОТА
по дисциплине «Информационные технологии в проектировании и производстве»
Тема: Разработка математического, информационного и программного обеспечения для обработки 2D-геометрии в САПР
Студент гр. 1302 |
|
Наволоцкий И.Р. |
Преподаватель (ассистент кафедры САПР) |
|
Шамрай Я.Л. |
Санкт-Петербург
2025
Содержание
Y
1. Постановка задачи 3
2. Математическое моделирование 5
2.1. Математические модели геометрических объектов 5
2.2. Система координат 6
2.3. Математическое описание прямой 6
2.4. Поиск пересечений (СЛАУ) 7
2.5. Аффинные преобразования 7
2.6. Алгоритм отсечения (Graph-Based Clipping) 8
2.7. Определение вхождения точки в многоугольник (Ray Casting) 9
2.8. Сортировка точек на прямой (Скалярное произведение) 9
2.9. Расчет угла поворота (Арктангенс) 10
2.10. Вычисление центроида группы 11
3. Структура и Архитектура приложения 12
3.1. Слой Математического Ядра 13
3.2. Взаимодействие приложения с математикой (Interaction Pipeline) 14
3.3. Абстракция Системы Координат 15
4. Организация данных 17
5. Руководство пользователя 19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 24
Заключение 25
Приложение А 26
1. Постановка задачи
Цель работы: Разработать программное приложение (САПР), позволяющее визуализировать произвольные (выпуклые и невыпуклые) многоугольники, выполнять над ними геометрические преобразования и реализовывать алгоритм отсечения многоугольника произвольной прямой линией.
Требования к решению:
Графический интерфейс (GUI): Наличие окна визуализации и инструментов управления.
Архитектура: Строгое разделение структур хранения данных (Model) и логики отображения (View). Приложение должно быть однодокументным.
Работа с файлами: При использовании современных браузеров поддерживается прямое сохранение (перезапись) файла на диск с использованием File System Access API [7].
Математический аппарат:
Использование общего уравнения прямой
Реализация аффинных преобразований (перенос, поворот) через матрицы.
Реализация алгоритма отсечения, корректно обрабатывающего сложные формы (включая распад фигуры на несколько областей).
Использование системы координат, которые преобразуются в отрисовку пикселей, при этом сохраняя свои значения (x, y).
Визуализация: Цветовая индикация результатов отсечения (разные цвета для частей, лежащих по разные стороны от секущей прямой).
2. Математическое моделирование
В основе программного комплекса лежит аналитическая геометрия и линейная алгебра.
2.1. Математические модели геометрических объектов
Для представления геометрических примитивов в памяти ЭВМ и проведения операций над ними были выбраны следующие математические модели:
А. Модель Точки
Базовым
примитивом является точка на плоскости.
Для обеспечения возможности выполнения
аффинных преобразований (включая
параллельный перенос) через матричное
умножение, используется аппарат однородных
координат.
Каждая
точка
моделируется
как трехмерный вектор-столбец:
Где 1 — фиктивная координата, позволяющая записать операции смещения в линейном виде.
Б. Модель Многоугольника (Полигона)
Многоугольник
моделируется как упорядоченное
множество вершин
Ребра многоугольника не хранятся явно, а определяются неявно как отрезки, соединяющие вершины
и
.Фигура считается замкнутой, подразумевая существование ребра между последней точкой
и первой
Эта модель позволяет описывать как выпуклые, так и невыпуклые (вогнутые) многоугольники без самопересечений.
В. Модель Секущей Прямой
Секущая прямая имеет двойственное представление в зависимости от контекста:
Параметрическое: Отрезок, заданный двумя опорными точками
и
которые определяет пользователь.Вычислительное: Бесконечная прямая, разделяющая плоскость на два полупространства, описываемая уравнением:
2.2. Система координат
В приложении используется две системы координат:
Экранная
(Screen): Начало
в
левом верхнем углу, ось
направлена
вниз (стандарт Canvas/PixiJS).
Мировая (World): Декартова система. Начало в центре экрана, ось направлена вверх. Преобразование между ними осуществляется линейной интерполяцией с учетом масштаба и смещения центра.
2.3. Математическое описание прямой
Секущая
прямая задается пользователем двумя
точками
и
Для вычислений она преобразуется в Общее уравнение прямой:
Коэффициенты вычисляются следующим образом:
Данное представление позволяет однозначно определить положение любой точки относительно прямой:
– точка
в положительной плоскости.
– точка
в отрицательной плоскости.– точка лежит на прямой.
2.4. Поиск пересечений (СЛАУ)
Для нахождения точки пересечения ребра многоугольника и секущей прямой решается система линейных алгебраических уравнений (СЛАУ) методом Крамера.
Пусть
—
секущая прямая,
—
прямая, содержащая ребро.
Координаты точки пересечения:
,
где
– главный определитель матрицы
коэффициентов. Если
,
прямые параллельны.
2.5. Аффинные преобразования
Для
операций переноса и поворота
используются однородные
координаты (точка
представляется вектором
)
и матрицы преобразований 3×3
[5].
Перенос (Translation) на
Поворот (Rotation) на угол
:
Поворот вокруг произвольной точки
:
Реализуется через композицию матриц: сдвиг центра в начало координат → поворот → сдвиг обратно.
2.6. Алгоритм отсечения (Graph-Based Clipping)
Для корректной обработки невыпуклых многоугольников (например, форм типа "U" или "M"), которые могут распадаться на несколько несвязных областей, разработан алгоритм на основе графов («Цепочки и Мосты») на принципах удаления скрытых поверхностей Вейлера-Атертона [4].
Алгоритм состоит из 4 этапов:
Обогащение (Enrichment): Обход контура исходного многоугольника. Если ребро пересекает секущую прямую, вычисляется точка пересечения, которая вставляется в список вершин.
Формирование Цепочек (Chains): Обогащенный контур разбивается на разомкнутые последовательности вершин («Цепочки»), лежащие в искомой полуплоскости. Каждая цепочка начинается и заканчивается точкой на секущей прямой.
Построение Мостов (Bridges):
Все точки пересечения сортируются вдоль секущей прямой.
Анализируются отрезки между соседними точками пересечения.
Применяется Midpoint Test: если середина отрезка лежит внутри исходного многоугольника (проверка методом трассировки луча), этот отрезок объявляется «Мостом» — валидным путем для замыкания контура.
Сшивание (Stitching):
Алгоритм берет конец одной Цепочки.
Находит валидный Мост, исходящий из этой точки.
Переходит к началу следующей Цепочки.
Процесс повторяется до замыкания контура.
Этот метод гарантирует топологическую корректность и отсутствие артефактов ("ложных перемычек") в пустотах фигуры.
