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

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра САПР

ПРАКТИЧЕСКАЯ РАБОТА по дисциплине «Информационные технологии в проектировании и

производстве» Тема: Разработка математического, информационного и программного

обеспечения для обработки 2D-геометрии в САПР

Студент гр. 1302

 

Наволоцкий И.Р.

Преподаватель

 

 

(ассистент кафедры САПР)

 

 

Шамрай Я.Л.

Санкт-Петербург

2025

 

Содержание

 

1.

Постановка задачи...................................................................................................................................

3

2.

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

4

 

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

4

 

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

5

 

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

5

 

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

6

 

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

6

 

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

7

 

2.7. Определение вхождения точки в многоугольник (Ray Casting) ..................................................

8

 

2.8. Сортировка точек на прямой (Скалярное произведение).............................................................

9

 

2.9. Расчет угла поворота (Арктангенс) ................................................................................................

9

 

2.10. Вычисление центроида группы ..................................................................................................

10

3.

Структура и Архитектура приложения ...............................................................................................

11

 

3.1. Слой Математического Ядра ........................................................................................................

12

 

3.2. Взаимодействие приложения с математикой (Interaction Pipeline) ...........................................

13

 

3.3. Абстракция Системы Координат..................................................................................................

14

4.

Организация данных .............................................................................................................................

16

5.

Руководство пользователя....................................................................................................................

17

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ................................................................................

22

Заключение ................................................................................................................................................

23

Приложение А ...........................................................................................................................................

24

2

1. Постановка задачи

Цель работы: Разработать программное приложение (САПР),

позволяющее визуализировать произвольные (выпуклые и невыпуклые)

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

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

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

2.Архитектура: Строгое разделение структур хранения данных

(Model) и логики отображения (View). Приложение должно быть

однодокументным.

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

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

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

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

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

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

5.Визуализация: Цветовая индикация результатов отсечения

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

3

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

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

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

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

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

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

Каждая точка ( , ) моделируется как трехмерный вектор-столбец:

= ( ) 1

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

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

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

= {0, 1, … , −1}

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

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

Эта модель позволяет описывать как выпуклые, так и невыпуклые

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

4

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

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

контекста:

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

и (End) которые определяет пользователь.

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

полупространства,

описываемая

уравнением:

( , ) = + + = 0

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

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

Экранная

(Screen): Начало (0,0) в

левом

верхнем

углу,

ось Y направлена вниз (стандарт Canvas/PixiJS).

 

 

 

Мировая (World): Декартова система. Начало (0,0)

в центре экрана,

ось

Y направлена

 

 

вверх.

Преобразование между ними осуществляется линейной интерполяцией с учетом масштаба и смещения центра.

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

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

2( 2, 2)

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

+ + = 0

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

= 2 1

= 2 1

5

= − 1 1

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

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

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

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

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

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

методом Крамера.

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

{ 1 + 1 = − 12 + 2 = − 2

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

= , =

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

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

Для операций переноса и поворота используются однородные

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

1.

Перенос (Translation) на ( , ):

 

 

 

 

1

0

 

 

 

= (0

1

)

 

 

0

0

1

 

2.

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

 

 

 

 

cos

− sin

0

 

= (sin

cos

0)

 

0

 

0

1

 

6

 

 

 

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

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

поворот → сдвиг обратно.

= ∙ ∙

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

Для корректной обработки невыпуклых многоугольников (например,

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

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

1.Обогащение (Enrichment): Обход контура исходного многоугольника.

Если ребро пересекает секущую прямую, вычисляется точка пересечения, которая вставляется в список вершин.

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

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

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

o Анализируются отрезки между соседними точками пересечения. o Применяется Midpoint Test: если середина отрезка

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

валидным путем для замыкания контура.

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

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

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

7

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

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

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

2.7. Определение вхождения точки в многоугольник (Ray Casting)

Для определения того, является ли отрезок между точками пересечения

«телом» фигуры или «пустотой», используется алгоритм Трассировки луча

(Ray Casting Algorithm) [6], основанный на правиле четности-нечетности

(Even-Odd Rule).

Суть метода: Из проверяемой точки (, ) выпускается условный луч

впроизвольном направлении (в текущей реализации – горизонтально вправо

всторону возрастания по оси X).

Подсчитывается количество пересечений луча с ребрами многоугольника.

Нечетное число пересечений (1,3,5…): Точка находится внутри.

Четное число пересечений (0,2,4…): Точка находится снаружи.

 

Математическое условие

пересечения

луча с ребром

:

 

 

 

 

 

 

 

,

 

Пересечение фиксируется, если выполняются два условия:

 

1.

Точка находится по вертикали между

и :

 

 

 

 

 

 

 

 

 

 

( > ) ≠ (

> )

 

 

 

 

 

 

 

 

 

2.

Точка находится слева от точки пересечения ребра с горизонталью:

 

 

(

− )

(

− )

 

 

<

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

2.8. Сортировка точек на прямой (Скалярное произведение)

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

Направляющий вектор прямой: Если уравнение прямой + + = 0, то ее направляющий вектор = ( , − ).

Параметризация: Положение каждой точки определяется через скалярное произведение вектора точки на направляющий вектор:

= = + (− )

Сортировка: Точки сортируются по возрастанию параметра , что гарантирует их верную последовательность независимую от угла наклона прямой.

2.9. Расчет угла поворота (Арктангенс)

Для преобразования координат курсора мыши в угол поворота матрицы используется функция арктангенса от двух аргументов (atan2).

Пусть , ) – центр вращения, а (, ) – текущая позиция курсора.

Угол вычисляется как:

= 2( − , − )

В отличие от обычного arctan( ⁄ ), функция 2 корректно определяет квадрант угла и возвращает значение в диапазоне (− , ], что позволяет реализовать круговое вращение на 360 градусов.

9

2.10. Вычисление центроида группы

При вращении группы объектов за центр вращения принимается их геометрический центр масс (центроид). Он вычисляется как среднее арифметическое координат всех вершин всех выделенных многоугольников:

=

 

, =

 

 

=1

 

=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10