FLImaging 6.5.8.1
LeastSquares.h
1#pragma once
9#include "FLFigureForwardDeclaration.h"
10#include "DefinitionsMathematics.h"
11
13namespace FLImaging
14{
16 namespace Foundation
17 {
18 template<typename T>
19 class CInternalLeastSquares;
20
29 {
35
41
47 };
48
83 template<typename T>
84 class FL_EXPORT CLeastSquares : public Base::CFLBase
85 {
86 public:
94
101 virtual ~CLeastSquares();
102
114 const CResult Clear();
115
133 const CResult Set(const Base::TPoint<T>* pTpArrXY, int32_t i32Count);
134
153
171 const CResult Set(const Base::CFLArray<Base::TPoint<T>>* pFlaData);
172
190 const CResult Set(T* pTArrX, T* pTArrY, int32_t i32Count);
191
207 const CResult Assign(const CFLFigureArray& flfaData);
208
224 const CResult Assign(const CFLFigureArray* pFlfaData);
225
241 const CResult Assign(const CFLPointArray& flpaData);
242
258 const CResult Assign(const CFLPointArray* pFlpaData);
259
278
297
316
335
354
373
392
411
429 const CResult Assign(int32_t* pI32X, int32_t* pI32Y, int32_t i32Count);
430
448 const CResult Assign(int64_t* pI64X, int64_t* pI64Y, int32_t i32Count);
449
467 const CResult Assign(float* pF32X, float* pF32Y, int32_t i32Count);
468
486 const CResult Assign(double* pF64X, double* pF64Y, int32_t i32Count);
487
503 const CResult Assign(int32_t* pArr2I32XY, int32_t i32Count);
504
520 const CResult Assign(int64_t* pArr2I64XY, int32_t i32Count);
521
537 const CResult Assign(float* pArr2F32XY, int32_t i32Count);
538
554 const CResult Assign(double* pArr2F64XY, int32_t i32Count);
555
573 const CResult Assign(const CFLPoint<int32_t>* pData, int32_t i32Count);
574
592 const CResult Assign(const CFLPoint<int64_t>* pData, int32_t i32Count);
593
611 const CResult Assign(const CFLPoint<float>* pData, int32_t i32Count);
612
630 const CResult Assign(const CFLPoint<double>* pData, int32_t i32Count);
631
647 const CResult Add(int32_t i32X, int32_t i32Y);
648
664 const CResult Add(int64_t i64X, int64_t i64Y);
665
681 const CResult Add(float f32X, float f32Y);
682
698 const CResult Add(double f64X, double f64Y);
699
715 const CResult Add(const CFLPoint<double>& flpData);
716
732 const CResult Add(const CFLPoint<float>& flpData);
733
749 const CResult Add(const CFLPoint<int64_t>& flpData);
750
766 const CResult Add(const CFLPoint<int32_t>& flpData);
767
783 const CResult Add(const CFLPoint<double>* pFlpData);
784
800 const CResult Add(const CFLPoint<float>* pFlpData);
801
817 const CResult Add(const CFLPoint<int64_t>* pFlpData);
818
834 const CResult Add(const CFLPoint<int32_t>* pFlpData);
835
851 const CResult Add(const Base::TPoint<double>& tpData);
852
868 const CResult Add(const Base::TPoint<float>& tpData);
869
885 const CResult Add(const Base::TPoint<int64_t>& tpData);
886
902 const CResult Add(const Base::TPoint<int32_t>& tpData);
903
919 const CResult Add(const Base::TPoint<double>* pTpData);
920
936 const CResult Add(const Base::TPoint<float>* pTpData);
937
953 const CResult Add(const Base::TPoint<int64_t>* pTpData);
954
970 const CResult Add(const Base::TPoint<int32_t>* pTpData);
971
987 const CResult Add(const CFLFigureArray& flfaData);
988
1004 const CResult Add(const CFLFigureArray* pFlfaData);
1005
1021 const CResult Add(const CFLPointArray& flpaData);
1022
1038 const CResult Add(const CFLPointArray* pFlpaData);
1039
1058
1077
1096
1115
1134
1153
1172
1191
1209 const CResult Add(double* pArrX, double* pArrY, int32_t i32Count);
1210
1228 const CResult Add(float* pArrX, float* pArrY, int32_t i32Count);
1229
1247 const CResult Add(int64_t* pArrX, int64_t* pArrY, int32_t i32Count);
1248
1266 const CResult Add(int32_t* pArrX, int32_t* pArrY, int32_t i32Count);
1267
1281 Base::TPoint<T>* Get(size_t stIndex) const;
1282
1300 const CResult Get(size_t stIndex, T** ppTArrX, T** ppTArrY) const;
1301
1311 size_t GetCount();
1312
1336 const CResult GetPoly(int32_t i32Degree, T* pTResult, T* pTRSquare = nullptr, ECoefficientOrder eOrder = ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy = ELeastSqauresAccuracy_TemplateType);
1337
1361 const CResult GetPoly(int32_t i32Degree, Base::CFLArray<T>& flaResult, T* pTRSquare = nullptr, ECoefficientOrder eOrder = ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy = ELeastSqauresAccuracy_TemplateType);
1362
1386 const CResult GetPoly(int32_t i32Degree, Base::CFLArray<T>* pFlaResult, T* pTRSquare = nullptr, ECoefficientOrder eOrder = ECoefficientOrder_Descending, ELeastSqauresAccuracy eAccuracy = ELeastSqauresAccuracy_TemplateType);
1387
1407 const CResult GetCircle(CFLCircle<T>& flcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1408
1428 const CResult GetCircle(CFLCircle<T>* pFlcResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1429
1449 const CResult GetEllipse(CFLEllipse<T>& fleResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1450
1470 const CResult GetEllipse(CFLEllipse<T>* pFleResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1471
1491 const CResult GetLine(CFLLine<T>& fllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1492
1512 const CResult GetLine(CFLLine<T>* pFllResult, int64_t i64OutlierThresholdCount = 0, double f64OutlierThreshold = 3.) const;
1513
1514
1515 SupportToDuplicateObject(CLeastSquares, *this);
1516 DeclareGetClassType();
1517
1518 private:
1519 CInternalLeastSquares<T>* m_pInternal;
1520 };
1521
1524 }
1525}
1526
Template type array class.
Definition RangeTree.h:19
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:1514
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:26
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:85
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...
ECoefficientOrder
Indicates the order in which the coefficients are listed.
Definition DefinitionsMathematics.h:118
ELeastSqauresAccuracy
Least Squares calculation accuracy.
Definition LeastSquares.h:29
@ ELeastSqauresAccuracy_Bits128
Definition LeastSquares.h:40
@ ELeastSqauresAccuracy_TemplateType
Definition LeastSquares.h:34
@ ELeastSqauresAccuracy_Bits256
Definition LeastSquares.h:46