FLImaging 7.9.7.9
FLImagingFoundation/LeastSquares3D.h
1#pragma once
7
8#include "FLFigureForwardDeclaration.h"
9#include "DefinitionsMathematics.h"
10
12namespace FLImaging
13{
15 namespace Foundation
16 {
17 template<typename T>
18 class CInternalLeastSquares3D;
19
25 template<typename T>
26 class FL_EXPORT CLeastSquares3D : public Base::CFLBase
27 {
28 public:
36
44
56 const CResult Clear();
57
75 const CResult Set(const Base::TPoint3<T>* pTpArrXYZ, int32_t i32Count);
76
95
114
134 const CResult Set(T* pTArrX, T* pTArrY, T* pTArrZ, int32_t i32Count);
135
153 const CResult Set(const CFLPoint3<T>* pFlpArrXYZ, int32_t i32Count);
154
170 const CResult Set(const CFLPointArray3<T>& flpaData);
171
187 const CResult Set(const CFLPointArray3<T>* pFlpaData);
188
204 const CResult Assign(const CFLPointArray3<double>& flpaData);
205
221 const CResult Assign(const CFLPointArray3<float>& flpaData);
222
238 const CResult Assign(const CFLPointArray3<double>* pFlpaData);
239
255 const CResult Assign(const CFLPointArray3<float>* pFlpaData);
256
275
294
313
332
351
370
389
408
428 const CResult Assign(int32_t* pI32X, int32_t* pI32Y, int32_t* pI32Z, int32_t i32Count);
429
449 const CResult Assign(int64_t* pI64X, int64_t* pI64Y, int64_t* pI64Z, int32_t i32Count);
450
470 const CResult Assign(float* pF32X, float* pF32Y, float* pF32Z, int32_t i32Count);
471
491 const CResult Assign(double* pF64X, double* pF64Y, double* pF64Z, int32_t i32Count);
492
510 const CResult Assign(const CFLPoint3<float>* pData, int32_t i32Count);
511
529 const CResult Assign(const CFLPoint3<double>* pData, int32_t i32Count);
530
548 const CResult Add(int32_t i32X, int32_t i32Y, int32_t i32Z);
549
567 const CResult Add(int64_t i64X, int64_t i64Y, int64_t i64Z);
568
586 const CResult Add(float f32X, float f32Y, float f32Z);
587
605 const CResult Add(double f64X, double f64Y, double f64Z);
606
622 const CResult Add(const CFLPoint3<double>& flpData);
623
639 const CResult Add(const CFLPoint3<float>& flpData);
640
656 const CResult Add(const CFLPoint3<double>* pFlpData);
657
673 const CResult Add(const CFLPoint3<float>* pFlpData);
674
690 const CResult Add(const Base::TPoint3<double>& tpData);
691
707 const CResult Add(const Base::TPoint3<float>& tpData);
708
724 const CResult Add(const Base::TPoint3<int64_t>& tpData);
725
741 const CResult Add(const Base::TPoint3<int32_t>& tpData);
742
758 const CResult Add(const Base::TPoint3<double>* pTpData);
759
775 const CResult Add(const Base::TPoint3<float>* pTpData);
776
792 const CResult Add(const Base::TPoint3<int64_t>* pTpData);
793
809 const CResult Add(const Base::TPoint3<int32_t>* pTpData);
810
829
848
867
886
905
924
943
962
982 const CResult Add(double* pArrX, double* pArrY, double* pArrZ, int32_t i32Count);
983
1003 const CResult Add(float* pArrX, float* pArrY, float* pArrZ, int32_t i32Count);
1004
1024 const CResult Add(int64_t* pArrX, int64_t* pArrY, int64_t* pArrZ, int32_t i32Count);
1025
1045 const CResult Add(int32_t* pArrX, int32_t* pArrY, int32_t* pArrZ, int32_t i32Count);
1046
1060 Base::TPoint3<T>* Get(size_t stIndex) const;
1061
1079 const CResult Get(size_t stIndex, Base::TPoint3<T>** ppTpArrXYZ) const;
1080
1100 const CResult Get(size_t stIndex, T** ppTArrX, T** ppTArrY, T** ppTArrZ) const;
1101
1119 const CResult Get(size_t stIndex, CFLPoint3<T>** ppFlpArrXYZ) const;
1120
1130 size_t GetCount();
1131
1161 const CResult GetPlane(T& tA, T& tB, T& tC, T& tD, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1162
1192 const CResult GetSphere(T& tU, T& tV, T& tW, T& tR, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1193
1217 const CResult GetSphere(CFLSphere3<double>& flspResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1218
1242 const CResult GetSphere(CFLSphere3<float>& flspResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1243
1267 const CResult GetSphere(CFLSphere3<double>* pFlspResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1268
1292 const CResult GetSphere(CFLSphere3<float>* pFlspResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1293
1317 const CResult GetCircle(CFLCircle3<double>& flcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1318
1342 const CResult GetCircle(CFLCircle3<float>& flcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1343
1367 const CResult GetCircle(CFLCircle3<double>* pFlcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1368
1392 const CResult GetCircle(CFLCircle3<float>* pFlcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1393
1421 const CResult GetLine(CFLPoint3<T>& flpDirectionVector, CFLPoint3<T>& flpBasePosition, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1422
1450 const CResult GetLine(CFLPoint3<T>* pFlpDirectionVector, CFLPoint3<T>* pFlpBasePosition, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1451
1475 const CResult GetLine(CFLLine3<double>& fllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1476
1500 const CResult GetLine(CFLLine3<float>& fllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1501
1525 const CResult GetLine(CFLLine3<double>* pFllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1526
1550 const CResult GetLine(CFLLine3<float>* pFllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3., Base::CFLArray<int64_t>* pFlaOutlierIndices = nullptr) const;
1551
1552
1553 SupportToDuplicateObject(CLeastSquares3D, *this);
1554 DeclareGetClassType();
1555
1556 private:
1557 CInternalLeastSquares3D<T>* m_pInternal;
1558 };
1559
1560 typedef CLeastSquares3D<float> CLeastSquares3DF;
1561 typedef CLeastSquares3D<double> CLeastSquares3DD;
1562 }
1563}
1564
Template type 의 배열 클래스.
Definition FLArray.h:71
FLImaging의 최상위 기저 클래스
Definition FLImagingBase/FLBase.h:36
3차원 점을 표현하는 간략화된 클래스
Definition FLImagingBase/TPoint3.h:37
FLImaging 모듈의 수행 결과 객체
Definition FLImagingBase/ResultsDef.h:1704
3차원 공간상의 원을 나타내는 클래스입니다.
Definition FLImagingFoundation/FLCircle3.h:26
3차원 직선을 표현하는 클래스
Definition FLImagingFoundation/FLLine3.h:28
3차원 점을 표현하는 클래스
Definition FLImagingFoundation/FLPoint3.h:40
3차원 점 배열을 표현하는 클래스
Definition FLImagingFoundation/FLPointArray3.h:24
구를 표현하는 클래스
Definition FLImagingFoundation/FLSphere3.h:25
3차원 최소제곱법 계산 클래스
Definition FLImagingFoundation/LeastSquares3D.h:27
const CResult Assign(const CFLPointArray3< float > &flpaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const Base::TPoint3< double > &tpData)
데이터를 추가합니다.
const CResult Assign(const Base::CFLArray< Base::TPoint3< float > > &flaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Assign(const CFLPointArray3< double > &flpaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult GetLine(CFLLine3< float > *pFllResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 직선을 찾는 함수
Base::TPoint3< T > * Get(size_t stIndex) const
지정한 인덱스의 데이터를 얻어 옵니다.
const CResult GetCircle(CFLCircle3< double > &flcResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 원을 찾는 함수
const CResult GetSphere(CFLSphere3< double > *pFlspResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 구를 찾는 함수
const CResult Assign(const Base::CFLArray< Base::TPoint3< int64_t > > *pFlaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult GetLine(CFLLine3< double > *pFllResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 직선을 찾는 함수
const CResult Get(size_t stIndex, T **ppTArrX, T **ppTArrY, T **ppTArrZ) const
지정한 인덱스의 데이터를 얻어 옵니다.
const CResult Add(int32_t *pArrX, int32_t *pArrY, int32_t *pArrZ, int32_t i32Count)
데이터를 복사하여 추가합니다.
const CResult GetLine(CFLLine3< float > &fllResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 직선을 찾는 함수
const CResult Assign(int32_t *pI32X, int32_t *pI32Y, int32_t *pI32Z, int32_t i32Count)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const CFLPoint3< double > &flpData)
데이터를 추가합니다.
const CResult Assign(const CFLPoint3< double > *pData, int32_t i32Count)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(int32_t i32X, int32_t i32Y, int32_t i32Z)
데이터를 추가합니다.
const CResult Add(float *pArrX, float *pArrY, float *pArrZ, int32_t i32Count)
데이터를 복사하여 추가합니다.
const CResult Assign(int64_t *pI64X, int64_t *pI64Y, int64_t *pI64Z, int32_t i32Count)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const Base::TPoint3< int32_t > &tpData)
데이터를 추가합니다.
const CResult GetLine(CFLPoint3< T > &flpDirectionVector, CFLPoint3< T > &flpBasePosition, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 직선을 찾는 함수 로 표현되는 3차원 직선에서 정규화된 방향벡터 A와 직선 위의 한 점 B를 얻어옵니다.
const CResult GetSphere(CFLSphere3< double > &flspResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 구를 찾는 함수
const CResult Set(const CFLPointArray3< T > &flpaData)
데이터를 할당하는 함수로, 배열 객체를 새로 복사 생성하지 않고 파라미터의 배열 포인터 주소만 할당합니다.
const CResult Assign(const CFLPointArray3< double > *pFlpaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const Base::TPoint3< int32_t > *pTpData)
데이터를 추가합니다.
const CResult Assign(const Base::CFLArray< Base::TPoint3< double > > *pFlaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Set(const CFLPointArray3< T > *pFlpaData)
데이터를 할당하는 함수로, 배열 객체를 새로 복사 생성하지 않고 파라미터의 배열 포인터 주소만 할당합니다.
const CResult Add(const Base::CFLArray< Base::TPoint3< int32_t > > *pFlaData)
데이터를 추가합니다.
const CResult Add(float f32X, float f32Y, float f32Z)
데이터를 추가합니다.
const CResult GetPlane(T &tA, T &tB, T &tC, T &tD, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 면을 찾는 함수 면의 방정식 에 해당하는 계수를 얻어옵니다.
const CResult Assign(const CFLPoint3< float > *pData, int32_t i32Count)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult GetCircle(CFLCircle3< float > *pFlcResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 원을 찾는 함수
const CResult Assign(const CFLPointArray3< float > *pFlpaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Get(size_t stIndex, CFLPoint3< T > **ppFlpArrXYZ) const
지정한 인덱스의 데이터를 얻어 옵니다.
const CResult Assign(const Base::CFLArray< Base::TPoint3< int64_t > > &flaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult GetCircle(CFLCircle3< double > *pFlcResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 원을 찾는 함수
const CResult Assign(const Base::CFLArray< Base::TPoint3< int32_t > > *pFlaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult GetSphere(CFLSphere3< float > &flspResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 구를 찾는 함수
const CResult GetSphere(CFLSphere3< float > *pFlspResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 구를 찾는 함수
const CResult Add(double f64X, double f64Y, double f64Z)
데이터를 추가합니다.
const CResult Assign(double *pF64X, double *pF64Y, double *pF64Z, int32_t i32Count)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const Base::CFLArray< Base::TPoint3< int32_t > > &flaData)
데이터를 추가합니다.
const CResult Set(const Base::CFLArray< Base::TPoint3< T > > *pFlaData)
데이터를 할당하는 함수로, 배열 객체를 새로 복사 생성하지 않고 파라미터의 배열 포인터 주소만 할당합니다.
const CResult Add(double *pArrX, double *pArrY, double *pArrZ, int32_t i32Count)
데이터를 복사하여 추가합니다.
const CResult Add(const Base::TPoint3< float > &tpData)
데이터를 추가합니다.
const CResult Assign(const Base::CFLArray< Base::TPoint3< double > > &flaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Assign(const Base::CFLArray< Base::TPoint3< float > > *pFlaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const Base::TPoint3< int64_t > *pTpData)
데이터를 추가합니다.
const CResult Assign(const Base::CFLArray< Base::TPoint3< int32_t > > &flaData)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const CFLPoint3< float > *pFlpData)
데이터를 추가합니다.
const CResult Add(const Base::CFLArray< Base::TPoint3< double > > &flaData)
데이터를 추가합니다.
const CResult GetCircle(CFLCircle3< float > &flcResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 원을 찾는 함수
const CResult Add(const Base::CFLArray< Base::TPoint3< int64_t > > *pFlaData)
데이터를 추가합니다.
const CResult Add(const Base::TPoint3< float > *pTpData)
데이터를 추가합니다.
const CResult GetSphere(T &tU, T &tV, T &tW, T &tR, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 구를 찾는 함수 구의 방정식 에 해당하는 계수를 얻어옵니다.
const CResult Assign(float *pF32X, float *pF32Y, float *pF32Z, int32_t i32Count)
데이터를 할당하는 함수로, 배열을 복사 생성합니다.
const CResult Add(const Base::TPoint3< int64_t > &tpData)
데이터를 추가합니다.
const CResult Add(const Base::CFLArray< Base::TPoint3< float > > *pFlaData)
데이터를 추가합니다.
const CResult Get(size_t stIndex, Base::TPoint3< T > **ppTpArrXYZ) const
지정한 인덱스의 데이터를 얻어 옵니다.
const CResult Set(const Base::CFLArray< Base::TPoint3< T > > &flaData)
데이터를 할당하는 함수로, 배열 객체를 새로 복사 생성하지 않고 파라미터의 배열 포인터 주소만 할당합니다.
const CResult Set(T *pTArrX, T *pTArrY, T *pTArrZ, int32_t i32Count)
데이터를 할당하는 함수로, 배열 객체를 새로 복사 생성하지 않고 파라미터의 배열 포인터 주소만 할당합니다.
const CResult Set(const CFLPoint3< T > *pFlpArrXYZ, int32_t i32Count)
데이터를 할당하는 함수로, 배열 객체를 새로 복사 생성하지 않고 파라미터의 배열 포인터 주소만 할당합니다.
const CResult Add(const Base::CFLArray< Base::TPoint3< double > > *pFlaData)
데이터를 추가합니다.
const CResult GetLine(CFLLine3< double > &fllResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 직선을 찾는 함수
const CResult Add(const Base::CFLArray< Base::TPoint3< float > > &flaData)
데이터를 추가합니다.
const CResult Clear()
파라미터를 초기화합니다.
const CResult Add(const Base::CFLArray< Base::TPoint3< int64_t > > &flaData)
데이터를 추가합니다.
const CResult Add(const Base::TPoint3< double > *pTpData)
데이터를 추가합니다.
virtual ~CLeastSquares3D()
기본 소멸자
const CResult Set(const Base::TPoint3< T > *pTpArrXYZ, int32_t i32Count)
데이터를 할당하는 함수로, 배열 객체를 새로 복사 생성하지 않고 파라미터의 배열 포인터 주소만 할당합니다.
const CResult Add(int64_t *pArrX, int64_t *pArrY, int64_t *pArrZ, int32_t i32Count)
데이터를 복사하여 추가합니다.
const CResult GetLine(CFLPoint3< T > *pFlpDirectionVector, CFLPoint3< T > *pFlpBasePosition, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3., Base::CFLArray< int64_t > *pFlaOutlierIndices=nullptr) const
각각의 점들과 거리 차이가 최소가 되는 직선을 찾는 함수 로 표현되는 3차원 직선에서 정규화된 방향벡터 A와 직선 위의 한 점 B를 얻어옵니다.
const CResult Add(int64_t i64X, int64_t i64Y, int64_t i64Z)
데이터를 추가합니다.
const CResult Add(const CFLPoint3< double > *pFlpData)
데이터를 추가합니다.
size_t GetCount()
데이터 개수를 얻어 옵니다.
const CResult Add(const CFLPoint3< float > &flpData)
데이터를 추가합니다.
Definition FLImagingFoundation/AlgorithmBase.h:16