计算正确的音高

Calculating the correct pitch

        public double GetPitchToFace(double Z2, double Z1, double X2, double X1)
    {            
        double Arc;
        Arc = Math.Atan2(Z2 - Z1, X2 - X1);
        return Arc;
    }

我正在尝试找出正确的音高以“面对”特定点。

使用 Atan2(如上所示)似乎 return 正确的值,但在游戏中,投球系统似乎工作得相当奇怪。

不是从 0 弧度一直逆时针增加到 6.2,而是从 0 到 3 弧度然后跳到 -3 弧度并再次回到 0。

Example of Pitch

希望你能看懂上面画的不好的例子。

我需要一种方法将奇怪的音高/弧度系统转换为标准的 0 - 6.2 弧度,以便 return 正确的音高。

谢谢。

由于 Math.Atan2 方法 return 角度 θ(以弧度为单位)使得 -π ≤ θ ≤ π 当输入点在第三或第四象限时,它会产生负值。

到return只有正值(即0≤θ≤2π)可以使用简单的数学。由于 是一个完整的旋转,您可以在 Math.Atan2 方法 return 为负值时添加它。这只会为您提供所需范围内的值。

 public double GetPitchToFace(double Z2, double Z1, double X2, double X1)
    {            
        double Arc;
        double theta = Math.Atan2(Z2 - Z1, X2 - X1);
        Arc = (theta >= 0) ? theta : (2*Math.PI + theta);
        return Arc;
    }