Скачиваний:
0
Добавлен:
27.12.2025
Размер:
216.59 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра САПР

ПРАКТИЧЕСКАЯ РАБОТА

по дисциплине «Информационные технологии в проектировании и производстве»

Тема: Разработка математического, информационного и программного обеспечения для обработки 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. Постановка задачи

Цель работы: Разработать программное приложение (САПР), позволяющее визуализировать произвольные (выпуклые и невыпуклые) многоугольники, выполнять над ними геометрические преобразования и реализовывать алгоритм отсечения многоугольника произвольной прямой линией.

Требования к решению:

  1. Графический интерфейс (GUI): Наличие окна визуализации и инструментов управления.

  2. Архитектура: Строгое разделение структур хранения данных (Model) и логики отображения (View). Приложение должно быть однодокументным.

  3. Работа с файлами: При использовании современных браузеров поддерживается прямое сохранение (перезапись) файла на диск с использованием File System Access API [7].

  4. Математический аппарат:

    • Использование общего уравнения прямой 

    • Реализация аффинных преобразований (перенос, поворот) через матрицы.

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

    • Использование системы координат, которые преобразуются в отрисовку пикселей, при этом сохраняя свои значения (x, y).

  5. Визуализация: Цветовая индикация результатов отсечения (разные цвета для частей, лежащих по разные стороны от секущей прямой).

2. Математическое моделирование

В основе программного комплекса лежит аналитическая геометрия и линейная алгебра.

2.1. Математические модели геометрических объектов

Для представления геометрических примитивов в памяти ЭВМ и проведения операций над ними были выбраны следующие математические модели:

А. Модель Точки

Базовым примитивом является точка на плоскости. Для обеспечения возможности выполнения аффинных преобразований (включая параллельный перенос) через матричное умножение, используется аппарат однородных координат. Каждая точка   моделируется как трехмерный вектор-столбец:

Где 1 — фиктивная координата, позволяющая записать операции смещения в линейном виде.

Б. Модель Многоугольника (Полигона)

Многоугольник моделируется как упорядоченное множество вершин

  • Ребра многоугольника не хранятся явно, а определяются неявно как отрезки, соединяющие вершины и .

  • Фигура считается замкнутой, подразумевая существование ребра между последней точкой и первой

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

В. Модель Секущей Прямой

Секущая прямая имеет двойственное представление в зависимости от контекста:

  1. Параметрическое: Отрезок, заданный двумя опорными точками  и которые определяет пользователь.

  2. Вычислительное: Бесконечная прямая, разделяющая плоскость на два полупространства, описываемая уравнением:

2.2. Система координат

В приложении используется две системы координат:

Экранная (Screen): Начало   в левом верхнем углу, ось   направлена вниз (стандарт Canvas/PixiJS).

Мировая (World): Декартова система. Начало  в центре экрана, ось  направлена вверх. Преобразование между ними осуществляется линейной интерполяцией с учетом масштаба и смещения центра.

2.3. Математическое описание прямой

Секущая прямая задается пользователем двумя точками и

Для вычислений она преобразуется в Общее уравнение прямой:

Коэффициенты вычисляются следующим образом:

Данное представление позволяет однозначно определить положение любой точки относительно прямой:

  • – точка в положительной плоскости.

  • – точка в отрицательной плоскости.

  • – точка лежит на прямой.

2.4. Поиск пересечений (СЛАУ)

Для нахождения точки пересечения ребра многоугольника и секущей прямой решается система линейных алгебраических уравнений (СЛАУ) методом Крамера.

Пусть   — секущая прямая,  — прямая, содержащая ребро.

Координаты точки пересечения:

,

где – главный определитель матрицы коэффициентов. Если , прямые параллельны.

2.5. Аффинные преобразования

Для операций переноса и поворота используются однородные координаты (точка представляется вектором ) и матрицы преобразований 3×3 [5].

  1. Перенос (Translation) на

  1. Поворот (Rotation) на угол :

  1. Поворот вокруг произвольной точки :

Реализуется через композицию матриц: сдвиг центра в начало координат → поворот → сдвиг обратно.

2.6. Алгоритм отсечения (Graph-Based Clipping)

Для корректной обработки невыпуклых многоугольников (например, форм типа "U" или "M"), которые могут распадаться на несколько несвязных областей, разработан алгоритм на основе графов («Цепочки и Мосты») на принципах удаления скрытых поверхностей Вейлера-Атертона [4].

Алгоритм состоит из 4 этапов:

  1. Обогащение (Enrichment): Обход контура исходного многоугольника. Если ребро пересекает секущую прямую, вычисляется точка пересечения, которая вставляется в список вершин.

  2. Формирование Цепочек (Chains): Обогащенный контур разбивается на разомкнутые последовательности вершин («Цепочки»), лежащие в искомой полуплоскости. Каждая цепочка начинается и заканчивается точкой на секущей прямой.

  3. Построение Мостов (Bridges):

    • Все точки пересечения сортируются вдоль секущей прямой.

    • Анализируются отрезки между соседними точками пересечения.

    • Применяется Midpoint Test: если середина отрезка лежит внутри исходного многоугольника (проверка методом трассировки луча), этот отрезок объявляется «Мостом» — валидным путем для замыкания контура.

  4. Сшивание (Stitching):

    • Алгоритм берет конец одной Цепочки.

    • Находит валидный Мост, исходящий из этой точки.

    • Переходит к началу следующей Цепочки.

    • Процесс повторяется до замыкания контура.

Этот метод гарантирует топологическую корректность и отсутствие артефактов ("ложных перемычек") в пустотах фигуры.