Преобразование переноса и однородные координаты | MetodPro.ru

Реклама на сайте

Преобразование переноса и однородные координаты


В ходе обработки модели часто возникает необходимость переместить объект, не изменяя его размеров и формы. Такое перемещение обычно задается вектором, называемым вектором переноса. Его направление определяет направление переноса, а проекции на координатные оси задают перемещение вдоль этих осей. Такое преобразование можно представить следующим образом:

x’ = x + dx

y’ = y + dy,

где dx и dy  - проекции вектора на оси x и y. Рисунок 2.10.

Определить такое преобразование в рамках рассмотренной выше схемы, использующей матрицу размером 2*2, не удается. Преодолеть данное затруднение можно с помощью перехода в однородные координаты. Точка на плоскости в однородных координатах определяется тройкой [X Y W], где W – масштабирующий коэффициент, а X и Y координаты точки, получаемые из декартовых координат посредством следующих соотношений X = x*W, Y = y*W. По однородным координатам с помощью деления на масштабирующий коэффициент всегда можно найти декартовы координаты. x = X/W, y = Y/W. Очевидно, что коэффициент не должен быть равен 0.

Однородные координаты не обладают однозначностью. Точки [2 3 1], [4 6 2], [6 9 3] соответствуют одной и той же точке [2 3] в декартовых координатах.

Рассмотрим однородные координаты при W = 1. В этом случае однородные координаты точки будут совпадать с декартовыми. Что же мы выиграли, увеличив размерность вектора?

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

Р*М =[x y 1] [(a*x+c*y+m) (b*x+d*y+n) (1)] = [x’ y’ 1]

 

В рамках новой схемы мы легко можем представить как все рассмотренные ранее преобразования (для этого необходимо обнулить коэффициенты m и n), так и преобразование переноса. Коэффициенты m и n собственно и определяют величины перемещения по осям x и y. Матрица переноса представляется следующим образом:

D =

где dx и dy как уже говорилось, проекции вектора переноса.

Р*D =[x y 1]  [(1*x+0*y+dx) (0*x+1*y+dy) (1)] = [x’ y’ 1]

Для обращения преобразования необходимо выполнить перенос на те же величины, но в противоположном направлении.

D =

Обратите внимание. Начало координат не является инвариантным к преобразованию переноса.

Все определенные ранее матрицы преобразований легко приводятся к размеру 3*3. Добавляем строку и столбец, заполненные нулями, а затем в главную диагональ, на место их пересечения ставим 1.

S =     R =



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем