貝塞爾曲線

在Android開發(fā)中經(jīng)常會碰到自定義控件棒动。自定義控件涉及的內(nèi)容比較多糙申,如測量和繪制、事件分發(fā)的處理船惨、動畫效果的渲染與實現(xiàn)柜裸,當(dāng)然還有不得不提的貝賽爾曲線缕陕,相信很多小伙伴都知道貝塞爾曲線這個詞。但是疙挺,可能并不是每位小伙伴都清楚地知道扛邑,到底什么是貝塞爾曲線,又是什么特點讓它這么備受歡迎铐然。

貝賽爾曲線的前世今生:

貝塞爾曲線的數(shù)學(xué)基礎(chǔ)是早在 1912 年就廣為人知的[伯恩斯坦多項式蔬崩。直到1959年。當(dāng)時就職于雪鐵龍的法國數(shù)學(xué)家 Paul de Casteljau 開始對伯恩斯坦多項式進(jìn)行了圖形化的嘗試锦爵,并且提供了一種數(shù)值穩(wěn)定的德卡斯特里奧(de Casteljau) 算法舱殿。(多數(shù)理論公式是建立在大量且系統(tǒng)的數(shù)學(xué)建陌侣悖基礎(chǔ)之上研究的規(guī)律性成果)根據(jù)這個算法险掀,就可以實現(xiàn) 通過很少的控制點,去生成復(fù)雜的平滑曲線湾宙,也就是貝塞爾曲線樟氢。

但貝塞爾曲線的聲名大噪,不得不提到1962年就職于雷諾的法國工程師皮埃爾·貝塞爾(Pierre Bézier)侠鳄,他使用這種方法來輔助汽車的車體工業(yè)設(shè)計(最早計算機的誕生則是為了幫助美國海軍繪制彈道圖)埠啃,并且廣泛宣傳(典型的理論聯(lián)系實際并獲得成功的示例),因此大家稱為貝塞爾曲線伟恶。

貝賽爾曲線的數(shù)學(xué)理論:

貝賽爾曲線的本質(zhì)是通過數(shù)學(xué)計算公式去繪制平滑的曲線碴开,這些曲線是用一系列點來控制曲線狀態(tài)的,我們將這些點簡單分為兩類博秫,一類是數(shù)據(jù)點潦牛,一類是控制點。那么該如何求貝塞爾曲線上的點坐標(biāo)挡育?

一階貝賽爾:
一階貝賽爾

可以看到一階貝賽爾是一條直線巴碗!對于一階貝塞爾曲線,我們可以通過幾何知識即寒,很容易根據(jù)
t的值得出線段上那個點的坐標(biāo):


一階貝賽爾曲線公式
二階貝賽爾:

1.步驟一:在平面內(nèi)選3個不同線的點并且依次用線段連接橡淆。如下所示..

3點連線

2.步驟二:在AB和BC線段上找出點D和點E,使得 AD/AB = BE/BC
AD/AB = BE/BC

3.步驟三:連接DE母赵,在DE上尋找點F逸爵,F(xiàn)點需要滿足:DF/DE = AD/AB = BE/BC
DF/DE = AD/AB = BE/BC

4.步驟四:最最重要的!根據(jù)DE線段和計算公式找出所有的F點凹嘲,記住是所有的F點师倔,然后將其這些點連接起來。那施绎,連接規(guī)則是什么溯革?以上圖為例贞绳,第一個連接點是A-F,第二連接點是A-F1(這個F1必須滿足DF1/DE = AD/AB = BE/BC)以此類推致稀,直到最后連接上C點冈闭,下面上一個動圖加深理解:
貝塞爾曲線

可能有些小伙伴還是不理解,那么通過這個GIF其中的一張圖說明抖单,如下圖:
示例說明

動圖里的P0萎攒、P1、P2分別代表的是上圖的:P0 == A矛绘;P1 == B耍休;P2 == C。那么這個黑色點货矮,代表的就是F點羊精,綠色線段的2個端點(P0-P1線段上的綠色點,代表是就是D點囚玫,P0-P2線段上的綠色點喧锦,代表是就是E點)。線段上面點的獲取抓督,必須要滿足等比關(guān)系燃少。
計算公式如下:


二階貝塞爾曲線計算公式

關(guān)于貝賽爾曲線的基本數(shù)學(xué)理論大概就是上面的內(nèi)容。兩個線段根據(jù)等比關(guān)系找點的貝塞爾曲線铃在,一般也稱為二階貝塞爾曲線阵具。

貝賽爾曲線的N階拓展(三階貝塞爾與N階貝塞爾曲線)

剛才說到,上面的貝賽爾曲線一般稱為二階貝塞爾曲線定铜,既然是二階貝塞爾曲線阳液,那肯定有三階貝塞爾曲線、四階貝賽爾曲線等等宿稀。其實三階貝塞爾與四階貝賽爾曲線以及N階貝賽爾曲線曲線的規(guī)則都是一樣的趁舀,都是先在線段上找點,這個點必須要滿足等比關(guān)系祝沸,然后依次連接矮烹,下面是三階貝賽爾曲線的解釋說明:
步驟一:三階貝賽爾曲線,簡單理解就是在平面內(nèi)選4個不同線的點并且依次用線段連接(也就是三條線)罩锐。如下所示


四點三線

步驟二:同二階貝塞爾曲線一樣首先需要在線段上找對應(yīng)的點(E奉狈、F、G)涩惑,對應(yīng)的點必須要符合等比的計算規(guī)則仁期,計算規(guī)則如下:AE/AB = BF/BC = CG/CD;找到對應(yīng)的點以后接著依次鏈接EF、FG跛蛋;接著在EF熬的、FG線段上面繼續(xù)找點H、I赊级,對應(yīng)的點依舊要符合等比的計算規(guī)則押框,也就是 EH/EF = FI/FG;最后連接H理逊、I線段橡伞,在HI線段上面繼續(xù)找點J、點J的計算規(guī)則需要符合:EH/EF = FI/FG = HJ/HI


三階貝賽爾曲線找點

步驟三:重復(fù)步驟二的動作晋被,找到所有的J點兑徘,依次將J點連接起來,這樣最終完成了三階貝賽爾曲線羡洛。


J點依次連線

整一個三階貝賽爾曲線的動作加起來就是下面的一張動圖:
三階貝塞爾

計算公式如下:


三階貝塞爾曲線計算公式

那么四階貝賽爾曲線的實現(xiàn)步驟也是一樣的挂脑,平面上先選取5個點(5點4線)、依次選點(滿足等比關(guān)系)翘县、依次連接最域、根據(jù)計算規(guī)則找到所有的點(逐個連接)。锈麸。。牺蹄。忘伞。。


四階貝賽爾曲線

五階貝賽爾曲線:


五階貝賽爾曲線

n階貝賽爾曲線計算公式如下:


n階貝賽爾曲線計算公式

關(guān)于貝塞爾曲線沙兰,就講到這里氓奈,通過這篇文章,相信小伙伴們應(yīng)該都知道貝塞爾曲線是怎么繪制出來的鼎天。

參考:http://www.reibang.com/p/0c9b4b681724

作者:Alan
原創(chuàng)博客舀奶,請注明轉(zhuǎn)載處....

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市斋射,隨后出現(xiàn)的幾起案子育勺,更是在濱河造成了極大的恐慌,老刑警劉巖罗岖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涧至,死亡現(xiàn)場離奇詭異,居然都是意外死亡桑包,警方通過查閱死者的電腦和手機南蓬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赘方,你說我怎么就攤上這事烧颖。” “怎么了窄陡?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵倒信,是天一觀的道長。 經(jīng)常有香客問我泳梆,道長鳖悠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任优妙,我火速辦了婚禮乘综,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘套硼。我一直安慰自己卡辰,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布邪意。 她就那樣靜靜地躺著九妈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪雾鬼。 梳的紋絲不亂的頭發(fā)上萌朱,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音策菜,去河邊找鬼晶疼。 笑死,一個胖子當(dāng)著我的面吹牛又憨,可吹牛的內(nèi)容都是我干的翠霍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蠢莺,長吁一口氣:“原來是場噩夢啊……” “哼寒匙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躏将,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤锄弱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后耸携,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棵癣,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年夺衍,在試婚紗的時候發(fā)現(xiàn)自己被綠了狈谊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖河劝,靈堂內(nèi)的尸體忽然破棺而出壁榕,到底是詐尸還是另有隱情,我是刑警寧澤赎瞎,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布牌里,位于F島的核電站,受9級特大地震影響务甥,放射性物質(zhì)發(fā)生泄漏牡辽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一敞临、第九天 我趴在偏房一處隱蔽的房頂上張望态辛。 院中可真熱鬧,春花似錦挺尿、人聲如沸奏黑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熟史。三九已至,卻和暖如春窄俏,著一層夾襖步出監(jiān)牢的瞬間蹂匹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工裆操, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怒详,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓踪区,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吊骤。 傳聞我的和親對象是個殘疾皇子缎岗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容