Не знал куда написать, сделал тему.
У меня такая задача:
Есть openCV, которая распознает объект и выдает нам RotateRect, который имеет center, Size, angle, все относительно изображения (mat) openCV. Мне нужно трансформировать это все в глобальную область.
Делаю так:
public static MotionVector TransformRotateRectToMV(RotatedRect rect, Transform screen, Size resolution){
MotionVector ret;
Vector3 localPos = PointToVector (rect.center);
localPos.x /= resolution.width;
localPos.y /= resolution.height;
ret.Pos = screen.TransformPoint (localPos);
//TODO rescale size!!
ret.Size.Set (rect.size.width, rect.size.height);
//ret.Dir =;
}
Не знаю как трансформировать направление с учетом того, что screen, объект с которого идет трансформация, может быть сам повернут.
Или нужен другой метод перевести ориентацию с учетом поворота.( С кватернионами плохо дружу, так что решил на векторах, но лучше наверное они)
Поворот должен быть относительно screen.up вектора с учетом angle по оси Y.
Как это?
Картинка: