Перенос


Некоторые программы перемещают (или сдвигают) объекты, нарисованные в рабочей области при помощи вызова функции SetWorldTransform, чтобы установить соответствующее преобразование общего (мирового) пространства в пространство страницы. Функция SetWorldTransform получает указатель на структуру XFORM, содержащую соответствующие значения. Члены eDx и eDy структуры XFORM определяют горизонтальные и вертикальные компоненты переноса, соответственно.

Когда происходит перенос (translation), каждая точка в объекте сдвигается вертикально, горизонтально, или в оба направления, на заданное количество единиц измерения. Нижеследующая иллюстрация показывает прямоугольник 20 на 20 единиц, который был перемещен вправо на 10 единиц, когда был скопирован из мирового координатного пространства в координатное пространства страницы.

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

На предыдущей иллюстрации, x-координата каждой точки в прямоугольнике - на 10 единиц больше, чем первоначальная x-координата.

Горизонтальный перенос может быть представлен нижеследующим алгоритмом.

x' = x + Dx

Где,

x' - является новой x-координатой,

x - первоначальная x-координата,

а Dx - расстояние перемещения по горизонтали.

Вертикальный перенос может быть представлен нижеследующим алгоритмом.

y' = y + Dy 

Где,

 y' - является новой y-координатой,

 y - первоначальная y-координата,

 а Dy - расстояние перемещения по вертикали.

Горизонтальные и вертикальные преобразования переноса могут быть объединены в единственную операцию при использовании матрицы 3Î3.

                      |1   0   0| 
|x' y' 1| = |x y 1| * |0   1   0| 
                      |Dx  Dy  1| 

(Правила матричного умножения определяют, что число рядов в одной матрице должно равняться числу колонок в другой. Целое число 1 в матрице |x y 1 | - структурный нуль, который был добавлен, чтобы отвечать этому требованию.)

Матрица  3Î3, которая произвела иллюстрированное преобразование переноса, содержит нижеследующие значения.

|1  0  0| 
|0  1  0| 
|10 0  1| 

Назад в оглавление
На главную страницу

Hosted by uCoz