1. 程式人生 > >三點如何動態的畫圓弧 其實主要是能知道繪製圓弧的方向就行

三點如何動態的畫圓弧 其實主要是能知道繪製圓弧的方向就行

    由於需求,我需要動態的在介面上隨意的點下三個點繪製一段圓弧,可是繪製圓弧的方向可不太好控制,我嘗試著自己寫條件去控制方向可是沒有一個成功的,於是我網上找了一天,但是都沒有找到解決的方法。

    回到宿舍不甘心的我又開始了,不過最終我在百度上看到了一條公式,利用向量叉乘判斷旋轉方向

我想需要這東西的朋友肯定不少,但是網上介紹的資料卻很少,這雖然不是我想出來的辦法,可我卻願意分享出來。


//CPoint a, b, c; 分別為按順序點下的 三個點
double cross(CPoint a, CPoint b, CPoint c)
{
return (b.x - a.x) * (c.y - b.y) - (b.y - a.y) * (c.x - b.x);
}
//如果返回值大於0為順時針,小於0為逆時針。
int iDirection = cross(a, b, c) > 0 ? AD_CLOCKWISE : AD_COUNTERCLOCKWISE;
dc.SetArcDirection(bDirection);
dc.Arc(rect, a, c); //a為起始點 c為結束點