知道一個圓弧的兩個端點和終點還有角度,怎麼將這個圓弧畫出來?用java,說出具體的方法及過程,謝謝了!
想了想你這個問題,你這個需要解方程來確定圓弧所在圓或橢圓的方程的,而這個實現起來是比較麻煩的,我試著寫了一下,沒有寫完,需要考慮的條件很多,有些復雜,先說下思路吧:
1、先假設三個點落在圓上,圓相比橢圓要好一些;
1)根據三個點的坐標求出圓心和半徑來
因為知道三個點的坐標,根據圓的方程是可以求出方程中的三個參數的,如果直接用圓方程求會比較麻煩,涉及到二次運算;
可以使用另一種方式,即起點和中點連線的中垂線與終點和中點連線的中垂線相交就是圓心了。
求出圓心後就能知道半徑了,這樣就確定了圓的方程,比如是(x-a)*(x-a)+(y-b)*(y-b)=r*r,a,b是圓心,r是半徑
2)其實這時候要判斷假設的對不對了,如果假設圓正確,那麼圓心與兩個端點的夾角與給定的圓弧對應角度應該是一樣的,否則不一樣
已知圓心O(a,b)與兩個端點(如A(x1,y1)和B(x2,y2))的坐標,可以使用余弦定理求出角AOB的度數,這個不難請自行百度。
2-1假設通過檢測的話說明三個點就是在圓上,
2-1-1)有了圓的方程就知道圓的外接矩形的左上角坐標和寬度、高度了
左上角坐標x=a-r,y=b-r,width=r+r,height=r+r;
需要這些參數是因為畫弧線的方法中需要使用到這些參數。
2-1-2)求起始的角度
起始角度也是繪制圓弧所需要的參數,這個的計算可以通過起始端點與圓心連線的斜率來求,這個裡面也要分情況,需要說明的是在Java中繪制圓弧的起始角度0表示水平正值方向,
比如起始端點為(1,0),那麼起始角度為0,起始端點為(0,1),那麼起始角度為90,這裡用度表示,使用中也是。
注意起始端點在四個象限分別處理起始的角度。
2-1-3)求終止角度,有了起始角度加上給定的弧度對應角度就是終止角度了。
2-1-4)繪制
最後調用drawArc(x,y,width,height,startAngle,endAngle)就可以繪制了。
2-2)假設沒有通過檢測,說明三個點不在圓上,需要計算橢圓的方程了。
這個沒有具體的寫代碼,先看看上面的是否符合要求吧。