Показать сообщение отдельно
Старый 29.06.2016, 09:12   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Трансфорации

Не знал куда написать, сделал тему.

У меня такая задача:
Есть openCV, которая распознает объект и выдает нам RotateRect, который имеет center, Size, angle, все относительно изображения (mat) openCV. Мне нужно трансформировать это все в глобальную область.

Делаю так:
public static MotionVector TransformRotateRectToMV(RotatedRect rectTransform screenSize resolution){
        
MotionVector ret;

        
Vector3 localPos PointToVector (rect.center);
        
localPos./= resolution.width;
        
localPos./= resolution.height;

        
ret.Pos screen.TransformPoint (localPos);

        
//TODO rescale size!!
        
ret.Size.Set (rect.size.widthrect.size.height);
        
//ret.Dir =;
    

Не знаю как трансформировать направление с учетом того, что screen, объект с которого идет трансформация, может быть сам повернут.

Или нужен другой метод перевести ориентацию с учетом поворота.( С кватернионами плохо дружу, так что решил на векторах, но лучше наверное они)
Поворот должен быть относительно screen.up вектора с учетом angle по оси Y.
Как это?
Картинка:
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием