Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Однородные координаты точки

Пусть М – произвольная точка плоскости с координатами х и у, вычисленными относительно заданной прямолинейной координатной системы. Однородными координатами этой точки называется любая тройка одновременно не равных нулю чисел х1, х2, х3, связанных с заданными числами х и у следующими соотношениями:

 

x1 / x3 = x, x2 / x3 = y                                           (3.1)

 

При решении задач компьютерной графики однородные координаты обычно вводятся так: произвольной точке М (х, у) плоскости ставится в соответствие точка МЭ (х, у, 1) в пространстве.

Необходимо заметить, что произвольная точка на прямой, соединяющей начало координат, точку О (0, 0, 0), с точкой МЭ (х, у, 1),может быть задана тройкой чисел вида (hx, hy, h).

Будем считать, что h = 0. Вектор с координатами hx, hy, h является направляющим вектором прямой, соединяющей точки О (0, 0, 0) и МЭ (х, у, 1). Эта прямая пересекает плоскость z = 1 в точке (х, у, 1), которая однозначно определяет точку (х, у) координатной плоскости ху.

Тем самым между произвольной точкой с координатами (х, у) и множеством троек чисел вида (hx, hy, h), h = 0, устанавливается взаимно однозначное соответствие, позволяющее считать числа hx, hy, h новыми координатами этой точки.

Широко используемые в проективной геометрии однородные координаты позволяют эффективно описывать так называемые несобственные элементы (по существу, те, которыми проектная плоскость отличается от привычной евклидовой плоскости).

В проективной геометрии для однородных координат принято следующее обозначение:

 

х: у: 1                                                     (3.2)

 

или, более общо,

 

                                                    х1: х2: х3                                           (3.3)  

 

(здесь непременно требуется, чтобы числа х1, х2, х3 одновременно в нуль не обращались).

Применение однородных координат оказывается удобным уже при решении простейших задач.

Рассмотрим, например, вопросы, связанные с изменением масштаба. Если устройство отображения работает только с целыми числами (или если необходимо работать только с целыми числами), то для произвольного значения h (например, h = 1) точку с однородными координатами (0.5, 0.1, 2.5) представить нельзя. Однако при разумном выборе h можно добиться того, чтобы координаты этой точки были целыми числами. В частности, при h = 10 для рассматриваемого примера имеем (5, 1, 25).

Рассмотрим другой случай. Чтобы результаты преобразования не приводили к арифметическому переполнению для точки с координатами (80000, 40000, 1000) можно взять, например, h = 0.001. В результате получим (80, 40, 1).

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

При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование плоскости.

Считая, h = 1, сравним две записи:

 


a    g    0

(x * y * 1) = (x y 1) b    d    0                                     (3.4)

l    m    1

 

Нетрудно заметить, что после перемножения выражений, стоящих в правой части последнего соотношения, мы получим формулы (2.1) и (2.2) и верное числовое равенство 1 = 1. Тем самым сравниваемые записи можно считать равносильными.

Элементы произвольной матрицы аффинного преобразования не несут в себе явно выраженного геометрического смысла. Поэтомучтобы реализовать то или иное отображение, то есть найти элементы соответствующей матрицы по заданному геометрическому описанию, необходимы специальные приемы. Обычно построение этой матрицы в соответствии со сложностью поставленной задачи и с описанными выше частными случаями рзбивают на несколько этапов.

На каждом этапе пишется матрица, соответствующая тому или иному из выделенных выше случаев 1 – 4, обладающих хорошо выраженными геометрическими свойствами.

Выпишнм соответствующие матрицы третьего порядка.

А.  Матрица вращения (rotation)

 


cos j    sin j    0

                                    [ R ] = -sin j   cos j   0                                                 (3.5)

0        0        1

 

Б. Матрица растяжения-сжатия (dilatation)

 


a    0    0

                                              [ D ] = 0    d    0                                                      (3.6)

0    0    1

 

       В. Матрица отражения (reflection)

 


1 0 0

                                        [ M ] = 0 -1 0                                                 (3.7)

0 0 1

 

       Г. Матрица переноса (translation)

 


1 0 0

                                        [ T ] =  0 1 0                                                 (3.8)

l    m    1

 

 

Рассмотрим примеры аффинных преобразований плоскости.

 

Пример 1. Построить матрицу поворота вокруг точки А (a, b) на угол j (рис. 9).

 

 

А
0
Y
X
                                                                                                                                                                 j                                                                  

 

 

 


Рис. 8

 

1-й шаг. Перенос на вектор – А (-a, -b) для смещения центра поворота с началом координат;

 


1   0 0

                                      [ T-A ] = 0 1 0                                                 (3.9)

-a -b 1

 

матрица соответствующего преобразования.

       2-й шаг. Поворот на угол j;

 

cos j    sin j    0

                                [ Rj ] = -sin j    cos j   0                                              (3.10)

0     0      1

 

матрица соответствующего преобразования.

3-й шаг. Перенос на вектор А (a, b) для возвращения центра поворота в прежнее положение;

 

 


1 0 0

                                      [ TA ] = 0 1 0                                               (3.11)

a b 1

 

матрица соответствующего преобразования.

Перемножим матрицы в том же порядке, как они выписаны:

[ T-A ] [ Rj ] [ TA ].

В результате получим, что искомое преобразование (в матричной записи) будет выглядеть следующим образом:

 


                                     cos j                       sin j                             0

(x* y* 1) = (x y 1) -sin j                            cos j                            0 (3.12)      

                                    -a cos j + b sin j + a -a sin j - b cos j + b 1

 

Элементы полученной матрицы (особенно в последней строке) не так легко запомнить. В то же время каждая из трех перемножаемых матриц по геометрическому описанию соответствующего отображения легко строится.

 

       Пример 2. Построить матрицу растяжения с коэффицентами растяжения a вдоль оси абсцисс и b вдоль оси ординат и с центром в точке А (a, b).

       1-й шаг. Перенос на вектор –А (-a, -b) для совмещения центра растяжения с началом координат;

 

 


1 0 0

                                      [ T-A ] = 0 1 0                                               (3.13)

-a -b 1

 

матрица соответствующего преобразования.

2-й шаг. Растяжение вдоль координатных осей с коэффицентами a и b соответственно; матрица преобразования имеет вид

 

 


a    0    0

                                              [ D ] = 0    d    0                                                    (3.14)

0    0    1

 

3-й шаг. Перенос на вектор А (a, b) для возвращения центра растяжения в прежнее положение; матрица соответствующего преобразования:

 

 

 


1 0 0

                                      [ TA ] = 0 1 0                                               (3.15)

a b 1

 

 

Премножив матрицы в том же порядке

[ T-A ] [ D ] [ TA ],

получим окончательно

 

                                          a                     0                0

(x* y* 1) = (x y 1)  0                d                0                            (3.16)

                                           (1 - a)a      (1 - d)b      1

 

 

Рассуждая подобным образом, то есть разбивая предложенное преобразование на этапы, поддерживаемые матрицами [ R ], [ D ], [ M ], [ T ], можно построить матрицу любого аффинного преобразования по его геометрическому описанию.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...