Перевод

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

Когда происходит перевод, каждая точка в объекте перемещается по вертикали, горизонтально или по обоим значениям. На следующем рисунке показан прямоугольник с 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|