ユーザーの回転を追跡できる WPF アプリケーションを実装しています。基本的なアイデアは、kinect を一定の場所に配置することです。ユーザーは kinect の前に来て、360 度回転できます。ユーザーが回転した度数を追跡したい。私はそれを追跡するために次の方法を使用しました。しかし、この機能は正確ではないようで、ユーザーが 0 度を向いているときは 180 と表示され、マイナスの値も表示されます。
public static double GetShoulderRotation(this Skeleton skeleton)
{
Joint leftShoulder = skeleton.Joints[JointType.ShoulderLeft];
Joint rightShoulder = skeleton.Joints[JointType.ShoulderRight];
if (leftShoulder.TrackingState == JointTrackingState.NotTracked ||
rightShoulder.TrackingState == JointTrackingState.NotTracked)
{
return Double.NaN;
}
else
{
return (Math.Atan2(
rightShoulder.Position.Z - leftShoulder.Position.Z,
leftShoulder.Position.X - rightShoulder.Position.X)*180.0/Math.PI);
}
}
誰でもこれに対する解決策を教えてください。