官术网_书友最值得收藏!

3.2 端點(diǎn)間二次樣條的構(gòu)建

在兩個(gè)路點(diǎn)之間生成曲線,并且要求兩個(gè)路點(diǎn)可以自由控制位置和朝向(切線方向)時(shí),使用單一的一段二次曲線會(huì)遇到自由度不夠的問題。這里構(gòu)造了如下兩條拼接的二次曲線來解決這個(gè)問題(見圖3.1)。

圖3.1 二次樣條曲線示意圖

給定起點(diǎn)P0、起點(diǎn)切線T0、終點(diǎn)P1和終點(diǎn)切線T1,有二次曲線f1(t)和f2(t),令其滿足如下條件:

對(duì)于f1(1)和f2(0),假設(shè)有一動(dòng)點(diǎn)Pm,在該點(diǎn)處曲線滿足:

從而可以得到兩條曲線的系數(shù)方程組:

該方程組的解為

則有

可以看到,最終動(dòng)點(diǎn)Pm不會(huì)出現(xiàn)在方程中,它為隱含的點(diǎn),對(duì)外部是透明的。為了將分段曲線當(dāng)作一段曲線使用,還需要將兩段子曲線的參數(shù)t歸一化到統(tǒng)一的[0,1]范圍內(nèi)。令為參數(shù)t歸一化后的分段二次曲線,有,。這里使用每段子曲線占拼接曲線的比例來歸一化曲線參數(shù)。設(shè)L1L2分別為曲線的長(zhǎng)度,則有

類似的,也可以得到曲線的長(zhǎng)度方程,由子曲線長(zhǎng)度方程表示的歸一化方程:

為此需要計(jì)算曲線f1(t)和f2(t)的曲線段的長(zhǎng)度。對(duì)于二次曲線而言,曲線的線積分有解析解(分部積分):

其中:

這些系數(shù)可以離線預(yù)計(jì)算好(靜態(tài)路徑),或者在運(yùn)行時(shí)初始化曲線的時(shí)候計(jì)算(動(dòng)態(tài)構(gòu)建路徑)。該公式較為復(fù)雜,但是多用于曲線歸一化的預(yù)處理過程中。如果進(jìn)一步完成了曲線的弧長(zhǎng)參數(shù)化,將會(huì)使用更為簡(jiǎn)單的線性長(zhǎng)度計(jì)算。

主站蜘蛛池模板: 三亚市| 芜湖市| 逊克县| 河北省| 临漳县| 华宁县| 泗水县| 福海县| 红桥区| 清水县| 日土县| 库车县| 宾阳县| 台东市| 祥云县| 普格县| 屏东县| 峨眉山市| 安康市| 宿州市| 安图县| 迁西县| 阿克苏市| 东辽县| 秭归县| 潮安县| 郸城县| 卓资县| 邯郸市| 镇原县| 惠来县| 桐庐县| 东明县| 定兴县| 华池县| 莱阳市| 崇仁县| 太保市| 永仁县| 开封县| 西乌珠穆沁旗|