Перенос баз данных с одного SQL Server на другой Изменения в системе защиты SQL Server Новые средства разработки Новые элементы программирования на языке Visual Basic Редактирование и анализ данных с помощью запросов

Лекции по компьютерной графике начало

3.3. Преобразование в однородную систему координат

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

[ X Y W ].

Здесь W - произвольный множитель не равный 0.

Двумерные декартовые координаты точки получаются из однородных делением на множитель W:

x = X / W, y = Y / W, W 0

 

Однородные координаты можно представить как промасштабированные с коэффициентом W значения двумерных координат, расположенные в плоскости с Z = W.

В силу произвольности значения W в однородных координатах не существует единственного представления точки, заданной в декартовых координатах.

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

Будем брать W=1.

Параллельный перенос

 

   1 0 0

[X`, Y`, 1]=[X, Y, 1]·  0 1 0

   Dx Dy 1 

Перемножив, получим: [X + Dx, Y + Dy, 1].

Масштабирование:

P` = P·S; где

Поворот: 

Рё = Р·R; где

Поворот вокруг фиксированной точки

Р` = Р·М,

где М = Т(-X0, - Y0) ∙R(φ)∙T(X0, Y0) – матрица преобразований.

Смещаем точку Возвращаем точку

в начало координат в исходное состояние

 

В результате произведений матриц получаем матрицу преобразования M:

  1 0 0 cos(φ) sin(φ)  0 1 0 0

M = 0 1 0 · –sin(φ) cos(φ) 0 · 0 1 0 =

  –X1 –Y1 1 0 0 1 X1 Y1 1

 

  cos(φ) sin(φ) 0

= –sin(φ) cos(φ) 0

 X1·(1–cos(φ))+Y1·sin(φ)  Y1·(1–cos(φ)) –X1·sin(φ)  1 

В общем случае матрицу преобразований можно записать следующим образом:

 

  m11 m12 0

M = m21 m22  0 ; P` = P·M

  m31 m32 1

   x’ = x · m11 + y · m21 + m31 Перейдём к алгебраическому выражению: 

   y’ = x · m12 + y · m22 + m32 

Дизайн, инженерная и Web графика