Как векторные приложения искажают полигоны? - PullRequest
2 голосов
/ 17 июля 2010

Я знаю, как перемещать, вращать и масштабировать, но как работает перекос? что мне нужно сделать с набором вершин, чтобы их исказить?

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 июля 2010

Смещение значений X на величину, которая изменяется линейно в зависимости от значения Y (или наоборот).

Редактирование: Выполнение этого с прямоугольником:

Допустим, вы начинаете с прямоугольника (0, 0), (4, 0), (4, 4), (0, 4).Давайте предположим, что вы хотите наклонить его с наклоном 2, так что когда он поднимется на две единицы вверх, он сместится на одну вправо, примерно так (нарисовано от руки, поэтому угол, несомненно, немного неправильный, но я надеюсь, что это дастобщая идея):

alt text

Чтобы получить это, каждое значение X настраивается следующим образом:

X = X + Y * S

где S - обратный наклон скоса.В этом случае наклон равен 2, поэтому S = 1/2.Работая с четырьмя углами, мы получаем:

(0, 0) => 0 + 0 / 2 = 0 => (0, 0)
(4, 0) => 4 + 0 / 2 = 4 => (4, 0)
(4, 4) => 4 + 4 / 2 = 6 => (6, 4)
(0, 4) => 0 + 4 / 2 = 2 => (2, 4)
1 голос
/ 17 июля 2010

Перекос / сдвиг подробно описан в http://en.wikipedia.org/wiki/Shear_mapping и http://mathworld.wolfram.com/ShearMatrix.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...