Convex Hull 3D
1 개요
포인트 클라우드가 주어졌을 때 이들의 볼록껍질을 구하는 알고리즘입니다.
2 알고리즘 상세 설명
Source | Convex Hull |
---|---|
![]() |
![]() |
![]() |
![]() |
볼록 껍질을 계산하면 수많은 점들 중 최외각 경계를 결정짓는 점들을 한정지을 수 있으며, 포인트 클라우드로부터 적절한 메시를 만드는 데에도 유용하게 사용할 수 있습니다.
3 파라미터 설정 및 사용 방법
3D Object를 받아 3D object를 돌려주는 알고리즘으로, 다음 두 함수를 통해 대상 지정이 필요합니다.
const CResult SetSourceObject(Foundation::CFL3DObject &floSrc)
처리할 입력 객체를 지정합니다.const CResult SetDestinationObject(Foundation::CFL3DObject &floDst)
결과를 저장할 이미지를 지정합니다.
Destination을 설정하지 않았을 경우에는 결과가 입력 객체에 덮어씌워집니다.
또한 다음과 같은 옵션을 주어 결과를 조정할 수 있습니다.
const CResult EnablePreserveVertex(bool bPreserveVertex)
입력 객체의 점 목록을 보존하는 동작을 활성화 또는 비활성화합니다.
활성화 시 실행 전후의 점 집합이 보존됩니다.
비활성화 시에는 볼록 껍질의 꼭지점에 해당하는 점만이 점 집합에 남게 됩니다.const CResult EnableVertexRecoloring(bool bRecolorVertex)
점을 다시 채색할지를 지정합니다.
활성화 시 아래의 SetTargetVertexColor 함수로 지정한 색으로 값이 채워지며,
비활성화 시 실행 이전의 각 꼭지점 색이 그대로 보존됩니다.const CResult SetTargetVertexColor(Base::TPoint3<uint8_t> tpColor)
점 재채색 시의 색을 지정합니다.
4 예제 코드
CConvexHull3D convexHull3D;
TPoint3<uint8_t> ptNewColor(255, 255, 0);
CFL3DObject floSrc;
floSrc.Load(L"C:\\Users\\Public\\Documents\\FLImaging\\ExampleImages\\ConvexHull3D\\RandomPointsOnSphere.ply");
CFL3DObject floDst;
convexHull3D.SetSourceObject(floSrc);
convexHull3D.SetDestinationObject(floDst);
convexHull3D.EnablePreserveVertex(true);
convexHull3D.EnableVertexRecoloring(true);
convexHull3D.SetTargetVertexColor(ptNewColor);
convexHull3D.Execute();