public double GetPitchToFace(double Z2, double Z1, double X2, double X1)
{
double Arc;
Arc = Math.Atan2(Z2 - Z1, X2 - X1);
return Arc;
}
我正在嘗試制定正確的音高以“面對”特定點。
使用 Atan2(如上所示)似乎回傳了正確的值,但是在游戲中,音高系統似乎作業得相當奇怪。
它不是從 0 弧度逆時針增加到 6.2,而是從 0 開始增加到 3 弧度,然后跳到 -3 弧度并再次回到 0。

希望您能理解上面的不良繪圖示例。
我需要一種將奇怪的間距/弧度系統轉換為標準 0 - 6.2 弧度的方法,以便回傳正確的間距。
謝謝。
uj5u.com熱心網友回復:
由于該Math.Atan2方法回傳角度θ(以弧度為單位)使得-π ≤ θ ≤ π當輸入點位于第三或第四象限時,它將產生負值。
要僅回傳正值(即0 ≤ θ ≤ 2π),可以使用簡單的數學。由于2π是一個完整的旋轉,您可以在Math.Atan2方法回傳負值時添加它。這只會為您提供所需范圍內的值。
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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/471327.html
上一篇:MongoDB聚合然后展平
下一篇:如何在Linux中計算浮點數?
