Distance Transform 3D
1 개요
카메라의 위치와 방향 정보가 주어졌을 때 카메라에 의해 결정된 축에 대한 정점들의 거리를 측정하는 알고리즘입니다.
2 알고리즘 상세 설명
Source Data | Result Data |
---|---|
![]() |
![]() |
구체적으로, 카메라의 위치를 원점으로, 카메라의 방향을 z축으로, 그리고 Up vector를 통해 카메라의 나머지 축을 결정짓게 되며, Distance Transform 알고리즘은 카메라 좌표계에 대한 3D 객체의 새 좌표를 계산하는 알고리즘으로 볼 수 있습니다.
3 파라미터 설정 및 사용 방법
다음 함수들을 통해 카메라의 위치/방향 정보를 결정합니다.
const CResult SetPosition(const Base::TPoint3<float>& tpXYZ)
const CResult SetDirection(const Base::TPoint3<float>& tpDirection)
const CResult SetUpVector(const Base::TPoint3<float>& tpUp)
이후 다음 함수를 통해 거리 정보를 추출할 3D 객체를 결정합니다.
const CResult SetSourceObject(Foundation::CFL3DObject &fl3DOD)
계산된 정보는 다음 함수를 통해 추출할 수 있습니다.
const CResult GetResultDistanceScalar(Base::CFLArray<float>& arrResult) const
const CResult GetResultDistanceAxis(Base::CFLArray<Base::TPoint3<float>>& arrResult) const
const CResult GetResultDistanceAxis(Base::CFLArray<float>& arrResultX, Base::CFLArray<float>& arrResultY, Base::CFLArray<float>& arrResultZ) const
const CResult GetResultDistanceAxis(Base::CFLArray<float>& arrResultAxis, EAxis eAxis) const
4 예제 코드
CDistanceTransform3D distanceTransform3D;
CFL3DObject floSource;
floSource.Load(L"C:/Users/Public/Documents/FLImaging/ExampleImages/DistanceTransform3D/binary-vertex.ply");
TPoint3<float> tpPosition(0.000000, 0.000000, 0.000000);
TPoint3<float> tpDirection(0.000000, 0.000000, -1.000000);
TPoint3<float> tpUpVector(0.000000, 1.000000, 0.000000);
distanceTransform3D.SetPosition(tpPosition);
distanceTransform3D.SetDirection(tpDirection);
distanceTransform3D.SetUpVector(tpUpVector);
distanceTransform3D.SetSourceObject(floSource);
distanceTransform3D.Execute();
CFLArray<TPoint3<float>> arrResult;
distanceTransform3D.GetResultDistanceAxis(arrResult);