1. 程式人生 > >貝塞爾曲線生成動畫

貝塞爾曲線生成動畫

剛剛開始接觸java swing,做了一個小小的java介面程式展示貝塞爾曲線的生成過程,同時作為自己的技術練習。


貝塞爾曲線介紹


簡單來說,貝塞爾曲線就是一條經過平滑操作的折線,這條折線的頂點叫做“控制點”,控制著貝塞爾曲線的走向。

由於用計算機畫圖大部分時間是操作滑鼠來掌握線條的路徑,與手繪的感覺和效果有很大的差別。即使是一位精明的畫師能輕鬆繪出各種圖形,拿到滑鼠想隨心所欲的畫圖也不是一件容易的事。這一點是計算機萬萬不能代替手工的工作,所以到目前為止人們只能頗感無奈。使用貝塞爾工具畫圖很大程度上彌補了這一缺憾。


生成方式

1.取n個頂點A1,A2,A3作為控制點(這裡取3)


2.給定變數t,0≤t≤1,t隨時間增加而增加

3.對於每一個t,分別在每條邊上取一點Pn,使得|Pn An| / |An An+1|=t


4.對於Pn連成的折線,分別在每條邊上取一點Tn,使得|Tn Pn| / |Pn Pn+1|=t

5.如此迴圈,直到最後剩下一個點(圖中的T1)


6.Tn的軌跡即為貝塞爾曲線



演示程式下載


BezierCurve.jar(雙擊即可執行)

https://pan.baidu.com/s/11gIOp7iKtogINIDlvujE0g


原始碼

由於時間比較倉促,程式碼質量很低(為了製作速度,演算法弄得很愚蠢),所以暫時先不放上來(反正這個也很容易自己實現,自己做一個唄)