• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Loop細(xì)分算法的曲面邊界控制及曲面拼接

    2012-03-07 03:01:22韓越興劉秀平
    關(guān)鍵詞:邊界點(diǎn)重合多邊形

    韓越興, 劉秀平

    (1.日本產(chǎn)業(yè)技術(shù)綜合研究所 知 能系統(tǒng)研究部門,日本 東 京 305-8568;2.大連理工大學(xué) 數(shù) 學(xué)科學(xué)學(xué)院,遼寧 大 連 116024)

    按照是否有邊界,曲面可被分為有邊界曲面(即非閉合曲面)和無邊界曲面(即閉合曲面)。在用各種方法進(jìn)行曲面造型的過程中,常常要求有邊界曲面的邊界能夠形成滿足人們要求的曲線,同時(shí)要保證原有曲面的光滑度和美感。

    本文用細(xì)分曲面的方法構(gòu)造這種類型的曲面,由于在計(jì)算機(jī)繪圖中,往往用折線近似代替曲線,因此,把模型曲面邊界要實(shí)現(xiàn)的形狀叫做邊界條件多邊形。

    細(xì)分曲面是一個(gè)網(wǎng)格序列的極限,網(wǎng)格序列則通過采用一組規(guī)則(一般是加權(quán)平均)在給定初始網(wǎng)格中插入新頂點(diǎn),并不斷重復(fù)此過程而獲得。文獻(xiàn)[1]提出了Catmull-Clark型細(xì)分模式以來,大量的細(xì)分模式及其改進(jìn)涌現(xiàn)出來。同時(shí),細(xì)分曲面造型方法的應(yīng)用也得到了廣泛推廣。

    文獻(xiàn)[2]提出了滿足邊界條件是參數(shù)曲線的細(xì)分曲面造型方法,此方法可以使最終的曲面邊界與邊界條件曲線重合,但是在應(yīng)用中要不斷地和參數(shù)曲線聯(lián)系起來,忽略了細(xì)分方法的“離散→離散”的特點(diǎn),減弱了細(xì)分模式的優(yōu)點(diǎn),增加了曲面造型的難度。

    文獻(xiàn)[3-4]提出了基于Loop細(xì)分模式的滿足邊界條件的拼接算法,認(rèn)為邊界條件是封閉的多邊形,在拼接過程中能夠和細(xì)分方法巧妙地結(jié)合起來,算法容易實(shí)現(xiàn),效率比較高。但是,文獻(xiàn)[3]中的算法要求條件過于嚴(yán)格,即要求模型曲面的所有邊界點(diǎn)在邊界條件多邊形上。在大多數(shù)情況下,曲面的邊界點(diǎn)很少是在邊界條件多邊形上,這就需要通過合理地變化曲面,使邊界點(diǎn)落在邊界條件多邊形上,并保持曲面的美感和光滑度。

    本文提出了邊界點(diǎn)不在邊界條件多邊形上的拼接算法,因?yàn)樵趯?shí)際應(yīng)用的過程中,很容易能夠保證模型曲面的一個(gè)邊界點(diǎn)和邊界條件多邊形的一個(gè)頂點(diǎn)重合,因此,本文中要求至少有一個(gè)模型曲面邊界點(diǎn)和邊界條件多邊形的頂點(diǎn)重合,同時(shí)要求模型曲面的邊界頂點(diǎn)個(gè)數(shù)少于邊界條件多邊形的頂點(diǎn)個(gè)數(shù)。實(shí)際上,既然模型曲面是要被賦予細(xì)分計(jì)算,這個(gè)模型曲面往往是比較粗糙的,因此,最后這一要求是很容易成立的。

    本文用到的Loop細(xì)分曲面是箱樣條(Box spline)曲面的推廣[4],它在曲面造型中得到廣泛應(yīng)用,例如文獻(xiàn)[5-6]。

    在曲面造型中,往往需要把2個(gè)模型曲面拼接成一張曲面。如人們想在曲面本身不變的情況下再加上一個(gè)特征曲面,這就涉及曲面之間的拼接。有的時(shí)候,在處理空間網(wǎng)格生成一個(gè)曲面時(shí),原有的模型曲面往往并不是一個(gè)封閉、完整的空間網(wǎng)格,甚至是一個(gè)有缺陷的網(wǎng)格,這就需要對模型曲面進(jìn)行修補(bǔ)來產(chǎn)生一個(gè)封閉、完整的模型曲面,這時(shí)對網(wǎng)格的修補(bǔ)也要利用曲面的拼接。拼接后模型曲面的2個(gè)部分或者2個(gè)模型曲面既要求合為一體,還要求在拼接處滿足一定的光滑性。本文提出新的算法,使2個(gè)模型曲面拼接后得到的曲面具有更好的光滑性。

    1 滿足邊界條件的拼接算法

    1.1 滿足邊界條件的拼接算法

    算法1 利用下標(biāo)法滿足邊界條件的拼接算法。

    滿足邊界條件拼接最簡單的方法,是按順序把相應(yīng)的2個(gè)點(diǎn)利用邊界點(diǎn)數(shù)組下標(biāo)和邊界條件多邊形的頂點(diǎn)數(shù)組下標(biāo)找出來并直接相連,如圖1所示。圖1中粗線是邊界條件多邊形的一部分,細(xì)線是模型曲面的邊界多邊形的一部分,黑點(diǎn)分別是邊界條件多邊形的頂點(diǎn)和模型曲面的邊界點(diǎn)。假設(shè)某個(gè)模型曲面的邊界點(diǎn)與邊界條件多邊形的某個(gè)頂點(diǎn)重合,如圖1a所示,其算法是把模型曲面邊界點(diǎn)和相應(yīng)的邊界條件多邊形上的頂點(diǎn)相重合。如圖1b所示,利用模型曲面上的邊界點(diǎn)個(gè)數(shù)和邊界條件多邊形相應(yīng)部分的頂點(diǎn)個(gè)數(shù)平均分配來重合,計(jì)算如下:

    其中,mbv為在v1和v2之間其他模型曲面邊界點(diǎn)的個(gè)數(shù);bcv為c1和c2之間其他邊界條件多邊形頂點(diǎn)的個(gè)數(shù);[]表示取四舍五入運(yùn)算符。圖1中v1、v2是模型曲面邊界點(diǎn)和邊界條件多邊形頂點(diǎn)相重合的相鄰的2個(gè)點(diǎn);c1、c2是分別與v1和v2相對的邊界條件多邊形的頂點(diǎn)。圖1中,在v1和v2之間模型曲面邊界上順序地每數(shù)一個(gè)邊界點(diǎn),則在c1和c2之間同方向順序數(shù)邊界條件多邊形的n個(gè)頂點(diǎn),然后把曲面邊界點(diǎn)移到相應(yīng)的邊界條件多邊形的頂點(diǎn)上。

    在這 里,v1、v2、c1、c2只是表示點(diǎn) 的 標(biāo) 記,后面另有其他含義。

    圖1 算法1示意圖

    下面分2種情形進(jìn)行細(xì)分。

    情形Ⅰ 如果至少1個(gè)模型曲面的邊界點(diǎn)不在邊界條件多邊形上,則整個(gè)模型曲面不進(jìn)行經(jīng)典的Loop細(xì)分。細(xì)分步驟如下:

    (1)把任意一個(gè)與邊界條件多邊形上的頂點(diǎn)重合的模型曲面邊界點(diǎn)作為第1個(gè)模型曲面的邊界點(diǎn),并以此點(diǎn)為起點(diǎn),把所有的曲面邊界點(diǎn)順序排列(圖1中按逆時(shí)針排列),存放入 Array-Boundary[]數(shù)組中。

    (2)把與 ArrayBoundary[0]位置相同的邊界條件多邊形的頂點(diǎn)作為第1個(gè)邊界條件多邊形的頂點(diǎn),并以此點(diǎn)為起點(diǎn),把所有的邊界條件多邊形的頂點(diǎn)按順序排列(圖1中按逆時(shí)針排列),存放入BoundaryConditions[]數(shù)組中。

    (3)從ArrayBoundary[0]出發(fā),遍歷 Array-Boundary[]中的點(diǎn),依次找到所有與邊界條件多邊形上的頂點(diǎn)重合的模型曲面邊界點(diǎn),如果每2個(gè)相鄰的與邊界條件多邊形上的頂點(diǎn)重合的模型曲面邊界點(diǎn)之間沒有ArrayBoundary[]其他的點(diǎn),則不予考慮;如果有,則進(jìn)行下去。

    (4)假設(shè)相鄰的與邊界條件多邊形的頂點(diǎn)重合的曲面邊界點(diǎn)為ArrayBoundary[v1]和Array-Boundary[v2],如果 ArrayBoundary[v1]是 Array-Boundary[]中最后一個(gè)點(diǎn),則v2=0;否則v2>v1。

    (5)找到與 ArrayBoundary[v1]和 Array-Boundary[v2]分別重合的 BoundaryConditions[c1]和BoundaryConditions[c2],如果 Boundary-Conditions[c1]是 BoundaryConditions[]中最后一個(gè)點(diǎn),則c2=0;否則c2>c1。

    (6)利用(1)式,把 ArrayBoundary[]點(diǎn)直接移到相應(yīng)的BoundaryConditions[]點(diǎn)的位置上。

    情形Ⅱ 如果所有的模型曲面上的邊界點(diǎn)都在邊界條件多邊形的頂點(diǎn)上,則直接應(yīng)用文獻(xiàn)[3]中的算法進(jìn)行Loop曲面拼接。

    對于算法1,當(dāng)模型曲面邊界點(diǎn)和邊界條件多邊形的頂點(diǎn)分布比較均勻時(shí),效果比較好,但是不滿足這個(gè)條件時(shí),圖形可能會變形,如圖2所示。

    圖2 模型曲面變形示意圖

    由圖2a可見,當(dāng)邊界條件多邊形(圖中用粗線表示)的頂點(diǎn)集中在右面,而模型曲面邊界點(diǎn)集中在左面。利用算法1曲面造型后,細(xì)分曲面在靠近邊界處將發(fā)生扭轉(zhuǎn)。

    另外,利用(1)式時(shí),當(dāng)mbv+1能夠整除bcv+1時(shí)效果是很好的,但是當(dāng)不能夠整除時(shí),與最后一個(gè)模型曲面邊界點(diǎn)進(jìn)行重合的邊界條件多邊形的頂點(diǎn),到終點(diǎn)之間的頂點(diǎn)可能過多或者是過少。

    特別當(dāng)邊界條件多邊形的頂點(diǎn)很多時(shí),這種情況愈發(fā)突出,這種情況可以由圖2c~圖2f可見。因此,提出了下面的算法。

    1.2 對算法1的改進(jìn)

    算法2 利用模型曲面邊界邊的累加邊長與邊界條件多邊形的累加邊長之間的關(guān)系,實(shí)現(xiàn)滿足邊界條件的細(xì)分曲面拼接。

    如圖3所示,計(jì)算v1和v2之間的模型曲面邊界邊的總長度,把c1和c2之間邊界條件多邊形的總長度也算出來,然后從v1出發(fā),順序找到曲面的邊界點(diǎn),把它的累加邊長(圖中A點(diǎn)時(shí),就是v1到A的長度,當(dāng)是B點(diǎn)時(shí),就是v1到A的長度加上A到B的長度,以此類推)比上v1到v2總模型曲面邊界邊長,記為mc。

    再找到累加邊長與c1到c2的邊界條件多邊形總長度的比分別大于mc和小于mc,并與mc最接近的邊界條件多邊形的2個(gè)頂點(diǎn)。在這2個(gè)邊界條件多邊形的頂點(diǎn)中找到與它們相對應(yīng)的模型曲面邊界點(diǎn)最近的那個(gè)點(diǎn),此點(diǎn)的位置就是相對應(yīng)的模型曲面的邊界點(diǎn)要移動(dòng)的位置。例如圖3中的A點(diǎn),通過累加邊長的方法可以找到2個(gè)邊界條件多邊形的頂點(diǎn),即A′點(diǎn)和A′與c1之間的那個(gè)點(diǎn),然后通過比較A點(diǎn)到2個(gè)點(diǎn)的距離找到最近的那個(gè)點(diǎn),即A′點(diǎn)。同樣也可以找到B點(diǎn)的對應(yīng)點(diǎn)B′點(diǎn),移動(dòng)A點(diǎn)到A′點(diǎn)、B點(diǎn)到B′點(diǎn)即可。

    圖3 算法2示意圖

    下面分2種情形進(jìn)行細(xì)分。

    情況Ⅰ 如果至少1個(gè)模型曲面的邊界點(diǎn)不在邊界條件多邊形上,則整個(gè)曲面不進(jìn)行經(jīng)典的Loop細(xì)分。細(xì)分步驟如下:

    (1)把任意一個(gè)與邊界條件多邊形上的頂點(diǎn)重合的模型曲面邊界點(diǎn)定義作為第1個(gè)曲面的邊界點(diǎn),以此點(diǎn)為起點(diǎn),把所有的模型曲面邊界點(diǎn)順序排列(在圖3中按逆時(shí)針排列),存放入Array-Boundary[]數(shù)組中。

    (2)把與 ArrayBoundary[0]位置相同的邊界條件多邊形的頂點(diǎn)作為第1個(gè)邊界條件多邊形的頂點(diǎn),并以此點(diǎn)為起點(diǎn),把所有邊界條件多邊形的頂點(diǎn)按順序排列(在圖3中按逆時(shí)針排列),存放入BoundaryConditions[]數(shù)組中。

    (3)從ArrayBoundary[0]出發(fā),遍歷 Array-Boundary[]中的點(diǎn),依次找到所有與邊界條件多邊形上的頂點(diǎn)重合的模型曲面邊界點(diǎn),如果每個(gè)相鄰的與邊界條件多邊形上的頂點(diǎn)重合的模型曲面邊界點(diǎn)之間沒有ArrayBoundary[]其他的點(diǎn),則不予考慮;如果有,則進(jìn)行下去。

    (4)假設(shè)相鄰的與邊界條件多邊形的頂點(diǎn)重合的模型曲面邊界點(diǎn)為ArrayBoundary[v1]和ArrayBoundary[v2],如果 ArrayBoundary[v1]是ArrayBoundary[]中最后一個(gè)點(diǎn),則v2=0;否則v2>v1。

    (5)找到與 ArrayBoundary[v1]和 Array-Boundary[v2]分別重合的 BoundaryConditions[c1]和BoundaryConditions[c2],如果 Boundary-Conditions[c1]是 BoundaryConditions[]中最后一個(gè)點(diǎn),則c2=0;否則c2>c1。

    (6)把 從 ArrayBoundary[v1]到 Array-Boundary[v2]之間的邊界邊總長度存入La。

    (7)把從BoundaryConditions[c1]到BoundaryConditions[c2]之間的邊界條件多邊形的總邊長存入Lb。

    (8)從 ArrayBoundary[v1+1]出發(fā),到 ArrayBoundary[v2]上一點(diǎn)為止,計(jì)算每一模型曲面邊界點(diǎn)的累加邊長與La的比值,并存放入一臨時(shí)數(shù)組TArray-m[]中。

    (9)從BoundaryConditions[c1+1]出發(fā),到BoundaryConditions[c2]上一點(diǎn)為止,計(jì)算每一個(gè)邊界條件多邊形頂點(diǎn)的累加邊長與Lb的比值,并存放入另一臨時(shí)數(shù)組TArray-b[]中。

    (10)從TArray-m[0]開始,遍歷整個(gè) TArray-m[]數(shù)組,對每個(gè) TArray-m[i](i是下標(biāo)),遍歷TArray-b[]數(shù)組,找到比TArray-m[i]小的最大的元素 TArray-b[ii](ii是下標(biāo))和下一個(gè)元素 TArray-b[ii+1],如果ii+1是 TArray-b[]的元素?cái)?shù)量,則TArray-b[ii+1]為1。

    (11)對于BoundaryConditions[c1+ii+1]和BoundaryConditions[c1+ii+2],如果其中一個(gè)點(diǎn)已經(jīng)和某個(gè)模型曲面邊界點(diǎn)重合,則把ArrayBoundary[v1+i+1]點(diǎn)移動(dòng)到另一個(gè)點(diǎn)上,否則,把 ArrayBoundary[v1+i+1]點(diǎn)移動(dòng)到離它最近的點(diǎn)。

    情形Ⅱ 如果所有的模型曲面上的邊界點(diǎn)都在邊界條件多邊形的頂點(diǎn)上,則直接應(yīng)用文獻(xiàn)[3]中的算法進(jìn)行Loop曲面的拼接。

    在情形Ⅰ的步驟(11)中,如果模型曲面邊界點(diǎn)和邊界條件多邊形頂點(diǎn)之間的位置不是很理想,可能出現(xiàn)BoundaryConditions[c1+ii+1]和BoundaryConditions[c1+ii+2]點(diǎn)都已經(jīng)和某2個(gè)模型曲面邊界點(diǎn)重合。如圖4所示,C和D本來要對應(yīng)的點(diǎn)是A′和B′,但是這2個(gè)點(diǎn)都已經(jīng)與A和B重合了。

    如果把2個(gè)模型曲面邊界點(diǎn)都和1個(gè)邊界多邊形的頂點(diǎn)重合,不可避免地出現(xiàn)褶皺,這時(shí)將用算法3來修正。

    圖4 算法2的不足示意圖

    1.3 滿足邊界條件指定對應(yīng)點(diǎn)的拼接算法

    算法3 讓模型曲面上的邊界點(diǎn)對應(yīng)邊界條件多邊形上特指的頂點(diǎn),并能對模型曲面邊界加以控制。下面分3種情形進(jìn)行細(xì)分。

    情形Ⅰ 如果至少1個(gè)模型曲面的邊界點(diǎn)不在邊界條件多邊形上,并且至少1個(gè)邊界點(diǎn)上有標(biāo)志,則整個(gè)模型曲面不進(jìn)行經(jīng)典的Loop細(xì)分。細(xì)分步驟如下:

    (1)把模型曲面的邊界點(diǎn)存放入 Array-Boundary[]數(shù)組中。

    (2)把邊界條件多邊形的頂點(diǎn)存放入BoundaryConditions[]數(shù)組中。

    (3)從ArrayBoundary[0]出發(fā),遍歷 Array-Boundary[]中的點(diǎn),如果遇到有標(biāo)志的點(diǎn),則從BoundaryConditions[0]出發(fā),遍歷BoundaryConditions[]中的點(diǎn),找到有相同標(biāo)志的點(diǎn),移動(dòng)ArrayBoundary[]中的這個(gè)點(diǎn),使2點(diǎn)重合,除去2點(diǎn)上的標(biāo)志。

    情形Ⅱ 同算法1或者算法2中的情形Ⅱ。

    情形Ⅲ 經(jīng)過情形Ⅰ、Ⅱ后,如果至少1個(gè)模型曲面的邊界點(diǎn)不在邊界條件多邊形上,同算法1或者算法2,根據(jù)具體情況而定。

    對于算法3,在實(shí)際編程中,可以作進(jìn)一步改進(jìn),把BoundaryConditions[]中全部帶有標(biāo)志的點(diǎn)取出來,放入另一個(gè)臨時(shí)數(shù)組T[]里,在程序運(yùn)行到情形Ⅰ中的步驟(3)時(shí),只要把遍歷BoundaryConditions[]的點(diǎn)改為遍歷T[]數(shù)組,這樣就減少了程序運(yùn)算時(shí)間,提高了程序效率。

    因?yàn)槲墨I(xiàn)[3]中的算法及算法1和算法2都要進(jìn)行邊界點(diǎn)排序,最好在開始就進(jìn)行點(diǎn)的排序,這樣可以增加算法3的程序通用性和效率。

    1.4 算法實(shí)現(xiàn)

    如圖5所示,利用算法1、算法2很容易構(gòu)造出滿足邊界條件的細(xì)分曲面,并且光滑程度很好,可以看出在邊界點(diǎn)分布比較均勻的情況下,用算法1和算法2實(shí)現(xiàn)的曲面很接近。

    圖5a左上角的圖形是原始模型曲面,首先用算法1實(shí)現(xiàn)曲面造型,然后用算法2實(shí)現(xiàn)同一個(gè)模型曲面的曲面造型,如圖5b所示。在圖5c中,左上角的圖形是原始模型曲面,粗線是邊界條件多邊形,圓點(diǎn)是含有標(biāo)志的點(diǎn);第2個(gè)圖形是經(jīng)過算法3后模型曲面所有的邊界點(diǎn)都在邊界條件多邊形上;經(jīng)過進(jìn)一步細(xì)分后,生成了一個(gè)滿足邊界條件的光滑曲面。

    圖5 3種算法實(shí)現(xiàn)示意圖

    2 2個(gè)曲面的拼接算法

    基于上述算法,能夠?qū)崿F(xiàn)2個(gè)模型曲面的邊界點(diǎn)不全在同一個(gè)多邊形上的曲面拼接算法。

    2.1 算法介紹

    對于模型曲面,有以下定義:

    (1)f-model。對于邊界點(diǎn)數(shù)量少的模型曲面,此曲面上的點(diǎn)數(shù)、邊數(shù)、面數(shù)都比較少。

    (2)m-model。對于邊界點(diǎn)數(shù)量多的模型曲面,此曲面上的點(diǎn)數(shù)、邊數(shù)、面數(shù)都比較多。

    本文要求至少有1對2個(gè)模型曲面邊界點(diǎn)是重合的,如果2個(gè)模型曲面的邊界點(diǎn)只有1對重合,那么,f-model邊界點(diǎn)的個(gè)數(shù)要少于 m-model邊界點(diǎn)的個(gè)數(shù)。

    如果有多對重合點(diǎn),則要求相鄰的2對fmodel與m-model重合的邊界點(diǎn)之間,f-model的邊界點(diǎn)的個(gè)數(shù)要少于相應(yīng)段上的m-model邊界點(diǎn)的個(gè)數(shù)。

    當(dāng)f-model上至少有1個(gè)邊界點(diǎn)不在 mmodel的邊界邊上時(shí),需要把m-model的邊界邊看作f-model的邊界條件多邊形,根據(jù)不同的條件和要求,利用前文中不同的算法實(shí)現(xiàn)2個(gè)模型曲面的邊界點(diǎn)都在同一個(gè)多邊形上,最后再利用文獻(xiàn)[3]的算法即可。

    2.1.1 算法4

    (1)把 m-model的邊界看作f-model的邊界要重合的邊界條件多邊形,對f-model應(yīng)用算法1、算法2中的情形Ⅰ,經(jīng)過此步,m-model和fmodel的邊界點(diǎn)在同一個(gè)多邊形上。

    (2)把 m-model的邊界看作f-model的邊界要重合的邊界條件多邊形,對f-model應(yīng)用文獻(xiàn)[3]的算法。

    (3)把f-model上與邊界點(diǎn)相連的新生成的非邊界點(diǎn),利用文獻(xiàn)[3]中的(1)式進(jìn)行調(diào)整。

    (4)如果f-model與 m-model的邊界沒有重合,回到步驟(2);否則,進(jìn)行下一步。

    (5)把2個(gè)曲面合成一個(gè)模型曲面。

    (6)把整個(gè)模型曲面進(jìn)行Loop細(xì)分,直到滿意為止。

    2.1.2 算法5

    通過上述算法,拼接后得到的曲面在非特殊點(diǎn)處,可以達(dá)到C2,而在特殊點(diǎn)處是C1光滑。

    如果要完成重合2個(gè)模型曲面的指定邊界點(diǎn),可以利用算法5。

    (1)把 m-model的邊界看作f-model的邊界要重合的邊界條件多邊形,對f-model應(yīng)用算法3中的情形Ⅰ,經(jīng)過此步,m-model和f-model上帶有標(biāo)志的邊界點(diǎn)在同1個(gè)點(diǎn)上。

    (2)利用算法1完成2個(gè)曲面的拼接。

    在上述2個(gè)算法實(shí)現(xiàn)過程中,經(jīng)常會出現(xiàn)幾個(gè)f-model邊界點(diǎn)對應(yīng)1個(gè)m-model邊界點(diǎn),應(yīng)該盡量避免,否則會出現(xiàn)大的褶皺。

    2.2 算法實(shí)現(xiàn)

    算法實(shí)現(xiàn)圖例如圖6所示。

    圖6 算法實(shí)現(xiàn)圖例

    圖6a左上角圖形是原始的2個(gè)模型曲面俯瞰圖;右上角圖形是原始的2個(gè)模型曲面的側(cè)視圖;左下角的圖形是經(jīng)過算法后f-model的邊界點(diǎn)都在m-model的邊界點(diǎn)上;右下角的圖形是2個(gè)曲面經(jīng)過拼接細(xì)分后產(chǎn)生的曲面模型。圖6b是利用拼接算法的圖例。

    3 結(jié)束語

    本文提出了多個(gè)算法來控制曲面邊界形狀,同時(shí)又能保持模型曲面的發(fā)展趨勢,在此基礎(chǔ)上又提出了細(xì)分曲面之間的拼接。根據(jù)Loop細(xì)分曲面特性,拼接后得到的曲面在非特殊點(diǎn)處可以達(dá)到C2,而在特殊點(diǎn)處是C1光滑。通過這些算法,不僅能夠控制曲面邊界的形狀,增加曲面的特征,還能填補(bǔ)曲面的漏洞。

    盡管本文所提出的算法是基于Loop細(xì)分模式,但它們很容易在其他細(xì)分模式中得到推廣。

    [1] Catmull E,Clark J.Recursively gengerated B-spline surfaces on arbitrary topological meshes[J].Computer Aided Design,1978,10(6):350-355.

    [2] Levin A.Combined subdivision schemes for the design of surfaces satisfying boundary conditions[J].Computer Aided Geometric Design,1999,16:345-354.

    [3] 韓越興,劉秀平,施錫泉.Loop細(xì)分模型的邊界拼接算法[J].大連理工大學(xué)學(xué)報(bào),2004,44(1):12-16.

    [4] Loop C.Smooth spline surfaces based on triangles[D].Department of Mathematics,University of Utah,1987.

    [5] 趙向軍.Loop型半靜態(tài)細(xì)分方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2006,18(7):929-935.

    [6] 趙付青,艾 鑫.可調(diào)自適應(yīng)三角網(wǎng)格的細(xì)分曲面造型方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(1):232-235.

    猜你喜歡
    邊界點(diǎn)重合多邊形
    多邊形中的“一個(gè)角”問題
    道路空間特征與測量距離相結(jié)合的LiDAR道路邊界點(diǎn)提取算法
    層次化點(diǎn)云邊界快速精確提取方法研究
    多邊形的藝術(shù)
    解多邊形題的轉(zhuǎn)化思想
    多邊形的鑲嵌
    電力系統(tǒng)單回線自適應(yīng)重合閘的研究
    電子制作(2017年10期)2017-04-18 07:23:07
    考慮暫態(tài)穩(wěn)定優(yōu)化的自適應(yīng)重合閘方法
    一種去除掛網(wǎng)圖像鋸齒的方法及裝置
    電腦與電信(2014年6期)2014-03-22 13:21:06
    220kV線路重合閘運(yùn)行分析
    宿迁市| 霞浦县| 五指山市| 云阳县| 白玉县| 佛教| 沂水县| 曲阜市| 丁青县| 阳泉市| 平乡县| 贵州省| 和田市| 德令哈市| 宝清县| 师宗县| 沙坪坝区| 桃源县| 天水市| 开原市| 广昌县| 长寿区| 常德市| 江陵县| 叶城县| 五常市| 桂阳县| 泾川县| 介休市| 洛隆县| 岐山县| 鄂尔多斯市| 绥芬河市| 姚安县| 青铜峡市| 固安县| 宁强县| 宜春市| 雷山县| 南靖县| 岳阳市|