diff --git a/Report/sample_1.pdf b/Report/sample_1.pdf index 1a44c17..28677ad 100644 Binary files a/Report/sample_1.pdf and b/Report/sample_1.pdf differ diff --git a/Report/zivro-open-project-report-with-code.md b/Report/zivro-open-project-report-with-code.md index 2a5763b..a0f9ae2 100644 --- a/Report/zivro-open-project-report-with-code.md +++ b/Report/zivro-open-project-report-with-code.md @@ -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-рендер с преобразованиями координат и отдельные алгоритмы растеризации геометрии. Ключевые математические части - композиция трансформаций, отсечение и растеризация линий, рендер эллипсов/дуг, а также алгоритм заливки замкнутых контуров. Текстовый отчёт подготовлен без встроенных листингов кода; для генерации версии с приложением исходников создан отдельный автоматизированный скрипт. diff --git a/Report/zivro-open-project-report.md b/Report/zivro-open-project-report.md index 38b61da..e32a0f1 100644 --- a/Report/zivro-open-project-report.md +++ b/Report/zivro-open-project-report.md @@ -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. Структура проекта @@ -84,7 +102,6 @@ ## 6. Математические алгоритмы проекта (подробное текстовое описание) В данном разделе подробно рассмотрены алгоритмы, которые формируют геометрию и цвет в CPU-рендере. -Диаграммы PlantUML будут добавлены отдельным шагом, после фиксации текстовой части. ### 6.1. Иерархические трансформации объектов @@ -421,7 +438,7 @@ python3 Report/render_uml_png.py --input-dir Report/uml --dpi 360 ## 11. Выводы -В ходе работы изучен открытый проект `Zivro` и подготовлено структурированное описание его архитектуры. Проект реализует модульный подход: модель документа, иерархию объектов, CPU-рендер с преобразованиями координат и отдельные алгоритмы растеризации геометрии. +В ходе работы разработан и исследован проект `Zivro`, подготовлено структурированное описание его архитектуры. Проект реализует модульный подход: модель документа, иерархию объектов, CPU-рендер с преобразованиями координат и отдельные алгоритмы растеризации геометрии. Ключевые математические части - композиция трансформаций, отсечение и растеризация линий, рендер эллипсов/дуг, а также алгоритм заливки замкнутых контуров. Текстовый отчёт подготовлен без встроенных листингов кода; для генерации версии с приложением исходников создан отдельный автоматизированный скрипт.