Как применить преобразование к координатам прямоугольника

Я обнаруживаю объект в своем коде и рисую прямоугольник вокруг него. У меня есть четыре переменные для рисования прямоугольника: X, Y, Ширина и Высота. Я нашел матрицу преобразования, которая должна быть применена к прямоугольнику. Возвращенная матрица преобразования представляет собой матрицу 3*3, например:

Tinv =

    1.0022    0.0018        0

   -0.0018    1.0022         0

   -0.4353   -0.9079    1.0000

Как применить преобразование к прямоугольнику с помощью этой матрицы?

1 ответ

Решение

Что вы должны сделать, это вычислить все четыре вершины прямоугольника и затем применить преобразование к каждой отдельной вершине. Это должно быть достаточно легко; если я получу то, что вы пытаетесь сделать, то вы можете использовать что-то вроде следующего:

X = 1;
Y = 2.34;
W = 3.21;
H = 2;

Вершины теперь могут быть (при условии, что (X,Y) обозначает верхнюю левую вершину вашего прямоугольника с основанием в 0 радиан:

(x1,y1) = (1,2.34)
(x2,y2) = (4.21,2.34)
(x3,y3) = (4.21,0.34)
(x4,y4) = (1,0.34)

Теперь это можно представить как:

[
1.00    2.34    0.00
4.21    2.34    0.00
4.21    0.34    0.00
1.00    0.34    1.00
]

Теперь это может быть преобразовано в соответствии с требованиями простого умножения матриц.

Другие вопросы по тегам