三次貝塞爾曲線畫圓的方法。


上一篇說的仿58同城loadingview的項目。中有一個利用貝塞爾曲線進行繪制圓的步驟,這個貝塞爾曲線理論挺復雜,特此單獨說一下所知的和能用到的。


比方上一個loadingView的項目中。要用到Path.cubic()來使用貝塞爾曲線畫一個圓,那么首先要了解的是
Path.cubic()方法的定義:

void cubicTo(float x1,float y1,float x2,float y2,float x3,float y3)
Add a cubic bezier from the last point,approaching control points(x1,y1)and(x2,y2),and ending at (x3,y3)

什么意思呢。就是從我們的最后一個點出發以接近(x1,y1)(x2,y2)這兩個點的方向走最后結束在(x3,y3)點。
什么叫接近呢?比方y = 1/x^3 這個函數的軌跡當x趨近於0時。軌跡無限趨近於Y軸值趨於無限大。


借用一張圖片
當曲線從0點出發以趨近1點的方向前進終結於4點時就會呈現這樣一個軌跡。


所以當想以三次方程貝塞爾曲線繪制一個圓時。項目中的方法是繪制4個1/4圓,每次用三次貝塞爾繪制1/4圓須要四個點。
這張圖中的(0,0)是我們的起始點(1,1)是終點 這兩個點都是圓上的能夠知道坐標。所以要算出(x1,0)(1,y1)這兩個點的坐標。

這就是magicNumber的由來。

我們將這個圓的圓心與(x1,0)(0,0)連線。兩條線的夾角為20°,由此可算出x1的坐標。

同理y1,這個坐標值為magicNumber。


四個點坐標算出來就能夠畫圓了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM