- •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. Руководство пользователя
- •Список использованных источников
- •Заключение
- •Приложение а Реализация математического ядра
- •Реализация матричных преобразований
- •Парсинг и сохранение данных
- •Логика отрисовки и взаимодействия
3.3. Абстракция Системы Координат
Для соответствия математическим требованиям (ось Y направлена вверх, начало координат в центре) реализован класс-прослойка CoordinateSystem.ts.
Принцип работы: Приложение хранит данные исключительно в Мировых координатах.
Прямое преобразование (To Screen): Перед отрисовкой любая координата проходит через функцию toScreen:
(Инверсия
оси Y).Обратное преобразование (To World): При клике мышью координаты события преобразуются через toWorld:
Это позволяет математическому ядру (Geometry.ts) работать с чистой декартовой логикой, не заботясь об особенностях экранного рендеринга.
4. Организация данных
Формат файла
Данные хранятся в текстовом файле (расширение .txt) с простой структурой тегов.
Пример:
POLYGON
0 0
0 100
100 100
100 0
50 50
END
LINE
-50 25
150 25
Парсер (FileParser.ts) считывает файл построчно, формируя объекты в памяти. Последняя точка полигона не должна замыкаться на первой. Обработка этого момента происходит автоматически и не требует от пользователя неочевидного действия – помнить каждый раз замыкать фигуру.
Хранение данных в Runtime (Во время работы)
Основное состояние хранится в реактивном объекте sceneData.
Исходные данные: Хранятся как объекты Polygon с полным набором вершин. Они модифицируются только при операциях Move/Rotate.
Результаты отсечения: Не хранятся перманентно. Они вычисляются динамически ("на лету") при каждом изменении сцены внутри цикла отрисовки. Это позволяет пользователю двигать секущую прямую и видеть результат в реальном времени (Real-time Feedback).
5. Руководство пользователя
В данном разделе описывается последовательность действий оператора для решения геометрических задач в разработанном приложении.
Запуск: Откройте приложение в браузере. Общий вид приложения с пустой сеткой и панелью меню показан на рисунке 1
Рисунок 1 – общий вид приложения с пустой сеткой и панелью меню
Создание геометрии:
Инструмент Полигон: Кликайте ЛКМ для создания вершин. Кликните в первую точку для замыкания контура. На рисунке 2 показан процесс построение полигона.
Рисунок 2 – процесс построения полигона
Инструмент Линия: чтобы задать первую точку нажмите ЛКМ для старта, отпустите, потяните для задания места для второй точки, нажмите ЛКМ, отпустите для создания секущей прямой. На рисунке 3 показан процесс построения линии
Рисунок 3 – процесс построения линии
Редактирование:
Инструмент Move: Перетаскивание фигур мышью. Поддерживается выделение нескольких фигур (Ctrl + Клик). Процесс переноса полигона и линии показан на рисунке 4.
Рисунок 4 – процесс переноса полигона и линии
Инструмент Rotate: Вращение выделенных фигур вокруг их общего центра масс. Процесс поворота полигона и линии показан на рисунке 5.
Рисунок 5 – процесс поворота полигона и линии
Отсечение: Происходит автоматически при наличии полигонов и линии.
Зеленая область: Часть фигуры в положительной полуплоскости.
Красная область: Часть фигуры в отрицательной полуплоскости.
Результат отсечения виден сразу после построения хотя бы одного полигона и одной линии. Получившаяся структура после отсечения показана на рисунке 6.
Рисунок 6 – получившаяся структура после отсечения
Сохранение: Кнопка сохранения сохраняет текущее состояние (координаты вершин) в файл. Процесс сохранения показан на рисунке 7, где обведена кнопка сохранения в файл. Файл сохраняется в раздел «Документы» пользователя компьютера.
Рисунок 7 – процесс сохранения результата в текстовый файл
Открытие: Кнопка открытия открывает сохраненные ранее результаты. Процесс открытия имеющихся файлов представлен на рисунке 8.
Рисунок 8 – процесс открытия имеющихся файлов
Открытый файл, если он соответствует формату .txt и требованиям к структуре файла считывается программой и выдает готовую структуру для дальнейшей работы, которая отражена на рисунке 9.
Рисунок 9 – построенная структура из открытого файла
