圖形學-幾何-曲線-貝塞爾曲線


在空間中,曲線有重要的作用,例如可以在空間中定義一條曲線,攝像機或者物體沿着曲線運動;另外字體可以用曲線來表示,也成矢量,這樣字體無論拉多大都不會出現鋸齒。

 

 

 

   

 

 

 做一條曲線的方法,比較廣為人知的是貝塞爾曲線,在PS之類的軟件經常用到。

 貝塞爾曲線的表示方法

貝塞爾認為,用N個點(N≥3),可以表示一條唯一的曲線。下圖表示用4個點表示一條曲線:

 

表示的規則為:

1.出發方向一定為P0->P1;

2.結束方向一定為P2->P3;

3.有一個點,按照上面規定的方向,隨着時間t不斷行走,從起點走到終點,走過的路徑即為貝塞爾曲線。

也可以理解為,有無數個連續的點,每個點隨着時間t有一個對應的坐標,這些坐標的集合即這條貝塞爾曲線。

因此計算貝塞爾曲線,相當於是求出一個公式,這個公式即P0-P3每個點與t的關系。

貝爾塞曲線的表示方法

下圖表示一條3個點確定的貝爾塞曲線的表示方法:

 

 

 

1.在b0->b1,b1->b2兩條直線上,都分別計算出一個點,這個點根據t值插值表示,如在b0->b1上表示為(1 − t)b0 + tb1;

 

 

 

2.得到的這2個點,連成1條線,再根據t值做插值。得到的這個點,即認為是在t時刻曲線上的一點

 

 

 

3.用這樣的方法,只要t在[0, 1]上過一遍,即可得到曲線上所有的點。

 

 

 類似的,這是4個點的貝塞爾曲線。

點隨着t的變化,可以用公式表示為

 

 

我們發現這個公式就是一個多項式展開式,每一項即為每個點與t的關系。如有3點,為有3個系數,分別與b0、b1、b2相乘,再相加。而系數就是多項式系數

也記為

 

類似的,如果有4個點,則肯定是4項相加(在二維或三維上通用),表示為

 

 

我們稱這個多項式系數為“伯恩斯坦多項式

 

 從上圖可以看到,伯恩斯坦多項式每一項的系數加起來等於1。說明伯恩斯坦多項式實際上做的事情是權重(點到t的距離)插值計算。

 

 

 用伯恩斯坦多項式的系數乘每個點,即得到N階貝塞爾曲線的表達公式:

 

 

 

貝塞爾曲線的一些性質(以3個點為例):

 

1.曲線一定經過b0和b3;

2.起始點的切線長度是3倍的(b1-b0),終點的切線長度是3倍的(b3-b2);

3.仿射變換后的曲線,等於N個點先做仿射變換再連起來的曲線;

4.N個點做出的貝塞爾曲線,一定在由這幾個點圍城的凸包內。

 

 凸包性質可以用來判斷,如果幾個點做出的貝爾塞曲線是一條直線,那這幾個點一定在一條直線上。

 


免責聲明!

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



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