貝塞爾曲線生成動畫
阿新 • • 發佈:2018-12-31
剛剛開始接觸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
原始碼
由於時間比較倉促,程式碼質量很低(為了製作速度,演算法弄得很愚蠢),所以暫時先不放上來(反正這個也很容易自己實現,自己做一個唄)