Двухмерное преобразование относительно произвольной точки.

 

       
 
   
 


P(x,y) – над которой выполняется преобразование

 

 
 


P1(x1,y1)

 

 
 

 


Результирующее положение точки P’(x’,y’). Относительно начала координат мы знаем. Проще всего так:

1) Сдвинем начало координат в точку P1(x1,y1).

2) Выполним все нужные действия над точкой P.

3) Вернёмся к исходной системе координат.

 

Сдвиг всей картинки на величину –x1 и –y1:

сдвиг действия возврат

Есть отдельные сокращённые матрицы для сдвига, масштаба и поворота относительно любой точки. Смысл – сократить количество операций умножения.

Например.

– результат – это матрица размером 3х3.

 

 

Результат умножения таких матриц имеет вид:

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

Очень часто применяется способ упрощения реализации поворота. От кадра к кадру угол меняется не более чем на 1 градус. В этом случае косинус близок к 1, то есть cos a »1, при a £ 1°:

На каждом шаге погрешность очень маленькая, однако, если количество оборотов достигнет двух и более, то погрешность может достигнуть веских величин, поэтому пройдя полный круг 360°, нужно вернуться к исходному положению точки, то есть погасить погрешность.