【问题标题】:Angle between Kinect line of sight and Head jointKinect 视线与头部关节之间的角度
【发布时间】:2012-03-25 00:07:42
【问题描述】:

如何找出 Kinect 的视线和头部关节之间的角度。我已经尝试了很多,但我无法成功。我没有任何线索,下一步该怎么做。

请帮我找出找出这个角度的方法。

【问题讨论】:

    标签: kinect


    【解决方案1】:

    我希望我正确理解了您的问题,但这应该很容易。

    头部关节有 3 个坐标 (X,Y,Z)。 Z 是与 kinect 深度相机的距离。 您可以将 kinect 深度相机视为位于世界的 (0,0,0) 中。这意味着深度图像的中心是原点。

    在这种情况下,您可以使用 Atan2 计算 X 和 Y 角,如下所示:

    
    X angle = atan2(headjoint.Position.Y, headjoint.Position.Z);
    Y angle = atan2(headjoint.Position.X, headjoint.Position.Z);
    
    
    • 我使用 atan2 而不是 atan,因为在 Z 值为 0 的情况下,它可以避免除法为零崩溃。Atan2 知道如何处理这种情况。
    • 这些结果角度以弧度表示。
    • X 角度表示绕 X 轴旋转。
    • Y 角表示绕 Y 轴旋转。

    【讨论】:

      【解决方案2】:

      Andrei 的答案是正确的,但 X 和 Y 角的方向是错误的。

      如果你想找出玩家在 X 轴上的角度(使用 c#),请执行以下操作:

      xAngle = Math.Atan2(headjoint.Position.X, headjoint.Position.Z);
      

      要找到 Y 轴的角度:

      yAngle = Math.Atan2(headjoint.Position.Y, headjoint.Position.Z);
      

      这对我非常有用,因为我正试图将音频束转向播放器。干杯!

      【讨论】:

      • 绕轴旋转意味着在垂直于该轴的平面中移动一个点(或者换句话说,一个法线=轴的平面)。如果你写 atan2(x, z),你实际上是在计算 XOZ 平面中的一个角度。在这个平面上的旋转称为绕 Y 轴的旋转。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 2020-09-04
      相关资源
      最近更新 更多