Как найти дельта-тэту, имеющую два кадра, каждый из которых имеет две точки?

0

Я работаю в c++, я использую визуальную студию в качестве среды IDE, и я работаю с скачком Leap Motion SDK

Итак, я сейчас работаю над программой, которая вращает круг. Метод манипулирования поворотом применяется с использованием двух пальцев, которые отображаются как точки приложения.

Также это приложение использует фреймы для отображения событий с течением времени.

Я хотел бы знать, как использовать два кадра и две точки для вычисления изменения для вращения с использованием двух перемещений точек над двумя кадрами.

const Frame frame = controller->frame();      //current frame
const Frame previous = controller->frame(1);  //previous frame

const FingerList fingers = frame.fingers();   //fingers inside that frame
POINT aFingerPoint = fingers[0].position()    //point of a finger from a finger array    
POINT anotherFingerPoint = fingers[1].position()    //point of a finger from a finger array

const FingerList prevFingers = previous.fingers();   //fingers inside that frame
POINT aPrevFingerPoint = fingers[0].position()    //point of a finger from a finger array    
POINT anotherPrevFingerPoint = fingers[1].position()    //point of a finger from a finger array

// coordinate example
float x = aFingerPoint.x;
float y = aFingerPoint.y; 

float deltaRotation = [THIS PART I DONT KNOW]; //I got the translation already, just need rotation
circle.manipulation(deltaRotation);  //Rotates the circle in degrees
Теги:
msdn
motion

1 ответ

2
Лучший ответ

A - точка первого пальца, A '- точка первого пальца после движения.

B - точка второго пальца, B '- точка второго пальца после движения.

Если вы правильно поймете, что ваш ответ будет разницей между углами ABx и A'B'x, где x - ось x. Это легко сделать с помощью функции atan2 (dy, dx), где dx = Ax-Bx, dy = Ay-By.

  • 0
    Спасибо! Моя проблема заключалась в том, что я применял метод со касательной, а не метод арктангенс ... спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню