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

Большинство приложений САПР и рисования предоставляют функции, которые масштабируют созданные пользователем данные. Приложения, включающие возможности масштабирования (или зумирования), вызывают функцию SetWorldTransform, чтобы задать преобразование из пространства мира в пространство страницы. Эта функция получает указатель на структуру XFORM, содержащую соответствующие значения. Члены XFORM eM11 и eM22 указывают горизонтальные и вертикальные компоненты масштабирования соответственно.

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