C# 用Kinect模拟转向控制

C# 用Kinect模拟转向控制,c#,wpf,3d,C#,Wpf,3d,我想用Kinect模拟一个手势,让用户伸出双手,就像在半空中握住一个假想的方向盘一样。我想计算他双手之间形成的向量的旋转角度,根据他向左或向右的旋转量,我想启动键盘按键。无法确定如何获取旋转角度。我正在wpf应用程序中使用c。如果您有任何帮助,我们将不胜感激 Vector3 hr_hl = KinectHelper.VectorBetween(skeleton, JointType.HandRight, JointType.HandLeft); Vector3 axis_spine = new

我想用Kinect模拟一个手势,让用户伸出双手,就像在半空中握住一个假想的方向盘一样。我想计算他双手之间形成的向量的旋转角度,根据他向左或向右的旋转量,我想启动键盘按键。无法确定如何获取旋转角度。我正在wpf应用程序中使用c。如果您有任何帮助,我们将不胜感激

Vector3 hr_hl = KinectHelper.VectorBetween(skeleton, JointType.HandRight, JointType.HandLeft);
Vector3 axis_spine = new Vector3(spine.Position.Z);
float angle = (float)Math.Acos(Vector3.Dot(hr_hl, axis_spine));
Vector3 axis = Vector3.Cross(axis_spine, hr_hl);
Quaternion rot = Quaternion.CreateFromAxisAngle(axis, angle);
float rot_radian = KinectHelper.QuaternionAngle(rot);

简言之,我想要连接右手和左手的向量的滚动角度,我的脊椎Z轴是旋转轴。

很抱歉回复太晚。我的连接有问题。我什么也没试过。我想实现这个手势。伸出双手,就像我握住汽车的方向盘一样。然后,当我们旋转方向盘时,我想计算向左或向右旋转的角度,并根据角度触发windows事件。你能帮我得到那个角度吗?我用XNA样本中给出的VectorBetween方法在右手和左手之间画了一个向量。我把脊柱的Z轴当作旋转轴。我的手向量将围绕脊椎Z向量旋转。但是我无法得到手向量的旋转角度。如果你还没有尝试过任何东西,那么就发布一个问题,希望我们能简单地告诉你如何做。你必须自己做研究,我们不必。但是,如果您已经使用/为Kinect编写了代码,并且在该代码中遇到了问题,您可以在此处发布有关该代码的问题,并记住包含该代码。另外,在发布另一个问题之前,您应该阅读页面。Vector3 hr_hl=KinectHelper.VectorBetweenskeleton,JointType.handlight,JointType.handlight;矢量3轴\ U轴=新矢量3轴位置Z;浮动角度=floatMath.AcosVector3.Dothr\u hl,轴\u脊椎;向量3轴=向量3。横轴与脊柱,hr与hl;四元数rot=四元数。CreateFromAxisAngleaxis,angle;float rot_radian=KinectHelper.QuaternionAnglerot;这就是我试过的。很抱歉没有在这里发布我的代码。不会再发生了。