Масштабирование объекта с локальным масштабом и поворотом - PullRequest
1 голос
/ 25 июня 2010

У меня есть объект, который имеет положение, угол поворота и масштаб (x и y).Общая матрица преобразования выглядит следующим образом:

QTransform xform;
xform.translate(instance.definition.position.x, instance.definition.position.y);
xform.rotateRadians(instance.definition.rotation);
xform.scale(instance.definition.scale.x, instance.definition.scale.y);

Мне нужно масштабировать этот объект, используя глобальный масштаб, который затем изменяет локальный масштаб объекта.Например, объект поворачивается на 45 градусов, я применяю шкалу 1,2, мне нужно знать, как это влияет на локальный масштаб, поскольку он должен влиять на обе оси локального масштаба.

Спасибо.

PS: возможно, это невозможно из-за того, что это не аффинное преобразование, я не знаю, я не нашел много в Google об этой конкретной проблеме

ОБНОВЛЕНИЕ: Я думаю, что мне нужнопо крайней мере, преобразование матрицы 3 столбца на 2 строки, чтобы сохранить достаточно информации, я попробовал некоторые вещи в SVG, который использует этот вид преобразования матрицы, и, похоже, он работает, мне нужно будет обновить эту матрицу в соответствии с положением и поворотом.*

Ответы [ 2 ]

0 голосов
/ 25 июня 2010

Если вы возьмете, скажем, прямоугольник, поверните его так, чтобы его края больше не были параллельны осям координат, а затем примените коэффициент масштабирования, скажем, к X, он больше не будет прямоугольником.Это будет параллелограмм, и ваши структуры данных должны будут содержать больше информации, чем сейчас.

0 голосов
/ 25 июня 2010

Сначала масштабируйте объект

или вычислите обратную матрицу, примените ее к объекту (который отменяет перемещение / вращение), масштабируйте его и примените первую матрицу снова.

...