본문 바로가기
OpenMesh

FaceVertexIter

by DarkRock 2024. 11. 18.
반응형

FaceVertexIter 사용법

FaceVertexIter는 OpenMesh에서 특정 Face(면)를 구성하는 Vertex(정점)를 순회하는 데 사용하는 이터레이터입니다. 이를 통해 Face를 구성하는 모든 Vertex를 탐색하고, 해당 Vertex의 위치나 속성에 접근할 수 있습니다. 메쉬의 기하학적 특징을 분석하거나, Face 기반 연산을 수행할 때 매우 유용합니다.
FaceVertexIter는 주어진 Face에 포함된 모든 Vertex를 순회하면서, 각 Vertex의 핸들, 좌표, 또는 다른 속성을 탐색할 수 있습니다. fv_iter() 함수를 통해 FaceVertexIter를 초기화할 수 있으며, 반복문으로 간단하게 모든 Vertex를 방문할 수 있습니다.

 

 

 


C++ 예제 코드

다음은 OpenMesh에서 FaceVertexIter를 사용해 특정 Face를 구성하는 모든 Vertex를 순회하며 각 Vertex의 ID와 좌표를 출력하는 예제입니다.

 MyMesh mesh;

    if (!OpenMesh::IO::read_mesh(mesh, "example.obj")) 
    {
        std::cerr << "Error: Cannot read mesh file." << std::endl;
        return 1;
    }

    MyMesh::FaceHandle fh = mesh.face_handle(0);
    for (MyMesh::FaceVertexIter fv_it = mesh.fv_iter(fh); fv_it.is_valid(); ++fv_it) 
    { 
        MyMesh::VertexHandle vh = *fv_it; 
        MyMesh::Point pos = mesh.point(vh);
        std::cout << "Vertex ID: " << vh.idx()
                  << " Position: (" << pos[0] << ", " << pos[1] << ", " << pos[2] << ")" << std::endl;
    }

 


코드 설명

- mesh.face_handle(0)를 사용해 ID가 0인 Face를 선택합니다. 이 Face를 구성하는 Vertex를 탐색합니다.
- mesh.fv_iter(fh)를 통해 FaceVertexIter를 초기화하고, Face를 구성하는 모든 Vertex를 순회합니다.
- fv_it를 사용하여 현재 Vertex의 핸들(VertexHandle)을 가져온 후 Vertex의 ID(vh.idx())와 위치 좌표(mesh.point(vh))를 출력합니다.

 


FaceVertexIter 활용 예시

- Face 중심 계산: Face를 구성하는 Vertex의 평균 좌표를 계산하여 Face의 중심점을 구할 수 있습니다.
- Face를 구성하는 Vertex를 변형하거나, 속성을 변경해 메쉬의 기하학적 구조를 수정합니다.

반응형

'OpenMesh' 카테고리의 다른 글

To from vertices  (0) 2024.11.20
FaceEdgeIter  (0) 2024.11.19
FaceFaceIter  (2) 2024.11.17
VertexFaceIter  (1) 2024.11.16
VertexVertexIter  (0) 2024.11.15