(1)分層輪廓線的生成
根據(jù)排序后的頂點(diǎn)可以得出頂點(diǎn)的最大 z 值和頂點(diǎn)的最小 z 值。分層平面在這個(gè)區(qū)間進(jìn)行分層。在圖 的數(shù)據(jù)結(jié)構(gòu)中,數(shù)據(jù)是用頂點(diǎn)和邊的形式存儲(chǔ),分層平面與模型的求交就是平面與邊的求交過(guò)程。由于邊是按照右手螺旋順序存儲(chǔ),根據(jù)邊的起點(diǎn)和終點(diǎn)可以方便地找出該邊的剩余半邊或后序邊。在求分層截面的輪廓線時(shí),只需要根據(jù)一定的順序求出平面與各邊的交點(diǎn),連接各交點(diǎn)按順序輸出就是一條封閉的截面輪廓折線。
分層模型圖,分層平面與三角面片相交
2.jpg (38.84 KB, 下載次數(shù): 220)
下載附件
分層模型圖
2013-1-19 20:00 上傳
得出分層平面與邊<3,1>的交點(diǎn)后,下一個(gè)與分層平面求交的邊一定在它的剩余半邊<1,3>所在平面內(nèi)(是它的后序邊或者是前接邊),然后找到<1,3>的后序邊<3,4>。算法判斷分層平面是否與<3,4>相交。如果分層平面與<3,4>相交(分層平面是 Z1 平面),下一條與分層平面相交的邊一定在它的剩余半邊<4,3>所在三角面片上,然后接著查找<4,3>的后序邊;如果分層平面與<3,4>不相交(分層平面是 Z2 平面),那么相交的邊一定是<3,4>的后序邊<4,1>。當(dāng)求出分層平面與<4,1>的交點(diǎn)后,下一條與分層平面相交的邊一定在它的剩余半邊<1,4>所在三角面片上,接著查找<1,4>的后序邊<4,5>。按照以上方法可以依次求出分層平面與其它邊的交點(diǎn),直到回到起點(diǎn)。
2、快速查找第一條與平面相交邊的算法
頂點(diǎn)數(shù)據(jù)是根據(jù) Z 值從小到大排序的,在分層前這些頂點(diǎn)不必進(jìn)行分組。首先,在Z 值小于分層截面的頂點(diǎn)數(shù)據(jù)中取 Z 值最小的頂點(diǎn)。進(jìn)入該頂點(diǎn)所在鏈表,依次根據(jù)該頂點(diǎn)相關(guān)邊的信息判斷該邊是否與分層截面相交。若找到第一條相交邊,就標(biāo)記該邊的flag=1,作為一條輪廓線開(kāi)始的標(biāo)記,然后利用圖 3.5 中的算法求出輪廓線,直到遇到標(biāo)記 flag=1 邊,說(shuō)明回到了起點(diǎn),這時(shí)修改該邊的 flag=0,然后進(jìn)入下一個(gè)分層求輪廓的過(guò)程。若是遍歷該頂點(diǎn)的所有邊都沒(méi)有交點(diǎn),該頂點(diǎn)在以后分層求交時(shí)不再考慮,選擇僅大于該頂點(diǎn)的下一個(gè)頂點(diǎn)的邊鏈表,進(jìn)行邊和分層面、邊和邊的求交。頂點(diǎn)存儲(chǔ)時(shí)根據(jù) Z 值從小到大有序存儲(chǔ),頂點(diǎn)的選擇可以依次進(jìn)行,不必比較。使用該方法可以減少分層平面與三角面片相交的判斷次數(shù),加快了分層速度。這樣就可根據(jù)從小到大的 Z 值求出每層的輪廓線。
|