三階貝塞爾曲線一分爲二的一般公式

三階貝塞爾曲線被廣泛用於各種需要平滑曲線的設計領域,一般通過多段三階貝塞爾曲線順次連接,構成比較複雜的曲線。

比如下圖中,A、B、C和D控制紅色曲線,D、E、F和G控制綠色曲線,G、H、I和A控制藍色曲線。


對於上面紅色曲線,我們把A和D稱爲端點,B和C稱爲柄點,可以發現端點總是被相鄰曲線共用。

每一段三階貝塞爾曲線均由兩個端點和兩個柄點,一共四個控制點進行控制,對於其中每個控制點的改變,均會影響這段曲線所有部分。

出於曲線微調的目的,在柄點B的移動過程中,只改變端點A到點E的那一段曲線(E點的位置固定起來),而對於點E到端點D的部分則維持不變。

這樣的情況下,就需要分拆這段貝塞爾曲線爲兩段,端點A到點E爲一段,點E到端點D爲一段,然後再單獨修改端點A到點E的那段曲線。

展示一下曲線分開後,單獨控制的效果:




我們知道A、B、C和D四個控制點,描述了上面的三階貝塞爾曲線,那麼就有以下兩個問題:

第一,分拆後的曲線AE和曲線ED,能否用三階貝塞爾曲線描述?

第二,如果能夠的話,那麼曲線AE和曲線ED的控制點在哪裏?


對於第一個問題,答案是肯定的。

可以證明曲線AE和曲線ED上的三階貝塞爾曲線的參數方程,經過對參數變量的變換,可以轉換爲完整三階貝塞爾曲線的參數方程(參數變量的取值範圍調整到對應的定義域)。其中,曲線AE和曲線ED的三階貝塞爾曲線的參數方程的參數變量,與完整三階貝塞爾曲線的參數方程的參數變量,有着確定的函數關係。

那麼,下面就針對第二個問題,來尋求解答。


由三階貝塞爾曲線的參數方程定義

可以將點E定義爲t等於特定值e (0<e<1)時的點P(e),也即:



針對三階貝塞爾曲線的定義,可以作出以下輔助點和輔助線;


根據貝塞爾曲線的特性,可以知道線段AB是貝塞爾曲線在A點的切線段,線段IJ是貝塞爾曲線在E點的切線,線段CD是貝塞爾曲線在D點的切線。

其中F、G、H、I、J是與貝塞爾曲線相關的輔助點,根據三階貝塞爾曲線的規則,座標可以定義如下:



另外,E也可以通過I和J來定義,如果進行推算,那麼結果和P(e)也是一致的:


經過觀察,感覺A、F、I和E很像是曲線AE的貝塞爾曲線控制點的樣子,下面就針對這個猜想進行驗證:

假設A、F、I和E就是曲線AE的貝塞爾曲線的控制點,那麼以u爲參數變量的三階貝塞爾曲線方程可以表達如下:


代入F、I和E的座標公式,則Q(u)可以轉換爲如下形式:


經過化簡和整理可得:


以自變量t代替ue,則可以定義如下函數:


而曲線AE就是三階貝塞爾曲線參數方程P(t)定義在t=[0, e]的部分,也即:


R(t)和PAE(t)的定義域和函數方程完全相同,所以可以得知Q(u)就是曲線AE的參數方程,也即A、F、I和E是曲線AE的三階貝塞爾曲線的控制點,從而可以驗證前面的猜想。

對於曲線ED部分,也可以採用相同方式進行證明,這裏不再贅述。


從而,控制點ABCD描述的三階貝塞爾曲線,可以被分解爲控制點AFIE描述的貝塞爾曲線和控制點EJHD描述的貝塞爾曲線。

也即,對於三階貝塞爾參數曲線方程P(t)而言,對於任意0<e<1,均可以將該曲線從P(e)處斷開成兩個三階貝塞爾曲線。



例如下圖中,取e=0.4,那麼該曲線從 P(0.4)處斷開爲紅色和綠色兩根貝塞爾曲線。



感謝Grapher和GeoGebra軟件,使得方便排版文章中使用的公式和曲線。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章