Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Афинные преобразования

Автор:   •  Февраль 12, 2024  •  Контрольная работа  •  2,169 Слов (9 Страниц)  •  34 Просмотры

Страница 1 из 9

Оглавление

Цель работы и задание        3

Ход выполнения лабораторной работы        4

Реализация программы.        5

Листинг программы (обязательное)        12

Литература        18

Цель работы и задание

Целью выполнения данной лабораторной работы является изучение теоретических основ двумерных аффинных преобразований, приобретение практических навыков моделирования двумерных изображений и применения аффинных преобразований.

Задание:

Реализовать программу, построения двумерного изображения и применения аффинных преобразований для фигуры на рисунке 1. Над фигурой выполнить все аффинные преобразования: перенос, отражение, масштабирование, поворот.

[pic 1]

Рисунок 1 – Фигура для выполнения лабораторной работы

Ход выполнения лабораторной работы

Для выполнения данной лабораторной работы мною был выбран язык программирования Python и среда программирования Visual Studio Code. Данный выбор обусловлен умением программирования на данном языке, а также легкостью рисования, используя библиотеку pygame.

  1. Поворот

Поворот вокруг начальной точки описывается формулами 1.1 и 1.2

[pic 2]

[pic 3]

где φ – угол поворота.

  1. Растяжение

Растяжение (сжатие) вдоль координатных осей описывается формулами 1.3 и 1.4.

[pic 4]

[pic 5]

где α и δ – коэффициенты растяжения, α  > 0 и δ > 0.

Растяжение (сжатие) вдоль оси абсцисс обеспечивается при условии, что α  > 1 и δ > 1.

  1. Отражение относительно оси абсцисс задается при помощи формул 1.5 и 1.6.

[pic 6]

[pic 7]

  1. Перенос обеспечивают соотношения (1.7, 1.8)

[pic 8]

[pic 9]

где λ и µ - координаты вектора переноса.

Реализация программы.

Для реализации программы необходимо создать список точек с координатами X и Y (рис. 2)

[pic 10]

Рисунок 2 – Координаты точек для построения заданной фигуры

Так же необходимо импортировать библиотеки, которые позволят реализовать поставленную задачу (рис. 3)

[pic 11]

Рисунок 3 – Библиотеки, необходимые для реализации задачи

Дале приступаем к реализации пользовательского интерфейса. Для это воспользуемся PyQt5. PyQt5 - это набор Python библиотек для создания графического интерфейса на базе платформы Qt5 от компании Digia. За создание пользовательского инструмента отвечает класс Pannell, в котором прописываем настройки окна пользовательского интерфейса, поля для введения значений коэффициентов аффинных преобразований и кнопки для запуска процесса рисования (рис. 4, 5, 6)

[pic 12]

Рисунок 4 – Класс

[pic 13]

Рисунок 5 – Поле для введения значений коэффициентов аффинных преобразований

[pic 14]

Рисунок 6 - Кнопка

В пользовательском интерфейсе мною установлено 5 полей для введения коэффициентов, в которых с помощью Placeholder обозначены необходимые коэффициенты, 4 кнопки, передающие введенные данные в методы, вызывающие процесс рисования выбранного аффинного преобразования (рис. 7)

[pic 15]

Рисунок 7 – Пользовательский интерфейс

Теперь переходим к рисованию преобразований.

Первое что нужно сделать – настроить окно для рисования и разметить в нем оси X и Y. После этого настраиваем и сам процесс рисования. Процесс рисования основан на соединении точек, переданных в метод, линиями и подписывании этих точек координатами.

Весь процесс реализации рисования показан в Приложении А.

Результат работы программы построения двумерного изображения и применения аффинных преобразований.

На рисунке 2 показан Поворот заданного рисунка на  [pic 16]

[pic 17]

Рисунок 2 – Результат работы программы, реализация аффинного преобразования Поворот

На рисунке 3 показан результат работы программы реализация Растяжения/сжатия с коэффициентами растяжения 0,5 и 0,8

[pic 18]

Рисунок 3 – Результат работы программы, реализация аффинного преобразования Растяжение(сжатие)

...

Скачать:   txt (15.4 Kb)   pdf (271.2 Kb)   docx (657 Kb)  
Продолжить читать еще 8 страниц(ы) »
Доступно только на Essays.club