FLImaging 7.8.25.3
LeastSquares.h
1#pragma once
7
8
9#include "FLFigureForwardDeclaration.h"
10#include "DefinitionsMathematics.h"
11
13namespace FLImaging
14{
16 namespace Foundation
17 {
18 template<typename T>
19 class CInternalLeastSquares;
20
30 {
36
42
48 };
49
84 template<typename T>
85 class FL_EXPORT CLeastSquares : public Base::CFLBase
86 {
87 public:
95
102 virtual ~CLeastSquares();
103
115 const CResult Clear();
116
134 const CResult Set(const Base::TPoint<T>* pTpArrXY, int32_t i32Count);
135
154
172 const CResult Set(const Base::CFLArray<Base::TPoint<T>>* pFlaData);
173
191 const CResult Set(T* pTArrX, T* pTArrY, int32_t i32Count);
192
208 const CResult Assign(const CFLFigureArray& flfaData);
209
225 const CResult Assign(const CFLFigureArray* pFlfaData);
226
242 const CResult Assign(const CFLPointArray& flpaData);
243
259 const CResult Assign(const CFLPointArray* pFlpaData);
260
279
298
317
336
355
374
393
412
430 const CResult Assign(int32_t* pI32X, int32_t* pI32Y, int32_t i32Count);
431
449 const CResult Assign(int64_t* pI64X, int64_t* pI64Y, int32_t i32Count);
450
468 const CResult Assign(float* pF32X, float* pF32Y, int32_t i32Count);
469
487 const CResult Assign(double* pF64X, double* pF64Y, int32_t i32Count);
488
504 const CResult Assign(int32_t* pArr2I32XY, int32_t i32Count);
505
521 const CResult Assign(int64_t* pArr2I64XY, int32_t i32Count);
522
538 const CResult Assign(float* pArr2F32XY, int32_t i32Count);
539
555 const CResult Assign(double* pArr2F64XY, int32_t i32Count);
556
574 const CResult Assign(const CFLPoint<int32_t>* pData, int32_t i32Count);
575
593 const CResult Assign(const CFLPoint<int64_t>* pData, int32_t i32Count);
594
612 const CResult Assign(const CFLPoint<float>* pData, int32_t i32Count);
613
631 const CResult Assign(const CFLPoint<double>* pData, int32_t i32Count);
632
648 const CResult Add(int32_t i32X, int32_t i32Y);
649
665 const CResult Add(int64_t i64X, int64_t i64Y);
666
682 const CResult Add(float f32X, float f32Y);
683
699 const CResult Add(double f64X, double f64Y);
700
716 const CResult Add(const CFLPoint<double>& flpData);
717
733 const CResult Add(const CFLPoint<float>& flpData);
734
750 const CResult Add(const CFLPoint<int64_t>& flpData);
751
767 const CResult Add(const CFLPoint<int32_t>& flpData);
768
784 const CResult Add(const CFLPoint<double>* pFlpData);
785
801 const CResult Add(const CFLPoint<float>* pFlpData);
802
818 const CResult Add(const CFLPoint<int64_t>* pFlpData);
819
835 const CResult Add(const CFLPoint<int32_t>* pFlpData);
836
852 const CResult Add(const Base::TPoint<double>& tpData);
853
869 const CResult Add(const Base::TPoint<float>& tpData);
870
886 const CResult Add(const Base::TPoint<int64_t>& tpData);
887
903 const CResult Add(const Base::TPoint<int32_t>& tpData);
904
920 const CResult Add(const Base::TPoint<double>* pTpData);
921
937 const CResult Add(const Base::TPoint<float>* pTpData);
938
954 const CResult Add(const Base::TPoint<int64_t>* pTpData);
955
971 const CResult Add(const Base::TPoint<int32_t>* pTpData);
972
988 const CResult Add(const CFLFigureArray& flfaData);
989
1005 const CResult Add(const CFLFigureArray* pFlfaData);
1006
1022 const CResult Add(const CFLPointArray& flpaData);
1023
1039 const CResult Add(const CFLPointArray* pFlpaData);
1040
1059
1078
1097
1116
1135
1154
1173
1192
1210 const CResult Add(double* pArrX, double* pArrY, int32_t i32Count);
1211
1229 const CResult Add(float* pArrX, float* pArrY, int32_t i32Count);
1230
1248 const CResult Add(int64_t* pArrX, int64_t* pArrY, int32_t i32Count);
1249
1267 const CResult Add(int32_t* pArrX, int32_t* pArrY, int32_t i32Count);
1268
1282 Base::TPoint<T>* Get(size_t stIndex) const;
1283
1301 const CResult Get(size_t stIndex, T** ppTArrX, T** ppTArrY) const;
1302
1312 size_t GetCount();
1313
1337 const CResult GetPoly(int32_t i32Degree, T* pTResult, T* pTRSquare = nullptr, ECoefficientOrder eOrder = ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy = ELeastSqauresAccuracy_TemplateType);
1338
1362 const CResult GetPoly(int32_t i32Degree, Base::CFLArray<T>& flaResult, T* pTRSquare = nullptr, ECoefficientOrder eOrder = ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy = ELeastSqauresAccuracy_TemplateType);
1363
1387 const CResult GetPoly(int32_t i32Degree, Base::CFLArray<T>* pFlaResult, T* pTRSquare = nullptr, ECoefficientOrder eOrder = ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy = ELeastSqauresAccuracy_TemplateType);
1388
1408 const CResult GetCircle(CFLCircle<T>& flcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1409
1429 const CResult GetCircle(CFLCircle<T>* pFlcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1430
1450 const CResult GetEllipse(CFLEllipse<T>& fleResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1451
1471 const CResult GetEllipse(CFLEllipse<T>* pFleResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1472
1492 const CResult GetLine(CFLLine<T>& fllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1493
1513 const CResult GetLine(CFLLine<T>* pFllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1514
1515
1516 SupportToDuplicateObject(CLeastSquares, *this);
1517 DeclareGetClassType();
1518
1519 private:
1520 CInternalLeastSquares<T>* m_pInternal;
1521 };
1522
1523 typedef CLeastSquares<float> CLeastSquaresF;
1524 typedef CLeastSquares<double> CLeastSquaresD;
1525 }
1526}
1527
Template type array class.
Definition FLArray.h:71
Top-level base class of FLImaging.
Definition FLBase.h:36
Simplified class representing a point.
Definition TPoint.h:37
FLImaging module execution result object.
Definition ResultsDef.h:1704
A class representing circle.
Definition FLCircle.h:25
A class representing ellipse.
Definition FLEllipse.h:25
A base class representing array of figure.
Definition FLFigureArray.h:27
A class representing a line.
Definition FLLine.h:25
A base class representing array of figure.
Definition FLPointArray.h:26
A class representing a point.
Definition FLPoint.h:24
A file of class calculating least squares and trends line.
Definition LeastSquares.h:86
const CResult Add(int32_t i32X, int32_t i32Y)
Add data.
const CResult Assign(double *pF64X, double *pF64Y, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult GetPoly(int32_t i32Degree, Base::CFLArray< T > *pFlaResult, T *pTRSquare=nullptr, ECoefficientOrder eOrder=ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy=ELeastSqauresAccuracy_TemplateType)
Finds the polynomial and returns the point.
const CResult GetCircle(CFLCircle< T > &flcResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3.) const
A function to find the circle with the minimum distance difference between each point.
const CResult Assign(const Base::CFLArray< Base::TPoint< int32_t > > &flaData)
A function that allocates data and creates a copy of the array.
const CResult Assign(int64_t *pI64X, int64_t *pI64Y, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Add(const CFLPoint< float > *pFlpData)
Add data.
const CResult Assign(const Base::CFLArray< Base::TPoint< float > > &flaData)
A function that allocates data and creates a copy of the array.
const CResult Assign(float *pArr2F32XY, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Assign(const CFLPoint< int64_t > *pData, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Add(const Base::CFLArray< Base::TPoint< int32_t > > *pFlaData)
Add data.
const CResult GetPoly(int32_t i32Degree, Base::CFLArray< T > &flaResult, T *pTRSquare=nullptr, ECoefficientOrder eOrder=ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy=ELeastSqauresAccuracy_TemplateType)
Finds the polynomial and returns the point.
const CResult Add(const CFLPoint< int64_t > *pFlpData)
Add data.
const CResult Assign(int32_t *pArr2I32XY, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Add(const Base::CFLArray< Base::TPoint< float > > *pFlaData)
Add data.
const CResult Assign(const Base::CFLArray< Base::TPoint< double > > &flaData)
A function that allocates data and creates a copy of the array.
const CResult Assign(const CFLPointArray &flpaData)
A function that allocates data and creates a copy of the array.
CLeastSquares()
Default constructor.
const CResult Add(const CFLPoint< int32_t > &flpData)
Add data.
const CResult Add(const CFLFigureArray *pFlfaData)
Add data.
const CResult Add(const Base::CFLArray< Base::TPoint< int64_t > > &flaData)
Add data.
const CResult GetCircle(CFLCircle< T > *pFlcResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3.) const
A function to find the circle with the minimum distance difference between each point.
const CResult Add(const Base::CFLArray< Base::TPoint< double > > &flaData)
Add data.
const CResult Add(const CFLPoint< float > &flpData)
Add data.
const CResult Assign(double *pArr2F64XY, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Add(const Base::TPoint< int32_t > &tpData)
Add data.
const CResult Add(const Base::TPoint< int32_t > *pTpData)
Add data.
const CResult Assign(const CFLFigureArray *pFlfaData)
A function that allocates data and creates a copy of the array.
const CResult Assign(const Base::CFLArray< Base::TPoint< double > > *pFlaData)
A function that allocates data and creates a copy of the array.
const CResult GetEllipse(CFLEllipse< T > *pFleResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3.) const
A function to find the ellipse with the minimum distance difference between each point.
const CResult Add(const Base::TPoint< int64_t > &tpData)
Add data.
const CResult Assign(int32_t *pI32X, int32_t *pI32Y, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Add(const Base::TPoint< float > &tpData)
Add data.
const CResult Assign(const CFLPointArray *pFlpaData)
A function that allocates data and creates a copy of the array.
const CResult Add(int32_t *pArrX, int32_t *pArrY, int32_t i32Count)
Copy and add data.
Base::TPoint< T > * Get(size_t stIndex) const
Get the data of the specified index.
const CResult Add(const Base::CFLArray< Base::TPoint< double > > *pFlaData)
Add data.
const CResult Assign(const Base::CFLArray< Base::TPoint< float > > *pFlaData)
A function that allocates data and creates a copy of the array.
const CResult Add(const CFLPoint< int64_t > &flpData)
Add data.
const CResult Add(int64_t i64X, int64_t i64Y)
Add data.
const CResult Add(const Base::CFLArray< Base::TPoint< float > > &flaData)
Add data.
const CResult GetPoly(int32_t i32Degree, T *pTResult, T *pTRSquare=nullptr, ECoefficientOrder eOrder=ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy=ELeastSqauresAccuracy_TemplateType)
Finds the polynomial and returns the point.
const CResult Add(const Base::TPoint< float > *pTpData)
Add data.
const CResult Set(const Base::CFLArray< Base::TPoint< T > > *pFlaData)
As a function that allocates data, it allocates only the array pointer address of the parameter witho...
const CResult Add(const CFLPoint< double > &flpData)
Add data.
const CResult GetLine(CFLLine< T > &fllResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3.) const
A function to find the line with the minimum distance difference between each point.
const CResult Add(int64_t *pArrX, int64_t *pArrY, int32_t i32Count)
Copy and add data.
const CResult Add(double *pArrX, double *pArrY, int32_t i32Count)
Copy and add data.
const CResult Add(const Base::CFLArray< Base::TPoint< int32_t > > &flaData)
Add data.
const CResult Add(const Base::TPoint< int64_t > *pTpData)
Add data.
const CResult Add(double f64X, double f64Y)
Add data.
const CResult Add(const CFLPoint< double > *pFlpData)
Add data.
const CResult Assign(const Base::CFLArray< Base::TPoint< int64_t > > &flaData)
A function that allocates data and creates a copy of the array.
const CResult Assign(const CFLPoint< float > *pData, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Add(const CFLPointArray &flpaData)
Add data.
const CResult Add(const Base::TPoint< double > &tpData)
Add data.
size_t GetCount()
Get the number of data.
const CResult Get(size_t stIndex, T **ppTArrX, T **ppTArrY) const
Get the data of the specified index.
virtual ~CLeastSquares()
Default destructor.
const CResult Set(T *pTArrX, T *pTArrY, int32_t i32Count)
As a function that allocates data, it allocates only the array pointer address of the parameter witho...
const CResult Clear()
Initialize the parameters.
const CResult Assign(const Base::CFLArray< Base::TPoint< int64_t > > *pFlaData)
A function that allocates data and creates a copy of the array.
const CResult Assign(const CFLPoint< double > *pData, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Assign(const CFLPoint< int32_t > *pData, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Assign(const Base::CFLArray< Base::TPoint< int32_t > > *pFlaData)
A function that allocates data and creates a copy of the array.
const CResult Set(const Base::TPoint< T > *pTpArrXY, int32_t i32Count)
As a function that allocates data, it allocates only the array pointer address of the parameter witho...
const CResult Add(const CFLPoint< int32_t > *pFlpData)
Add data.
const CResult GetLine(CFLLine< T > *pFllResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3.) const
A function to find the line with the minimum distance difference between each point.
const CResult Assign(float *pF32X, float *pF32Y, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Assign(int64_t *pArr2I64XY, int32_t i32Count)
A function that allocates data and creates a copy of the array.
const CResult Add(const CFLPointArray *pFlpaData)
Add data.
const CResult Add(float f32X, float f32Y)
Add data.
const CResult Add(const Base::CFLArray< Base::TPoint< int64_t > > *pFlaData)
Add data.
const CResult Assign(const CFLFigureArray &flfaData)
A function that allocates data and creates a copy of the array.
const CResult GetEllipse(CFLEllipse< T > &fleResult, int64_t i64OutlierThresholdCount=0, double f64OutlierThreshold=3.) const
A function to find the ellipse with the minimum distance difference between each point.
const CResult Add(float *pArrX, float *pArrY, int32_t i32Count)
Copy and add data.
const CResult Add(const Base::TPoint< double > *pTpData)
Add data.
const CResult Add(const CFLFigureArray &flfaData)
Add data.
const CResult Set(const Base::CFLArray< Base::TPoint< T > > &flaData)
As a function that allocates data, it allocates only the array pointer address of the parameter witho...
Definition AlgorithmBase.h:16
ECoefficientOrder
Indicates the order in which the coefficients are listed.
Definition DefinitionsMathematics.h:118
@ ECoefficientOrder_Descending
Descending to list coefficients starting with higher order.
Definition DefinitionsMathematics.h:133
ELeastSqauresAccuracy
Least Squares calculation accuracy.
Definition LeastSquares.h:30
@ ELeastSqauresAccuracy_Bits128
Definition LeastSquares.h:41
@ ELeastSqauresAccuracy_TemplateType
Definition LeastSquares.h:35
@ ELeastSqauresAccuracy_Bits256
Definition LeastSquares.h:47