Лабораторная работаКомпьютерная графикаГод: 2024ТУСУР: Томский государственный университет систем управления и радиоэлектроники
👁 11💼 0

Готовая лабораторная: Двумерные аффинные преобразования

Загружена: 20.02.2026 11:14

Изучение и реализация двумерных аффинных преобразований графической фигуры. Раскрыты перенос, отражение, масштабирование и поворот, выполненные через матричный метод с визуализацией в Jupyter (NumPy, Matplotlib). Полезно для освоения основ компьютерной графики и подготовки учебных демонстраций.

Содержание

Структура документа:
Титульный лист с указанием вуза, кафедры, варианта и даты выполнения;
Оглавление;
Введение с обоснованием актуальности темы, целью и перечнем решаемых задач;
Основная часть: описание среды разработки (Jupyter Notebook, Python, NumPy, Matplotlib), методологии решения (матричный подход с гомогенными координатами), ключевые фрагменты кода и функциональные возможности приложения;
Заключение с выводами о достижении целей и практической ценности работы;
Приложение с полным листингом программы и скриншотом результатов выполнения.
Содержательная суть:
В работе реализованы четыре базовых аффинных преобразования (перенос, отражение, масштабирование, поворот) для графического объекта, заданного массивом координат. Каждое преобразование описывается матрицей 3×3 и применяется через матричное умножение. Результаты визуализируются в виде серии графиков с осями координат и маркерами точек отсчёта. Код модульный: выделены функции для преобразований и отрисовки, что упрощает расширение и повторное использование.

Введение

Аффинные преобразования играют ключевую роль в компьютерной графике и визуализации данных. Они позволяют выполнять различные операции над графическими объектами, такие как перенос, масштабирование, отражение и поворот, сохраняя при этом взаимное расположение точек внутри фигуры. Эти преобразования широко применяются в проектировании, анимации, анализе изображений и других областях.
Цель данной работы — продемонстрировать выполнение основных аффинных преобразований на примере графической фигуры. В качестве исходных данных используется геометрический объект в форме стрелки, заданный координатами вершин в двумерном пространстве.
В ходе работы рассматриваются следующие задачи:
1.	Перенос фигуры на заданный вектор.
2.	Отражение фигуры относительно оси координат.
3.	Масштабирование фигуры с использованием заданных коэффициентов.
4.	Поворот фигуры на заданный угол.
Исходные данные для экспериментов представлены в виде массива координат вершин исходной фигуры. Все преобразования выполняются с использованием матричного подхода, что позволяет сохранять общность и универсальность метода. Результаты преобразований визуализируются с помощью графиков, где дополнительно отображаются оси координат и точки отсчета для наглядности.

Заключение

Аффинные преобразования играют ключевую роль в компьютерной графике и визуализации данных. Они позволяют выполнять различные операции над графическими объектами, такие как перенос, масштабирование, отражение и поворот, сохраняя при этом взаимное расположение точек внутри фигуры. Эти преобразования широко применяются в проектировании, анимации, анализе изображений и других областях.
Цель данной работы — продемонстрировать выполнение основных аффинных преобразований на примере графической фигуры. В качестве исходных данных используется геометрический объект в форме стрелки, заданный координатами вершин в двумерном пространстве.
В ходе работы рассматриваются следующие задачи:
1.	Перенос фигуры на заданный вектор.
2.	Отражение фигуры относительно оси координат.
3.	Масштабирование фигуры с использованием заданных коэффициентов.
4.	Поворот фигуры на заданный угол.
Исходные данные для экспериментов представлены в виде массива координат вершин исходной фигуры. Все преобразования выполняются с использованием матричного подхода, что позволяет сохранять общность и универсальность метода. Результаты преобразований визуализируются с помощью графиков, где дополнительно отображаются оси координат и точки отсчета для наглядности.

Подробное описание

📘 О чем эта работа

В отчете реализованы и исследованы базовые двумерные аффинные преобразования для простого геометрического объекта (стрелка). Предметом является алгоритмическая реализация операций переноса, отражения, масштабирования и поворота с использованием гомогенных координат и 3x3 матриц; объект исследования — набор вершин стрелки с координатами x = [2, -2, -2, 0, 2, 2], y = [-4, -2, 4, 2, 4, -4].

📚 Что внутри

Отчет содержит практическую реализацию и пошаговую визуализацию каждого преобразования в среде Jupyter Notebook с кодом на Python. Конкретное содержание:

  • Исходный массив координат стрелки и функция affine_transform (формирование гомогенных координат через np.vstack и умножение матриц).
  • Матрицы преобразований 3x3: матрица переноса (сдвиг на (2,1)), матрица отражения относительно оси X, матрица масштабирования с коэффициентами (2, 0.5), матрица поворота на 45° (θ = π/4).
  • Визуализации с использованием Matplotlib: построение исходной фигуры и результатов каждого этапа, добавление координатных осей и выделение точки отсчета.
  • Листинг программы с комментариями и готовыми фрагментами кода для прямого запуска в Jupyter (NumPy, Matplotlib).
  • Заключение с практическими выводами о применимости матричного подхода и рекомендациями по использованию кода в учебных демонстрациях.

📊 Для кого подходит

Полезно для студентов и преподавателей курсов по компьютерной графике и визуализации, дисциплин по компьютерной графике, численным методам и мультимедиа. Подходит как учебное задание для 1–3 практических занятий и как демонстрация работы с матрицами и гомогенными координатами.

✨ Особенности

Работа содержит готовый, подробно документированный код для запуска в Jupyter Notebook, реальные численные примеры (координаты стрелки и конкретные матрицы преобразований), а также визуализацию каждого этапа. Матрицы заданы явно (перенос: [[1,0,2],[0,1,1],[0,0,1]]; отражение по X: [[1,0,0],[0,-1,0],[0,0,1]]; масштабирование: [[2,0,0],[0,0.5,0],[0,0,1]]; поворот: матрица с cos/sin для θ=π/4), что упрощает адаптацию и расширение кода под другие фигуры или последовательные преобразования.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура отчета соответствует стандартным требованиям лабораторных работ: вводная часть, цель, метод, листинг кода, визуальные результаты и заключение.

Можно адаптировать?
Да. Матрицы и функция affine_transform легко изменяются для других коэффициентов и точек отсчета; код на Python пригоден для включения в лабораторные задания или демонстрации.

Дополнительно

  • Код снабжен функцией plot_axes для отображения осей и подписи точек отсчета.
  • Реализован пример пошагового построения в одном Jupyter-файле: несколько subplot'ов для сравнения исходной и преобразованных фигур.
  • Результаты пригодны для образовательных презентаций и дальнейшей доработки в проектах по 2D-графике.