более верный отчёт
This commit is contained in:
@@ -1,24 +1,42 @@
|
||||
# Лабораторная работа 3
|
||||
## Анализ и описание открытого проекта `Zivro`
|
||||
## Векторный редактор `Zivro`
|
||||
|
||||
## 1. Цель работы
|
||||
|
||||
Изучить архитектуру и ключевые алгоритмы открытого графического проекта, реализованного на языке Zig, и подготовить технический отчёт по его устройству, процессу сборки и принципам работы основных подсистем.
|
||||
### 1.1. Дидактическая цель
|
||||
|
||||
Овладеть навыками разработки программных модулей, реализующих алгоритмы растровой развёртки (растеризации) контуров фигур и сплошных областей на плоскости, а также получить опыт эмпирического анализа вычислительной трудоёмкости и точности алгоритмов растеризации.
|
||||
|
||||
### 1.2. Практическая цель
|
||||
|
||||
Разработать и исследовать программный модуль, выполняющий:
|
||||
|
||||
- растеризацию контура фигуры;
|
||||
- растеризацию (закраску) сплошной области;
|
||||
- формирование и отображение растрового изображения;
|
||||
- сбор эмпирических данных по времени выполнения и различию результатов алгоритмов.
|
||||
|
||||
В рамках данной работы в качестве программной базы используется проект `Zivro`, разработанный автором специально для выполнения лабораторной работы, в который интегрированы и исследуются соответствующие алгоритмы.
|
||||
|
||||
## 2. Постановка задачи
|
||||
|
||||
В рамках лабораторной работы требуется:
|
||||
В рамках лабораторной работы требуется реализовать и проверить функционал, соответствующий методическим указаниям ЛР №3:
|
||||
|
||||
- выбрать открытый проект и изучить его структуру;
|
||||
- выделить основные модули и описать их взаимодействие;
|
||||
- разобрать математические алгоритмы, используемые в проекте;
|
||||
- описать процесс сборки, запуска и тестирования;
|
||||
- подготовить отчёт в формате Markdown;
|
||||
- сформировать приложение с исходным кодом автоматически, без ручной вставки кода в текст отчёта.
|
||||
1. Реализовать программный модуль растеризации контура и внутренней области фигуры на растровом изображении.
|
||||
2. Обеспечить вывод результата в окне/холсте приложения с попиксельной визуализацией.
|
||||
3. Реализовать не менее двух алгоритмов построения контура и не менее двух алгоритмов закраски (в соответствии с вариантом).
|
||||
4. Добавить эталонный контурный алгоритм (например, Брезенхейм) для сравнения.
|
||||
5. Реализовать сбор эмпирических данных:
|
||||
- время выполнения алгоритмов;
|
||||
- различие получаемых растровых развёрток (по отличающимся пикселям).
|
||||
6. Подготовить и оформить отчёт по выполненной работе.
|
||||
7. Сформировать приложение с исходными текстами автоматически в отдельный `.md` без изменения исходного файла отчёта.
|
||||
|
||||
## 3. Краткое описание проекта
|
||||
|
||||
В качестве открытого проекта выбран `Zivro` - настольное графическое приложение для работы с векторными объектами (линия, эллипс, ломаная), с собственной моделью документа, иерархией объектов и CPU-рендерингом.
|
||||
Для выполнения ЛР в качестве основы используется проект `Zivro` - настольное графическое приложение для работы с векторными объектами (линия, эллипс, ломаная), с собственной моделью документа, иерархией объектов и CPU-рендерингом.
|
||||
|
||||
В контексте ЛР проект используется не как объект абстрактного обзора, а как программная платформа, где реализуются и исследуются алгоритмы растеризации контура и закраски.
|
||||
|
||||
Приложение использует:
|
||||
|
||||
@@ -26,7 +44,7 @@
|
||||
- UI-библиотеку `dvui` с SDL3-бэкендом;
|
||||
- модульную архитектуру (UI, модель данных, рендер, сериализация, инструменты).
|
||||
|
||||
Точка входа находится в `src/main.zig`: создаётся окно, инициализируется `WindowContext`, далее выполняется event/render loop.
|
||||
Точка входа находится в `src/main.zig`: создаётся окно, инициализируется `WindowContext`, далее выполняется event/render loop и отрисовка растрового результата алгоритмов.
|
||||
|
||||
## 4. Структура проекта
|
||||
|
||||
@@ -421,7 +439,7 @@ python3 Report/render_uml_png.py --input-dir Report/uml --dpi 360
|
||||
|
||||
## 11. Выводы
|
||||
|
||||
В ходе работы изучен открытый проект `Zivro` и подготовлено структурированное описание его архитектуры. Проект реализует модульный подход: модель документа, иерархию объектов, CPU-рендер с преобразованиями координат и отдельные алгоритмы растеризации геометрии.
|
||||
В ходе работы разработан и исследован проект `Zivro`, подготовлено структурированное описание его архитектуры. Проект реализует модульный подход: модель документа, иерархию объектов, CPU-рендер с преобразованиями координат и отдельные алгоритмы растеризации геометрии.
|
||||
|
||||
Ключевые математические части - композиция трансформаций, отсечение и растеризация линий, рендер эллипсов/дуг, а также алгоритм заливки замкнутых контуров.
|
||||
Текстовый отчёт подготовлен без встроенных листингов кода; для генерации версии с приложением исходников создан отдельный автоматизированный скрипт.
|
||||
|
||||
Reference in New Issue
Block a user