1
這是我第一次使用OpenMesh,我正在嘗試做一個非常簡單的函數來計算網格中所有頂點的化合價。計算網格的頂點化合價OpenMesh
我第一次嘗試看起來像這樣
Mesh::VertexIter vIterator, vBegin, vEnd;
Mesh::HalfedgeHandle initialEdge, nextEdge;
vBegin = mesh_.vertices_begin();
vEnd = mesh_.vertices_end();
int vertexValence;
for (vIterator = vBegin; vIterator != vEnd; ++vIterator) {
initialEdge = mesh_.halfedge_handle(vIterator.handle());
nextEdge = mesh_.next_halfedge_handle(initialEdge);
vertexValence = 0;
while (nextEdge != initialEdge) {
vertexValence++;
nextEdge = mesh_.next_halfedge_handle(nextEdge);
}
if(vIterator == vBegin){
std::cout << "myCount = " << vertexValence << std::endl; // prints 2
std::cout << "meshCount = "<< mesh_.valence(vIterator)<< std::endl; // prints 10
}
}
的價數是從什麼的絲網目數(見性病::法院)不同。我知道我錯過了一些東西,誰能看到錯誤在哪裏?
UPDATE
我做它通過使用下面的代碼
for(vIterator = vBegin; vIterator != vEnd; ++vIterator){
vertexValence = 0;
for (voIterator = mesh_.voh_iter(vIterator); voIterator; ++voIterator) {
vertexValence++;
}
if(vIterator == vBegin){
std::cout << "myCount = " << vertexValence << std::endl;
std::cout << "openMeshCount = " << mesh_.valence(vIterator) << std::endl;
}
}
現在,這兩個號碼相匹配的工作。不過,我想知道是否可以在我放入的第一個代碼中實現相同的功能。這個想法應該是一樣的。
是的,我剛剛意識到我正在用我的第一個代碼繞過一個三角形。感謝這一點,我認爲我的第二個代碼背後有類似的東西。 – BRabbit27 2013-02-26 18:59:59