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
}
}
원자가 수가 메쉬 카운트 (표준 : : cout을 참조) 어떤 다른처럼
내 첫 번째 시도가 보인다. 나는 뭔가를 놓친다는 것을 알고있다.
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