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