0

我在 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
4

1 回答 1

2

A - 食指点,A' - 移动后食指点。

B - 食指点,B' - 移动后食指点。

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

于 2013-10-14T19:18:20.583 回答