【问题标题】:WPF - Get the angle in degrees of a Vector3D as viewed from aboveWPF - 从上方查看 Vector3D 的角度(以度为单位)
【发布时间】:2010-02-20 04:03:17
【问题描述】:

我正在处理一个 3D,它有一个称为 FrontDirection 的 Vector3D 类型的属性。该对象旋转如下:

var rotate = new AxisAngleRotation3D(new Vector3D(0, 1, 0), deltaAngleInDegrees);
var transform = new RotateTransform3D(rotate);

my3DObject.FrontDirection = transform.Transform(my3DObject.FrontDirection);

经过任意量的旋转后,我想确定从上方看物体的角度。我希望该值在 [0, 360) 之间变化。我能得到的最接近的是:

var angle = Vector3D.AngleBetween(new Vector3D(1, 0, 1), my3DObject.FrontDirection);

但是,在将对象旋转一整圈时,角度会在 0 到 180 之间变化,然后又回落到 0。似乎 AngleBetween 是在不考虑方向的情况下给出向量之间的距离。计算角度的好方法是什么?

【问题讨论】:

    标签: c# wpf 3d vector


    【解决方案1】:

    这是我想出的解决方案:

    var axisZ = new Vector3D(0, 0, 1);
    var angleZ = Vector3D.AngleBetween(axisZ, my3DObject.FrontDirection);
    double currentRotation = my3DObject.FrontDirection.X >= 0 ? angleZ : 360 - angleZ;
    

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多