计算正确的音高
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。
希望你能看懂上面画的不好的例子。
我需要一种方法将奇怪的音高/弧度系统转换为标准的 0 - 6.2 弧度,以便 return 正确的音高。
谢谢。
由于 Math.Atan2
方法 return 角度 θ(以弧度为单位)使得 -π ≤ θ ≤ π 当输入点在第三或第四象限时,它会产生负值。
到return只有正值(即0≤θ≤2π)可以使用简单的数学。由于 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;
}
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。
希望你能看懂上面画的不好的例子。
我需要一种方法将奇怪的音高/弧度系统转换为标准的 0 - 6.2 弧度,以便 return 正确的音高。
谢谢。
由于 Math.Atan2
方法 return 角度 θ(以弧度为单位)使得 -π ≤ θ ≤ π 当输入点在第三或第四象限时,它会产生负值。
到return只有正值(即0≤θ≤2π)可以使用简单的数学。由于 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;
}