Я работаю в C ++, я использую Visual Studio в качестве IDE, и я работаю с Leap Moap 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
A — точка первого пальца, A ‘- точка первого пальца после движения.
B — точка второго пальца, B ‘- точка второго пальца после движения.
Если я вас правильно понял, вашим ответом будет разница между углами ABx и A’B’x, где x — ось x. Это легко сделать с помощью функции atan2 (dy, dx) from, где dx = Ax-Bx, dy = Ay-By.
Других решений пока нет …