Масштабирование
Большинство приложений САПР и приложений для рисования предоставляют функции масштабирования выходных данных, созданные пользователем. Приложения, которые включают возможности масштабирования (или масштабирования), вызывают функцию SetWorldTransform , чтобы задать соответствующее преобразование мирового пространства в пространство страницы. Эта функция получает указатель на структуру XFORM , содержащую соответствующие значения. Элементы eM11 и eM22 XFORM определяют компоненты горизонтального и вертикального масштабирования соответственно.
При масштабировании вертикальные и горизонтальные линии (или векторы), составляющие объект, растягиваются или сжимаются относительно оси X или Y. На следующем рисунке показан прямоугольник 20 на 20 единиц, масштабируемый по вертикали в два раза больше исходной высоты при копировании из пространства мировых координат в пространство с координатами страницы.
На предыдущем рисунке вертикальные линии, определяющие сторону исходного прямоугольника, измеряют 20 единиц, а вертикальные линии, определяющие стороны масштабируемого прямоугольника, измеряют 40 единиц.
Вертикальное масштабирование можно представить следующим алгоритмом.
y' = y * Dy
Где y' — новая длина, y — исходная длина, а Dy — коэффициент вертикального масштабирования.
Горизонтальное масштабирование можно представить следующим алгоритмом.
x' = x * Dx
Где x' — новая длина, x — исходная длина, а Dx — коэффициент горизонтального масштабирования.
Преобразования вертикального и горизонтального масштабирования можно объединить в одну операцию с помощью матрицы 2 на 2.
|x' y'| = |Dx 0| * |x y|
|0 Dy|
Матрица 2 на 2, создающая преобразование масштабирования, содержит следующие значения.
|1 0|
|0 2|