2010年3月22日 星期一

在C#中計算角度

在一些圖形回饋的程式中(比如比較炫麗的圓形操控程式)
常會需要計算單點對應到另一個點的旋轉角度

一般的想法就是先算兩點的向量,然後除成tan
再用Math裡面的atan去反推回角度
需要考慮分母為零或是正負號的問題

但其實在Math另外有一個atan2的函式可以直接透過兩點的向量算出角度

private double CalAngle(Point pa, Point pb)
{
/// Y alias is reverse from Cartesian plane
return Math.Atan2(pa.Y - pb.Y, pb.X - pa.X);
}

記得在笛卡爾座標系跟螢幕上的座標的Y軸是反向的
所以計算要反過來減

--
參考資料
Math.Atan2 方法

沒有留言:

張貼留言