Я реализую приложение WPF, которое может отслеживать вращение пользователя. Идея bisc заключается в том, что kinect размещается в постоянном месте. Пользователь приходит перед кинцетом, и он может вращаться на 360 градусов. Я хочу отслеживать, сколько градусов пользователь повернул. Я использовал следующий метод для его отслеживания. Но похоже, что функция неточна, и когда пользователь сталкивается с 0 градусами, он показывает ее как 180, а также дает минус значения.Угол поворота трека с использованием Microsoft Kinect SDK
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);
}
}
Может ли кто-нибудь решить эту проблему?
Не могли бы вы более подробно рассказать о логике? – Shanaka