반응형
Incoming and Outgoing Halfedges 탐색하기
OpenMesh에서는 Incoming Halfedge와 Outgoing Halfedge를 탐색하기 위해 각각 vih_iter와 voh_iter를 사용합니다. 이 두 반복자는 특정 Vertex를 중심으로 Halfedge의 방향성을 탐색할 수 있도록 설계되었습니다.
- Incoming Halfedge: 특정 Vertex를 시작점으로 가지는 Halfedge입니다.
- Outgoing Halfedge: 특정 Vertex를 끝점으로 가지는 Halfedge입니다.
C++ 예제 코드
다음은 voh_iter와 vih_iter를 사용하여 특정 Vertex에서 나가는 및 들어오는 Halfedge를 탐색하고, 연결된 정보를 출력하는 예제입니다.
MyMesh mesh;
if (!OpenMesh::IO::read_mesh(mesh, "example.obj"))
{
std::cerr << "Error: Cannot read mesh file." << std::endl;
return 1;
}
MyMesh::VertexHandle vh = mesh.vertex_handle(0);
std::cout << "Outgoing Halfedges for Vertex " << vh.idx() << ":" << std::endl;
for (MyMesh::VertexOHIter voh_it = mesh.voh_iter(vh); voh_it.is_valid(); ++voh_it)
{
MyMesh::HalfedgeHandle heh = *voh_it;
MyMesh::VertexHandle to_vh = mesh.to_vertex_handle(heh);
std::cout << " Halfedge from Vertex " << vh.idx()
<< " to Vertex " << to_vh.idx() << std::endl;
}
std::cout << "Incoming Halfedges for Vertex " << vh.idx() << ":" << std::endl;
for (MyMesh::VertexIHIter vih_it = mesh.vih_iter(vh); vih_it.is_valid(); ++vih_it)
{
MyMesh::HalfedgeHandle heh = *vih_it;
MyMesh::VertexHandle from_vh = mesh.from_vertex_handle(heh);
std::cout << " Halfedge from Vertex " << from_vh.idx()
<< " to Vertex " << vh.idx() << std::endl;
}
다음 코드는 Vertex에서 나가는 Edge와 들어오는 Edge의 길이를 계산하여 출력하는 예제입니다.
MyMesh::VertexHandle vh = mesh.vertex_handle(0);
for (MyMesh::VertexOHIter voh_it = mesh.voh_iter(vh); voh_it.is_valid(); ++voh_it)
{
MyMesh::EdgeHandle eh = mesh.edge_handle(*voh_it);
float length = mesh.calc_edge_length(eh);
std::cout << " Edge ID: " << eh.idx() << ", Length: " << length << std::endl;
}
for (MyMesh::VertexIHIter vih_it = mesh.vih_iter(vh); vih_it.is_valid(); ++vih_it)
{
MyMesh::EdgeHandle eh = mesh.edge_handle(*vih_it);
float length = mesh.calc_edge_length(eh);
std::cout << " Edge ID: " << eh.idx() << ", Length: " << length << std::endl;
}
vih_iter와 voh_iter는 OpenMesh에서 Vertex와 연결된 Halfedge를 탐색하는 데 중요한 도구입니다. 위 예제는 Incoming 및 Outgoing Halfedge의 탐색 방법과 이를 활용한 분석 방법을 보여주며, 메쉬 데이터의 구조적 이해와 조작에 유용하게 사용할 수 있습니다.
반응형
'OpenMesh' 카테고리의 다른 글
Delete Face (0) | 2024.11.24 |
---|---|
Delete Vertex (0) | 2024.11.23 |
Normal (0) | 2024.11.21 |
To from vertices (0) | 2024.11.20 |
FaceEdgeIter (0) | 2024.11.19 |