Читать практическое задание по информационному обеспечению, программированию: "2D преобразования" Страница 1

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

Лабораторная работа

Тема «2D преобразования»

Задание Создайте приложение Windows Applications. Вид приложения приведен на рис. ниже.

Рис. 1 Имена переменным дайте согласно нотации:

Командная кнопка btnName.

Переключатель rbName.

Текстовое поле tbName.

На форме разместите элемент panel, для него можно оставить имя по умолчанию panel1.

Добавьте событие Paint для элемента panel.

В программе используется класс Matrix для него добавьте в проект директиву:System.Drawing.Drawing2D;

Методические указания:

Создайте приложение на языке C# Windows Form. Установите элементы управления на форму как видно на рисунке выше. Для отрисовки графика установите на форму элемент Picture. Напишите программный код для реализации 2D преобразований, программа должна переносить, поворачивать и масштабировать объект. Для выполнения преобразований каждую точку объекта представьте в виде матрицы координат вершины. Преобразования производите с матричными объектами.

Краткие теоретические сведения для выполнения лабораторной работы.

Интерфейс GDI+ позволяет хранить аффинные преобразования в объекте Matrix. Так как третий столбец матрицы, задающей аффинное преобразование, всегда равен (0, 0, 1), при создании объекта Matrix нужно задавать только шесть чисел в первых двух столбцах. Инструкция Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) создает матрицу, изображенную на следующем рисунке.

язык матрица преобразование

Рис. 2 Класс инкапсулирует матрицу 3 на 3 аффинного преобразования, которая представляет геометрическое преобразование. Данный класс не может наследоваться.

1. Композиция преобразований или составные преобразования Составным преобразованием называется серия последовательно применяемых преобразований. Рассмотрим следующие матрицы и преобразования:

Матрица A Поворот на 90 градусов.

Матрица B Масштабирование по оси X с коэффициентом 2.

Матрица C Сдвиг на три единицы по оси Y.

Если взять матричное представление для точки с координатами (2, 1) - [2 1 1] - и последовательно умножить его на матрицу A, затем на B, а затем на C, точка (2, 1) последовательно подвергнется трем соответствующим преобразованиям. [2 1 1]ABC = [-2 5 1] Вместо того чтобы хранить три части составного преобразования в отдельных матрицах, можно перемножить матрицы A, B и C и получить одну матрицу размером 3×3, содержащую все составное преобразование. Предположим, что ABC = D. Тогда умножение точки на матрицу D приводит к тому же результату, что и умножение точки на матрицы A, B и C. [2 1 1]D = [-2 5 1] На приведенном ниже рисунке показаны матрицы A, B, C и D.

Класс Matrix содержит несколько методов для составных преобразований: Multiply, Rotate, RotateAt, Scale, Shear и Translate. В приведенном ниже примере демонстрируется создание матрицы составного преобразования, реализующей поворот на 30 градусов, затем масштабирование вдоль оси Y с коэффициентом 2 и сдвиг на 5 единиц вдоль оси X.

Matrix myMatrix = new Matrix();.Rotate(30);.Scale(1, 2, MatrixOrder.Append);.Translate(5, 0, MatrixOrder.Append);

Конструкторы

Имя Описание() Инициализирует новый экземпляр класса Matrix в виде единичной матрицы.(Rectangle, Point[]) Инициализирует новый экземпляр класса Matrix для геометрического преобразования, определяемого указанным прямоугольником и массивом точек.(RectangleF, PointF[]) Инициализирует новый экземпляр класса Matrix для геометрического преобразования,


Интересная статья: Быстрое написание курсовой работы