使用CGAL查詢輸入三角網格模型獨立模型個數

2022-08-13 01:09:13 字數 836 閱讀 9221

在對三角網格模型進行切分並且對切分模型三角化之後,可能會遇到分塊數 > 2的情況,對於這種情況我們就需要得到各個分塊的數量,並且將他們重組成獨立的三角網格模型。

思路如下:

建立乙個存放三角網格面的堆疊,遍歷模型的所有的三角網格面,對每乙個三角形都搜尋與之相鄰的三個三角形(每個邊對應乙個三角形),將這些三角形放入堆疊,直到堆疊為空表明已經找到屬於同乙個塊的三角網格。再遍歷以上過程,直到所有的三角網格都有屬於自己的塊。

在cgal的polyhedron_3.h標頭檔案的facet類裡加入乙個int型標誌位mask,並且在構造器裡將其初始化為0。接下來是具體的搜尋過程,trilist是乙個facet_handle型別的堆疊。

int noc = 0

; facet_handle t , s;

//所有的facet的mask都為0

for(facet_iterator it = p1.facets_begin() , end =p1.facets_end() ;

it != end;it++)

if((s=t->halfedge()->next()->opposite()->facet()) != null && (!s->mask))

if((s=t->halfedge()->prev()->opposite()->facet()) != null && (!s->mask)) }}

//std::cout << "mask of facet is "<< it->mask <}

std::cout

<< "

number of components is

"<< noc <

三角網格(3)

三角網可在三角形或頂點級儲存額外資訊。紋理對映座標 紋理對映是將點陣圖 稱作 紋理圖 或簡稱 紋理 貼到多邊形表面的過程。這裡只給出乙個高度簡化的解釋 我們希望將2d紋理貼到多邊形表面上,同時考慮多邊形在攝像機空間的方向。對多邊形中每個需要渲染的畫素都要計算2d紋理對映座標,這些座標用以索引紋理圖,...

三角網格(2)

三角帶 三角帶是乙個三角形列表,其中每個三角形都與前乙個三角形共享一邊,圖14.2顯示了乙個三角帶的例子。注意頂點列出的順序使得每三個連續的點都能構成乙個三角形。例如 1 頂點1 2 3構成第乙個三角形。2 頂點2 3 4構成第二個三角形。3 頂點3 4 5構成第三個三角形。在圖14.2中,頂點以構...

基於CGAL的Delaunay三角網應用

目錄2.功能設計 3.功能實現 參考 本應用基於cgal中的delaunay進行三角網構建,通過pyqt5和vtk進行介面展示 cgal bindings python包 是cgal通過swig進行的python繫結,讓python使用者可以使用cgal庫.本應用使用cgal.cgal triang...