如何找到具有两个帧的delta theta,每个帧有两个点?

时间:2013-10-14 16:19:17

标签: c++ msdn motion

我在使用c ++,我使用visual studio作为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

1 个答案:

答案 0 :(得分:2)

A - 第一根手指的点,A' - 移动后第一根手指的点。

B - 秒针的点,B' - 移动后的第二根手指点。

如果我理解正确你的答案将是角度ABx和A'B'x之间的差异,其中x - 是x轴。它可以通过atan2(dy,dx)函数轻松完成,其中dx = Ax-Bx,dy = Ay-By。