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

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


Сдвига

Некоторые приложения предоставляют функции, которые позволяют сдвигать объекты, нарисованные в клиентской области. Приложения, использующие возможности сдвига, используют функцию SetWorldTransform для задания соответствующих значений в преобразовании «пространство мира» в пространство страницы. Эта функция получает указатель на структуру XFORM, содержащую соответствующие значения. Элементы eM12 и eM21 XFORM задают константы горизонтальной и вертикальной пропорциональности соответственно.

Существует два компонента преобразования сдвига. Первый изменяет вертикальные линии в объекте ; второй изменяет горизонтальные линии. На следующем рисунке показан прямоугольник объемом 20 на 20 единиц, срезаемый горизонтально при копировании из мирового пространства в пространство страницы.

Иллюстрация, показывающая прямоугольник в мировом пространстве и трапециевидный объект в пространстве страницы

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

x' = x + (Sx * y) 

где x — исходная координата X, Sx — константа пропорциональности, а x' — результат преобразования сдвига.

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

y' = y + (Sy * x) 

где y — исходная координата y, Sy — константа пропорциональности, а y — результат преобразования сдвига.

Преобразования горизонтального сдвига и вертикального сдвига можно объединить в одну операцию с помощью матрицы 2 на 2.

|x' y'| == |x y| * |  1   Sx| 
                   | Sy    1| 

Матрица 2 на 2, создающая сдвига, содержит следующие значения:

|1    1| 
|0    1|