Прочитать на английском

Поделиться через


Перевод

Некоторые приложения преобразуют (или сдвиг) объекты, нарисованные в клиентской области. путем вызова функции SetWorldTransform для задания преобразования соответствующего мирового пространства в пространство страницы. Функция SetWorldTransform получает указатель на структуру 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|