我在使用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
答案 0 :(得分:2)
A - 第一根手指的点,A' - 移动后第一根手指的点。
B - 秒针的点,B' - 移动后的第二根手指点。
如果我理解正确你的答案将是角度ABx和A'B'x之间的差异,其中x - 是x轴。它可以通过atan2(dy,dx)函数轻松完成,其中dx = Ax-Bx,dy = Ay-By。