我正在实现一个可以跟踪用户旋转的 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);
}
}
任何人都可以为此提供解决方案吗?