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

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


Масштабирование

Большинство приложений САПР и приложений для рисования предоставляют функции масштабирования выходных данных, созданные пользователем. Приложения, которые включают возможности масштабирования (или масштабирования), вызывают функцию 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|