(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ù): 221)
下載附件
分層模型圖
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,作為一條輪廓線開始的標(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 值求出每層的輪廓線,。
|