- •Лабораторный практикум по курсу
- •Введение
- •Панель элементов управления
- •3. Label Метка
- •4. TextBox Текстовое окно
- •6. CommandButton Командная кнопка
- •9. Combo Box Комбинированный список
- •10. List Box Список
- •13. Timer Таймер
- •14. Drive List Box Список дисков
- •15. Directory List Box Список каталогов
- •16. File List Box Список файлов
- •12. Vertical Scroll Bar Вертикальная линейка прокрутки
- •18. Line Линия
- •Image Изображение
- •Примеры основных процедур, которые используются в лабораторных работах
- •Cls ‘ Clear screen – очистка экрана
- •Пример 7. Остановить выполнение программы
- •Unload Me ‘ выгрузить форму
- •Принципы выполнения лабораторных работ:
- •Последовательность выполнения лабораторной работы
- •Лабораторная работа № 1:
- •Лабораторные основы
- •Лабораторная работа № 2:
- •Математические основы
- •Часть I. "Установка основных параметров для рисования"
- •Часть II "Основные события мыши"
- •Часть III "Создание кисти"
- •Лабораторная работа № 3:
- •Математические основы
- •Простейший алгоритм построения отрезка
- •Алгоритм Брезенхема для построения отрезка.
- •Растровые алгоритмы построения окружности.
- •Лабораторные основы
- •Лабораторная работа № 4:
- •Математические основы
- •1. Кусочно-линейный
- •2. Линейно-круговой
- •3. Полиномиальный
- •Лабораторные основы
- •Лабораторная работа № 5:
- •Математические основы
- •Лабораторные основы
- •Лабораторная работа № 6:
- •Математические основы
- •Лабораторные основы
- •Двумерные преобразования на плоскости
- •Лабораторная работа № 7:
- •Математические основы
- •1916 Бернштейн :
- •1) Кривые Безье
- •Лабораторные основы
- •Метод наименьших квадратов
- •Интерполяционный многочлен Лагранжа
- •Лабораторная работа № 8:
- •Математические основы
- •Лабораторные основы
- •Словарь основных терминов среды Visual Basic Англо-русский словарь
- •Русско-английский словарь
- •Список использованной литературы
Лабораторные основы
Цель работы: научиться использовать матрицы для таких двумерных преобразований, как сдвиг, масштабирование, поворот, симметрия (отражение относительно произвольно заданной точки и отрезка).
Основные понятия, используемые в лабораторной работе: Однородные координаты. Двумерные преобразования (2D-преобразования). Матрицы. Суперпозиция простейших преобразований на языке матриц. Действия над матрицами.
Все изменения какого-нибудь объекта (кроме изменения цвета) на экране дисплея можно отнести к геометрическим преобразованиям, причем это относится и к изменениям при движении, и к статичным изменениям. Все превращения объекта можно представить как набор (суперпозицию) элементарных геометрических преобразований, выполненных в определённом порядке. В компьютерной графике всё, что относится к преобразованиям на плоскости, принято обозначать 2D, а к преобразованиям в пространстве - 3D.
Двумерные преобразования на плоскости
Сдвиг
На ху-плоскости есть точка Р с координатами (1,1). Сдвинем (перенесём) эту точку на новую позицию с координатами (2,6). Какие параметры этого простого геометрического преобразования? Параметра два: сдвиг по оси х, равный 1=2-1, и сдвиг по оси у, равный 5= 6-1.
Масштабирование
На ху-плоскости есть точка Р с координатами (2,6) (это точка из предыдущего примера). С помощью операции масштабирования вернём её на прежнее место, то есть на (1,1). Итак, во сколько раз надо сжать координаты точки Р? Очевидно, что по оси х в 2/1=2 раза, а по оси у в 6/1= 6 раз . Или растянуть в 1/2 и 1/6 раза соответственно.
Поворот
На ху-плоскости есть точка Р с координатами (1,1). Повернём точку Р относительно начала координат на угол φ=180°. Найдём её новые координаты. Получим, даже не прибегая к вычислениям (-1,-1). А если, например, φ = 25°, то "на глазок" получить новые координаты точки уже не получится. Выведем уравнения поворота точки на произвольный угол относительно начала координат. Пусть точка Р (х,у) поворотом на угол φ переводится в точку Р'(х',у'). В системе координат в Visual Basic углы по часовой стрелке - положительны. Поворот выполняется относительно начала координат, расстояния от него до точек Р и Р' пусть равны r. Получаем следующие соотношения.
Для точки Р: х = r cos α , у = r sin α .
Для точки Р': х' = r cos (α + φ) = r cos α cos φ - r sin α sin φ,
у' = r sin (α + φ) = r cos α sin φ + r sin α cos φ.
х' = х cos φ - у sin φ
у' = х sin φ + у cos φ
Однородные координаты
Однородными координатами точки называется тройка одновременно не равных нулю чисел.
В компьютерной графике однородные координаты вводятся так: произвольной точке Р(х, у) на плоскости ставится в соответствие точка Р(х, у, 1) в пространстве.
Соединим прямой точки О(0, 0, 0) и Р(х, у, 1). Любую точку этой прямой, соединяющей начало системы координат О(0, 0, 0) с точкой Р(х, у, 1), можно задать тройкой чисел (hx, hy, h), где h≠0. Проведём плоскость z = 1, параллельную плоскости ху, через точку Р(х, у, 1). Прямая, соединяющая точки О и Р, пересекает плоскость z = 1 в точке (х, у, 1), которая однозначно определяет точку (х, у) координатной плоскости ху. Таким образом, между произвольной точкой с координатами (х, у) и множеством троек чисел (hx, hy, h), где h≠0, устанавливается взаимно однозначное соответствие, позволяющее считать числа hx, hy, h новыми (однородными) координатами этой точки. В компьютерной графике вслед за проективной геометрией для однородных координат принято обозначение:
х : у : 1
или в более общем случае:
х1 : х2 : х3 (числа х1, х2, х3 не должны быть равны нулю одновременно).
Однородные координаты удобны для программирования геометрических преобразований. При помощи однородных координат и матриц 3-го порядка можно выполнить любое геометрическое преобразование в плоскости. Любое геометрическое преобразование выполняется следующим действием:
(
x',
y', 1) = (x, y, 1)

x'=xa+yc+1e; y'=xb+yd+1f
Для каждого геометрического преобразования существует своя матрица.
Рассмотрим конкретный пример сдвига. На ху-плоскости есть точка Р с координатами (1,1). Требуется сдвинуть (перенести) эту точку на 1 единицу по оси х и на 5 единиц по оси у. Для сдвига существует следующее матричное выражение:
(
x',
y',
1) = (x,
y,
1)

Здесь dx=1, dy=5. Следовательно, получаем: x'=1×1+1×0+1×1=2; y'=1×0+1×1+1×5=6
Суперпозиция
На примере поворота некоторой фигуры относительно заданной точки, рассмотрим множественные преобразования с помощью матричных выражений.

Для
этого необходимо вначале переместить
фигуру в начало координат, затем повернуть
на необходимый угол α и вернуть обратно
в точку вращения. Пусть координаты
преобразованной фигуры будут
,
(три действия – три штриха), а исходной
-
,
.
Приведём решение.




![]()
;
![]()
;
![]()
;
![]()
Краткая информация из тригонометрии
Формулы сложения
Cos(α+β) = cos α cos β - sin α sin β
Sin(α+β) = sin α cos β - cos α sin β
Некоторые значения тригонометрических функций
-
α
0°
30°
45°
60°
90°
180°
cos α
1
√3/2
√2/2
½
0
-1
sin α
0
1/2
√22
√3/2
1
0
Матрицы преобразований на плоскости. Общий вид
1. Матрица сдвига (translation)

[T]
=

dx - сдвиг по оси х, dy - сдвиг по оси у
2. Матрица масштабирования (dilatation)
[
D]
=

sx - коэффициент растяжения/сжатия по оси х; sy - коэффициент растяжения/сжатия по оси у. Если sx = sy - масштабирование однородно и пропорции объекта сохраняются. Если sx≠sy - масштабирование неоднородно и пропорции объекта не сохраняются.
3. Матрица поворота (rotation)

[R]
=

φ - угол поворота объекта относительно начала координат.
4. Матрица симметрии (reflection)

[Mox]
=

Матрицы преобразований в пространстве. Общий вид
1. Матрица сдвига

[T]
=

2. Матрица масштабирования

[D]
=


3. Матрицы поворота на угол α



[Roz]
=
[Rox]
=
[Roy]
=

4. Матрицы симметрии



[Mxy]
=
[Myz]
=
[Mzx]
=

