FLImaging 7.8.25.3
FLPoint3.h
1#pragma once
2
3#include "FLFigure3.h"
4#include "FLPoint.h"
5
7namespace FLImaging
8{
10 namespace Foundation
11 {
12 template<typename Ty>
13 class FL_EXPORT CFLGeometry3DVector;
14
15 template<typename Ty>
16 class FL_EXPORT CFLGeometry3DDirection;
17
18 template<typename Ty>
19 class FL_EXPORT CMatrix;
20
21 template<typename Ty>
22 class FL_EXPORT CMatrixFor3D;
23
24 template<typename Ty>
25 class FL_EXPORT CMatrixFor3DTransform;
26
27 template<typename Ty>
28 class FL_EXPORT CFLGeometry3DAxis;
29
30 template<typename Ty>
31 class FL_EXPORT CFLGeometry3DCoordinateSystemRH;
32
38 template<typename Ty>
39 class FL_EXPORT CFLPoint3 : public CFLFigure3
40 {
41 public:
46 Ty x;
47
52 Ty y;
53
58 Ty z;
59
65
70 virtual ~CFLPoint3();
71
83 virtual void Get(Ty& tX, Ty& tY, Ty& tZ) const;
84
92 virtual double GetMagnitude() const;
93
101 virtual double GetSquareMagnitude() const;
102
103 using CFLFigure3::Offset;
104 virtual const CResult Offset(double x, double y, double z) override;
105
107 virtual const CResult Multiply(double x, double y, double z) override;
108
109 virtual CFLPoint3<double> GetCenter3D() const override;
110
112 virtual const CResult GetCenterOfGravity(double& x, double& y, double& z) const override;
113
115 virtual const CResult GetCenterOfVertices(double& x, double& y, double& z) const override;
116
117 using CFLFigure3::Rotate;
118 virtual const CResult Rotate(const CFLGeometry3DQuaternion<float>* pQuat, const CFLPoint3<float>* pFlp3Pivot = nullptr) override;
119 virtual const CResult Rotate(const CFLGeometry3DQuaternion<double>* pQuat, const CFLPoint3<double>* pFlp3Pivot = nullptr) override;
120
121 using CFLFigure3::Scale;
122 virtual const CResult Scale(double f64ScaleX, double f64ScaleY, double f64ScaleZ, double f64PivotX, double f64PivotY, double f64PivotZ) override;
123
125 virtual const CResult Transform(const CMatrix<float>* pMatTransform) override;
126 virtual const CResult Transform(const CMatrix<double>* pMatTransform) override;
127
129 virtual const CResult GetBoundingBox(double& f64MinX, double& f64MinY, double& f64MinZ, double& f64MaxX, double& f64MaxY, double& f64MaxZ) const override;
130 virtual const CResult GetBoundingBox(float& f32MinX, float& f32MinY, float& f32MinZ, float& f32MaxX, float& f32MaxY, float& f32MaxZ) const override;
131
143 virtual const CResult Add(const CFLPoint3<Ty>& rhs);
144
160 virtual const CResult Add(Ty tX, Ty tY, Ty tZ);
161
173 virtual const CResult Subtract(const CFLPoint3<Ty>& rhs);
174
190 virtual const CResult Subtract(Ty tX, Ty tY, Ty tZ);
191
192 operator CFLPoint<float>()
193 {
194 return CFLPoint<float>(this);
195 }
196
197 operator CFLPoint<double>()
198 {
199 return CFLPoint<double>(this);
200 }
201
216
231
246
261
276
291
306
321
333 virtual const CResult Divide(double f64Scalar);
334
346 virtual const CResult Divide(float f32Scalar);
347
359 virtual const CResult Divide(int32_t i32Scalar);
360
372 virtual const CResult Divide(int64_t i64Scalar);
373
389 virtual const CResult Cross(float f32X, float f32Y, float f32Z);
390
406 virtual const CResult Cross(double f64X, double f64Y, double f64Z);
407
423 virtual const CResult Cross(int32_t i32X, int32_t i32Y, int32_t i32Z);
424
440 virtual const CResult Cross(int64_t i64X, int64_t i64Y, int64_t i64Z);
441
453 virtual const CResult Cross(const CFLPoint3<float>& rhs);
454
466 virtual const CResult Cross(const CFLPoint3<double>& rhs);
467
479 virtual const CResult Cross(const CFLPoint3<float>* pRhs);
480
492 virtual const CResult Cross(const CFLPoint3<double>* pRhs);
493
507 virtual double Dot(float f32X, float f32Y, float f32Z) const;
508
522 virtual double Dot(double f64X, double f64Y, double f64Z) const;
523
537 virtual double Dot(int32_t i32X, int32_t i32Y, int32_t i32Z) const;
538
552 virtual double Dot(int64_t i64X, int64_t i64Y, int64_t i64Z) const;
553
563 virtual double Dot(const CFLPoint3<float>& rhs) const;
564
574 virtual double Dot(const CFLPoint3<double>& rhs) const;
575
585 virtual double Dot(const CFLPoint3<float>* pRhs) const;
586
596 virtual double Dot(const CFLPoint3<double>* pRhs) const;
597
613 virtual const CResult Reflect(double pivotX, double pivotY, double pivotZ);
614
630 virtual const CResult Reflect(float pivotX, float pivotY, float pivotZ);
631
647 virtual const CResult Reflect(int32_t pivotX, int32_t pivotY, int32_t pivotZ);
648
664 virtual const CResult Reflect(int64_t pivotX, int64_t pivotY, int64_t pivotZ);
665
677 virtual const CResult Reflect(const CFLPoint3<double>& flp3Pivot);
678
690 virtual const CResult Reflect(const CFLPoint3<float>& flp3Pivot);
691
703 virtual const CResult Reflect(const CFLPoint3<double>* pFlp3Pivot);
704
716 virtual const CResult Reflect(const CFLPoint3<float>* pFlp3Pivot);
717
731 virtual const CResult Reflect(const CFLGeometry3DAxis<double>& axis3Pivot);
732
746 virtual const CResult Reflect(const CFLGeometry3DAxis<float>& axis3Pivot);
747
761 virtual const CResult Reflect(const CFLGeometry3DAxis<double>* pAxis3Pivot);
762
776 virtual const CResult Reflect(const CFLGeometry3DAxis<float>* pAxis3Pivot);
777
791 virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH<double>& coordSysRHPlane);
792
806 virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH<float>& coordSysRHPlane);
807
821 virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH<double>* pCoordSysRHPlane);
822
836 virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH<float>* pCoordSysRHPlane);
837
851 virtual const CResult MatMul(const CMatrixFor3D<float>& mat3D);
852
866 virtual const CResult MatMul(const CMatrixFor3D<double>& mat3D);
867
881 virtual const CResult MatMul(const CMatrixFor3D<float>* pMat3D);
882
896 virtual const CResult MatMul(const CMatrixFor3D<double>* pMat3D);
897
911 virtual const CResult MatMul(const CMatrix<float>& mat4x4);
912
926 virtual const CResult MatMul(const CMatrix<double>& mat4x4);
927
941 virtual const CResult MatMul(const CMatrix<float>* pMat4x4);
942
956 virtual const CResult MatMul(const CMatrix<double>* pMat4x4);
957
969 virtual double GetDistance(const CFLPoint3<double>& flp3) const;
970
982 virtual double GetDistance(const CFLPoint3<float>& flp3) const;
983
995 virtual double GetDistance(const CFLPoint3<double>* pFlp3) const;
996
1008 virtual double GetDistance(const CFLPoint3<float>* pFlp3) const;
1009
1021 virtual const CResult Normalize();
1022
1033
1045 virtual CFLPoint3<double> GetUnitVector(const CFLPoint3<double>& flp3Target) const;
1046
1058 virtual CFLPoint3<double> GetUnitVector(const CFLPoint3<double>* pFlp3Target) const;
1059
1074
1088 virtual const CResult GetOrthogonalBasis(CFLPoint3<float>& flpU) const;
1089
1106
1123
1139 virtual const CResult GetOrthogonalBasis(CFLPoint3<double>* pFlpU, CFLPoint3<double>* pFlpV = nullptr) const;
1140
1156 virtual const CResult GetOrthogonalBasis(CFLPoint3<float>* pFlpU, CFLPoint3<float>* pFlpV = nullptr) const;
1157
1175 virtual const CResult SetLinearInterpolation(const CFLPoint3<Ty>& flp3Start, const CFLPoint3<Ty>& flp3End, double f64T);
1176
1177 virtual void Clear() override;
1178
1179 virtual EFigureDeclType GetDeclType() const override;
1180 virtual EFigureTemplateType GetTemplateType() const override;
1181
1182 virtual bool IsValid() const override;
1183 virtual bool IsFigureValid() const override;
1184
1185 virtual const CResult MakeFigureInvalid() override;
1186
1188 virtual bool IsSpecEqual(const CFLFigure* pFlfRhs, EFigureSpecCompareType eSpecType = EFigureSpecCompareType_Coordinates) const override;
1189
1200
1211
1223 bool operator==(const CFLPoint3<double>& flp3) const;
1224
1236 bool operator!=(const CFLPoint3<double>& flp3) const;
1237
1249 const CFLPoint3<Ty>& operator+=(const double& value);
1250
1263
1275 const CFLPoint3<Ty>& operator-=(const double& value);
1276
1289
1301 const CFLPoint3<Ty>& operator*=(const double& value);
1302
1314 const CFLPoint3<Ty>& operator*=(const float& value);
1315
1327 const CFLPoint3<Ty>& operator*=(const int32_t& value);
1328
1340 const CFLPoint3<Ty>& operator*=(const int64_t& value);
1341
1354
1366 const CFLPoint3<Ty>& operator/=(const double& value);
1367
1380
1392 CFLPoint3<double> operator+(const double& value) const;
1393
1406
1418 CFLPoint3<double> operator-(const double& value) const;
1419
1432
1444 CFLPoint3<double> operator*(const double& value) const;
1445
1458
1470 CFLPoint3<double> operator/(const double& value) const;
1471
1484
1496
1497 //Friend operator
1499 // Arithmetic operator
1500
1514 friend CFLPoint3<double> operator+(const int32_t& value, const CFLPoint3<Ty>& point)
1515 {
1516 CFLPoint3<double> t(point);
1517 t += value;
1518 return t;
1519 }
1520
1534 friend CFLPoint3<double> operator+(const int64_t& value, const CFLPoint3<Ty>& point)
1535 {
1536 CFLPoint3<double> t(point);
1537 t += value;
1538 return t;
1539 }
1540
1554 friend CFLPoint3<double> operator+(const float& value, const CFLPoint3<Ty>& point)
1555 {
1556 CFLPoint3<double> t(point);
1557 t += value;
1558 return t;
1559 }
1560
1574 friend CFLPoint3<double> operator+(const double& value, const CFLPoint3<Ty>& point)
1575 {
1576 CFLPoint3<double> t(point);
1577 t += value;
1578 return t;
1579 }
1580
1594 friend CFLPoint3<double> operator-(const int32_t& value, const CFLPoint3<Ty>& point)
1595 {
1596 CFLPoint3<double> t(point);
1597 t *= -1.;
1598 t += value;
1599 return t;
1600 }
1601
1615 friend CFLPoint3<double> operator-(const int64_t& value, const CFLPoint3<Ty>& point)
1616 {
1617 CFLPoint3<double> t(point);
1618 t *= -1.;
1619 t += value;
1620 return t;
1621 }
1622
1636 friend CFLPoint3<double> operator-(const float& value, const CFLPoint3<Ty>& point)
1637 {
1638 CFLPoint3<double> t(point);
1639 t *= -1.;
1640 t += value;
1641 return t;
1642 }
1643
1657 friend CFLPoint3<double> operator-(const double& value, const CFLPoint3<Ty>& point)
1658 {
1659 CFLPoint3<double> t(point);
1660 t *= -1.;
1661 t += value;
1662 return t;
1663 }
1664
1678 friend CFLPoint3<double> operator*(const int32_t& value, const CFLPoint3<Ty>& point)
1679 {
1680 CFLPoint3<double> t(point);
1681 t *= value;
1682 return t;
1683 }
1684
1698 friend CFLPoint3<double> operator*(const int64_t& value, const CFLPoint3<Ty>& point)
1699 {
1700 CFLPoint3<double> t(point);
1701 t *= value;
1702 return t;
1703 }
1704
1718 friend CFLPoint3<double> operator*(const float& value, const CFLPoint3<Ty>& point)
1719 {
1720 CFLPoint3<double> t(point);
1721 t *= value;
1722 return t;
1723 }
1724
1738 friend CFLPoint3<double> operator*(const double& value, const CFLPoint3<Ty>& point)
1739 {
1740 CFLPoint3<double> t(point);
1741 t *= value;
1742 return t;
1743 }
1744
1758 friend CFLPoint3<double> operator/(const int32_t& value, const CFLPoint3<Ty>& point)
1759 {
1760 CFLPoint3<double> t((double)value / (double)point.x, (double)value / (double)point.y, (double)value / (double)point.z);
1761 return t;
1762 }
1763
1777 friend CFLPoint3<double> operator/(const int64_t& value, const CFLPoint3<Ty>& point)
1778 {
1779 CFLPoint3<double> t((double)value / (double)point.x, (double)value / (double)point.y, (double)value / (double)point.z);
1780 return t;
1781 }
1782
1796 friend CFLPoint3<double> operator/(const float& value, const CFLPoint3<Ty>& point)
1797 {
1798 CFLPoint3<double> t((double)value / (double)point.x, (double)value / (double)point.y, (double)value / (double)point.z);
1799 return t;
1800 }
1801
1815 friend CFLPoint3<double> operator/(const double& value, const CFLPoint3<Ty>& point)
1816 {
1817 CFLPoint3<double> t((double)value / (double)point.x, (double)value / (double)point.y, (double)value / (double)point.z);
1818 return t;
1819 }
1821
1833 virtual const CResult Assign(const CFLPoint3<Ty>& flp3);
1834
1848 virtual const CResult Assign(const Base::TPoint3<Ty>& tp3);
1849
1851 // Set
1852
1853 virtual const CResult Set(const CFLFigure& flf) override;
1854 virtual const CResult Set(const CFLFigure* pFlf) override;
1855
1871 virtual const CResult Set(double x, double y, double z);
1872
1888 virtual const CResult Set(float x, float y, float z);
1889
1905 virtual const CResult Set(int32_t x, int32_t y, int32_t z);
1906
1922 virtual const CResult Set(int64_t x, int64_t y, int64_t z);
1923
1939 virtual const CResult Set(const CFLPoint<double>& flp, double z = 0.);
1940
1956 virtual const CResult Set(const CFLPoint<float>& flp, float z = 0.);
1957
1973 virtual const CResult Set(const CFLPoint<int32_t>& flp, int32_t z = 0.);
1974
1990 virtual const CResult Set(const CFLPoint<int64_t>& flp, int64_t z = 0.);
1991
2007 virtual const CResult Set(const CFLPoint<double>* pFlp, double z = 0.);
2008
2024 virtual const CResult Set(const CFLPoint<float>* pFlp, float z = 0.);
2025
2041 virtual const CResult Set(const CFLPoint<int32_t>* pFlp, int32_t z = 0.);
2042
2058 virtual const CResult Set(const CFLPoint<int64_t>* pFlp, int64_t z = 0.);
2059
2071 virtual const CResult Set(const CFLPoint3<double>& flp3);
2072
2084 virtual const CResult Set(const CFLPoint3<float>& flp3);
2085
2097 virtual const CResult Set(const CFLPoint3<double>* pFlp3);
2098
2110 virtual const CResult Set(const CFLPoint3<float>* pFlp3);
2111
2125 virtual const CResult Set(const Base::TPoint3<double>& tp3);
2126
2140 virtual const CResult Set(const Base::TPoint3<float>& tp3);
2141
2155 virtual const CResult Set(const Base::TPoint3<double>* pTp3);
2156
2170 virtual const CResult Set(const Base::TPoint3<float>* pTp3);
2171
2181 virtual const CResult Set(const CFLGeometry3DVector<double>& vec3);
2182
2192 virtual const CResult Set(const CFLGeometry3DVector<float>& vec3);
2193
2203 virtual const CResult Set(const CFLGeometry3DVector<double>* pVec3);
2204
2214 virtual const CResult Set(const CFLGeometry3DVector<float>* pVec3);
2215
2225 virtual const CResult Set(const CFLGeometry3DDirection<double>& dir);
2226
2236 virtual const CResult Set(const CFLGeometry3DDirection<float>& dir);
2237
2247 virtual const CResult Set(const CFLGeometry3DDirection<double>* pDir);
2248
2258 virtual const CResult Set(const CFLGeometry3DDirection<float>* pDir);
2259
2260
2261
2263 // Constructor
2264
2277
2289 CFLPoint3(const CFLFigure* pFlf);
2290
2302 CFLPoint3(double x, double y, double z);
2303
2315 CFLPoint3(float x, float y, float z);
2316
2328 CFLPoint3(int32_t x, int32_t y, int32_t z);
2329
2341 CFLPoint3(int64_t x, int64_t y, int64_t z);
2342
2354 CFLPoint3(const CFLPoint<double>& flp, double z = 0.);
2355
2367 CFLPoint3(const CFLPoint<float>& flp, float z = 0.);
2368
2380 CFLPoint3(const CFLPoint<int32_t>& flp, int32_t z = 0.);
2381
2393 CFLPoint3(const CFLPoint<int64_t>& flp, int64_t z = 0.);
2394
2406 CFLPoint3(const CFLPoint<double>* pFlp, double z = 0.);
2407
2419 CFLPoint3(const CFLPoint<float>* pFlp, float z = 0.);
2420
2432 CFLPoint3(const CFLPoint<int32_t>* pFlp, int32_t z = 0.);
2433
2445 CFLPoint3(const CFLPoint<int64_t>* pFlp, int64_t z = 0.);
2446
2455
2464
2473
2482
2493
2504
2515
2526
2537
2548
2559
2570
2581
2592
2603
2614
2615 protected:
2616 virtual CFLPoint<double> GetCenterOfGravity() const override;
2617
2618 SupportToDuplicateObject(CFLPoint3<Ty>, *this);
2619 DeclareGetClassType();
2620 };
2621
2622 typedef CFLPoint3<float> CFLPoint3F;
2623 typedef CFLPoint3<double> CFLPoint3D;
2624 }
2625}
Simplified class representing a 3-D point.
Definition TPoint3.h:37
FLImaging module execution result object.
Definition ResultsDef.h:1704
virtual const CResult Offset(double x, double y) override
virtual const CResult Transform(const CMatrixFor3DTransform< float > &matTransform)
Transform the object using a transformation matrix.
virtual const CResult GetCenterOfVertices(double &x, double &y, double &z) const
virtual const CResult Multiply(double x, double y) override
virtual const CResult GetBoundingBox(Base::TPoint3< float > &tp3Min, Base::TPoint3< float > &tp3Max) const
Returns the bounding box (AABB).
virtual const CResult Scale(double f64Scale)
virtual const CResult GetCenterOfGravity(double &x, double &y) const override
virtual const CResult Rotate(const CFLGeometry3DQuaternion< float > &quat, const CFLPoint3< float > &flp3Pivot)
A base class of classes representing figures.
Definition FLFigure.h:27
virtual bool IsSpecEqual(const CFLFigure &flfRhs, EFigureSpecCompareType eSpecType=EFigureSpecCompareType_Coordinates) const
Represents a 3D axis defined by an origin point and a direction.
Definition FLGeometry3DAxis.h:38
A class that represents right-handed coordinate system in 3D space.
Definition FLGeometry3DCoordinateSystemRH.h:38
A class representing unit vector in 3D space.
Definition FLGeometry3DDirection.h:38
A class representing quaternion.
Definition FLGeometry3DQuaternion.h:30
A class representing vector in 3D space which has direction and magnitude.
Definition FLGeometry3DVector.h:33
A class representing a 3D point.
Definition FLPoint3.h:40
bool operator!=(const CFLPoint3< double > &flp3) const
Comparison operator.
virtual bool IsSpecEqual(const CFLFigure *pFlfRhs, EFigureSpecCompareType eSpecType=EFigureSpecCompareType_Coordinates) const override
virtual const CResult Subtract(Ty tX, Ty tY, Ty tZ)
virtual const CResult Set(const CFLFigure *pFlf) override
virtual const CResult Set(const CFLFigure &flf) override
friend CFLPoint3< double > operator/(const int64_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1777
virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH< double > &coordSysRHPlane)
virtual const CResult Reflect(const CFLGeometry3DAxis< float > *pAxis3Pivot)
virtual const CResult Set(int32_t x, int32_t y, int32_t z)
virtual const CResult Set(const CFLPoint3< float > *pFlp3)
CFLPoint3(float x, float y, float z)
virtual const CResult MatMul(const CMatrixFor3D< float > *pMat3D)
virtual double Dot(int64_t i64X, int64_t i64Y, int64_t i64Z) const
friend CFLPoint3< double > operator+(const double &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1574
virtual const CResult Cross(const CFLPoint3< float > &rhs)
CFLPoint3(const CFLGeometry3DDirection< float > &dir)
CFLPoint3(const CFLPoint3< double > &flp3)
virtual const CResult Set(const CFLGeometry3DVector< float > *pVec3)
CFLPoint3< double > operator-(const double &value) const
Offset operator[offset].
CFLPoint3< double > operator*(const double &value) const
An operator that multiplies the x and y values of the object by a parameter.
const CFLPoint3< Ty > & operator*=(const CMatrixFor3D< float > &mat3D)
An operator that multiplies multiplies a 3x3 matrix to this. this = mat3D * this.
CFLPoint3< Ty > operator*(const CMatrixFor3D< float > &mat3D) const
An operator that multiplies multiplies a 3x3 matrix.
float z
Definition FLPoint3.h:58
virtual const CResult Set(const CFLPoint< double > *pFlp, double z=0.)
CFLPoint3(const CFLGeometry3DDirection< double > *pDir)
virtual const CResult GetBoundingBox(float &f32MinX, float &f32MinY, float &f32MinZ, float &f32MaxX, float &f32MaxY, float &f32MaxZ) const override
Returns the bounding box (AABB).
virtual const CResult SetLinearInterpolation(const CFLPoint3< Ty > &flp3Start, const CFLPoint3< Ty > &flp3End, double f64T)
Set this to the CFLPoint3 that is linearly interpolated between two CFLPoint3 objects.
virtual const CResult GetCenterOfVertices(double &x, double &y, double &z) const override
CFLPoint3(const Base::TPoint3< float > &tp3)
virtual const CResult Reflect(const CFLGeometry3DAxis< double > *pAxis3Pivot)
virtual const CResult Set(const CFLGeometry3DDirection< float > &dir)
virtual const CResult Set(const CFLPoint3< double > *pFlp3)
virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH< double > *pCoordSysRHPlane)
friend CFLPoint3< double > operator+(const float &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1554
CFLPoint3< Ty > operator*(const CMatrixFor3D< double > *pMat3D) const
An operator that multiplies multiplies a 3x3 matrix.
virtual const CResult Divide(int32_t i32Scalar)
const CFLPoint3< Ty > & operator=(const Base::TPoint3< Ty > &tp3)
CFLPoint3(const CFLGeometry3DDirection< double > &dir)
virtual const CResult Reflect(float pivotX, float pivotY, float pivotZ)
const CFLPoint3< Ty > & operator*=(const CFLPoint3< double > &flp3)
An operator that multiplies the x and y values of the object by a parameter.
float x
Definition FLPoint3.h:46
virtual const CResult Add(Ty tX, Ty tY, Ty tZ)
virtual const CResult GetOrthogonalBasis(CFLPoint3< float > &flpU, CFLPoint3< float > &flpV) const
Calculates two orthogonal basis vectors (U, V) perpendicular to the current normal vector while avoid...
virtual const CResult MatMul(const CMatrix< double > &mat4x4)
virtual const CResult Subtract(const CFLPoint3< Ty > &rhs)
virtual const CResult Reflect(const CFLPoint3< double > *pFlp3Pivot)
virtual const CResult Cross(float f32X, float f32Y, float f32Z)
virtual const CResult Set(const CFLPoint< int64_t > *pFlp, int64_t z=0.)
CFLPoint3< Ty > operator-() const
An operator that returns a point with the signs of x, y and z values inverted.
virtual const CResult Set(const CFLPoint< float > *pFlp, float z=0.)
CFLPoint3(const CFLPoint3< float > *pFlp3)
virtual const CResult Set(const Base::TPoint3< float > *pTp3)
const CFLPoint3< Ty > & operator/=(const CFLPoint3< double > &flp3)
An operator that divides the x, y, z values of the object into parameters.
virtual const CResult Assign(const CFLPoint3< Ty > &flp3)
virtual const CResult Set(const CFLPoint< float > &flp, float z=0.)
virtual double GetDistance(const CFLPoint3< float > &flp3) const
Get the shortest distance to the parameter's object.
const CFLPoint3< Ty > & operator=(const CFLPoint3< Ty > &flp3)
friend CFLPoint3< double > operator*(const int32_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1678
virtual const CResult MatMul(const CMatrixFor3D< float > &mat3D)
CFLPoint3(const CFLPoint< int64_t > *pFlp, int64_t z=0.)
CFLPoint3(const CFLPoint3< double > *pFlp3)
const CFLPoint3< Ty > & operator-=(const CFLPoint3< double > &flp3)
Offset operator[offset].
friend CFLPoint3< double > operator-(const double &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1657
virtual void Clear() override
Clear an object's variable.
bool operator==(const CFLPoint3< double > &flp3) const
Comparison operator.
virtual const CResult Reflect(double pivotX, double pivotY, double pivotZ)
virtual const CResult GetOrthogonalBasis(CFLPoint3< double > &flpU, CFLPoint3< double > &flpV) const
Calculates two orthogonal basis vectors (U, V) perpendicular to the current normal vector while avoid...
CFLPoint3(const CFLGeometry3DDirection< float > *pDir)
virtual const CResult Normalize()
Function to set this the unit vector from the origin to this.
virtual const CResult Set(const CFLGeometry3DVector< double > *pVec3)
CFLPoint3(const CFLGeometry3DVector< float > &vec3)
virtual EFigureTemplateType GetTemplateType() const override
virtual const CResult Divide(float f32Scalar)
virtual const CResult Set(const CFLGeometry3DDirection< double > *pDir)
CFLPoint3< double > operator+(const double &value) const
Offset operator[offset].
CFLPoint3< double > operator-(const CFLPoint3< double > &flp3) const
Offset operator[offset].
CFLPoint3(int64_t x, int64_t y, int64_t z)
virtual const CResult Assign(const Base::TPoint3< Ty > &tp3)
virtual const CResult Set(const CFLPoint< int32_t > *pFlp, int32_t z=0.)
virtual bool IsValid() const override
CFLPoint3< Ty > operator*(const CMatrixFor3D< double > &mat3D) const
An operator that multiplies multiplies a 3x3 matrix.
virtual const CResult Scale(double f64ScaleX, double f64ScaleY, double f64ScaleZ, double f64PivotX, double f64PivotY, double f64PivotZ) override
virtual double GetDistance(const CFLPoint3< float > *pFlp3) const
Get the shortest distance to the parameter's object.
CFLPoint3(const CFLPoint< double > *pFlp, double z=0.)
virtual const CResult Set(const CFLPoint3< float > &flp3)
const CFLPoint3< Ty > & operator*=(const int64_t &value)
An operator that multiplies the x and y values of the object by a parameter.
virtual const CResult GetOrthogonalBasis(CFLPoint3< double > &flpU) const
Calculates the orthogonal basis vector (U) perpendicular to the current normal vector while avoiding ...
virtual const CResult Cross(int32_t i32X, int32_t i32Y, int32_t i32Z)
CFLPoint3(const CFLPoint< int32_t > &flp, int32_t z=0.)
virtual double Dot(const CFLPoint3< double > *pRhs) const
virtual const CResult MatMul(const CMatrixFor3D< double > *pMat3D)
CFLPoint3(const CFLPoint< double > &flp, double z=0.)
virtual const CResult Set(const CFLPoint< int32_t > &flp, int32_t z=0.)
virtual void Get(Ty &tX, Ty &tY, Ty &tZ) const
virtual double Dot(int32_t i32X, int32_t i32Y, int32_t i32Z) const
virtual CFLPoint< double > GetCenterOfGravity() const override
virtual double Dot(const CFLPoint3< float > *pRhs) const
virtual const CResult Set(const CFLGeometry3DVector< float > &vec3)
const CFLPoint3< Ty > & operator-=(const double &value)
Offset operator[offset].
virtual const CResult Set(double x, double y, double z)
virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH< float > &coordSysRHPlane)
virtual const CResult Set(float x, float y, float z)
virtual double GetDistance(const CFLPoint3< double > *pFlp3) const
Get the shortest distance to the parameter's object.
virtual const CResult Cross(const CFLPoint3< float > *pRhs)
CFLPoint3< double > operator*(const CFLPoint3< double > &flp3) const
An operator that multiplies the x and y values of the object by a parameter.
virtual const CResult GetOrthogonalBasis(CFLPoint3< float > *pFlpU, CFLPoint3< float > *pFlpV=nullptr) const
Calculates two orthogonal basis vectors (U, V) perpendicular to the current normal vector while avoid...
CFLPoint3(const CFLPoint3< float > &flp3)
CFLPoint3< double > operator/(const double &value) const
An operator that divides the x, y, z values of the object into parameters.
virtual const CResult MakeFigureInvalid() override
Make the figure invalid. (For example, set the coordinates of the point to invalid x,...
const CFLPoint3< Ty > & operator*=(const CMatrixFor3D< double > &mat3D)
An operator that multiplies multiplies a 3x3 matrix to this. this = mat3D * this.
virtual const CResult Add(const CFLPoint3< Ty > &rhs)
virtual const CResult Reflect(int64_t pivotX, int64_t pivotY, int64_t pivotZ)
virtual const CResult Set(const CFLPoint3< double > &flp3)
virtual double Dot(float f32X, float f32Y, float f32Z) const
virtual double Dot(double f64X, double f64Y, double f64Z) const
virtual const CResult Transform(const CMatrix< float > *pMatTransform) override
Transforms the object.
CFLPoint3(const CFLGeometry3DVector< float > *pVec3)
virtual CFLPoint3< double > GetUnitVector(const CFLPoint3< double > &flp3Target) const
A function that calculates the unit vector from that object to the parameter object.
const CFLPoint3< Ty > & operator*=(const double &value)
An operator that multiplies the x and y values of the object by a parameter.
virtual const CResult Rotate(const CFLGeometry3DQuaternion< float > *pQuat, const CFLPoint3< float > *pFlp3Pivot=nullptr) override
virtual CFLPoint3< double > GetCenter3D() const override
virtual CFLPoint3< double > GetUnitVector(const CFLPoint3< double > *pFlp3Target) const
A function that calculates the unit vector from that object to the parameter object.
float y
Definition FLPoint3.h:52
CFLPoint3(const CFLPoint< float > *pFlp, float z=0.)
CFLPoint3< double > GetUnitVector() const
Function to get the unit vector from the origin to this.
virtual const CResult Set(const CFLGeometry3DVector< double > &vec3)
CFLPoint3(const CFLPoint< int64_t > &flp, int64_t z=0.)
CFLPoint3< double > operator+(const CFLPoint3< double > &flp3) const
Offset operator[offset].
virtual const CResult Divide(int64_t i64Scalar)
virtual const CResult Offset(double x, double y, double z) override
virtual const CResult Set(const Base::TPoint3< float > &tp3)
virtual double GetSquareMagnitude() const
virtual const CResult Reflect(const CFLPoint3< double > &flp3Pivot)
virtual const CResult Cross(const CFLPoint3< double > &rhs)
friend CFLPoint3< double > operator-(const int64_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1615
virtual const CResult Transform(const CMatrix< double > *pMatTransform) override
Transforms the object.
virtual const CResult Divide(double f64Scalar)
CFLPoint3< Ty > operator*(const CMatrixFor3D< float > *pMat3D) const
An operator that multiplies multiplies a 3x3 matrix.
virtual const CResult MatMul(const CMatrix< double > *pMat4x4)
virtual const CResult Reflect(int32_t pivotX, int32_t pivotY, int32_t pivotZ)
virtual const CResult MatMul(const CMatrixFor3D< double > &mat3D)
virtual const CResult Set(const CFLGeometry3DDirection< double > &dir)
virtual bool IsFigureValid() const override
friend CFLPoint3< double > operator*(const double &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1738
virtual const CResult Reflect(const CFLGeometry3DCoordinateSystemRH< float > *pCoordSysRHPlane)
virtual const CResult Set(const Base::TPoint3< double > *pTp3)
virtual const CResult Cross(double f64X, double f64Y, double f64Z)
friend CFLPoint3< double > operator/(const int32_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1758
virtual const CResult Reflect(const CFLPoint3< float > &flp3Pivot)
virtual const CResult Set(const CFLGeometry3DDirection< float > *pDir)
CFLPoint3(const CFLPoint< int32_t > *pFlp, int32_t z=0.)
virtual const CResult Set(const CFLPoint< int64_t > &flp, int64_t z=0.)
virtual const CResult Set(const Base::TPoint3< double > &tp3)
virtual double Dot(const CFLPoint3< double > &rhs) const
CFLPoint3(const CFLPoint< float > &flp, float z=0.)
CFLPoint3(const Base::TPoint3< double > *pTp3)
virtual const CResult MatMul(const CMatrix< float > *pMat4x4)
const CFLPoint3< Ty > & operator*=(const int32_t &value)
An operator that multiplies the x and y values of the object by a parameter.
CFLPoint3(double x, double y, double z)
CFLPoint3(const CFLFigure &flf)
initialization constructor
friend CFLPoint3< double > operator/(const double &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1815
const CFLPoint3< Ty > & operator*=(const CMatrixFor3D< double > *pMat3D)
An operator that multiplies multiplies a 3x3 matrix to this. this = pMat3D * this.
const CFLPoint3< Ty > & operator/=(const double &value)
An operator that divides the x, y, z values of the object into parameters.
virtual const CResult Reflect(const CFLPoint3< float > *pFlp3Pivot)
virtual EFigureDeclType GetDeclType() const override
const CFLPoint3< Ty > & operator*=(const CMatrixFor3D< float > *pMat3D)
An operator that multiplies multiplies a 3x3 matrix to this. this = pMat3D * this.
virtual const CResult Reflect(const CFLGeometry3DAxis< double > &axis3Pivot)
virtual double Dot(const CFLPoint3< float > &rhs) const
virtual const CResult GetOrthogonalBasis(CFLPoint3< double > *pFlpU, CFLPoint3< double > *pFlpV=nullptr) const
Calculates two orthogonal basis vectors (U, V) perpendicular to the current normal vector while avoid...
virtual const CResult MatMul(const CMatrix< float > &mat4x4)
virtual const CResult Cross(int64_t i64X, int64_t i64Y, int64_t i64Z)
virtual const CResult GetBoundingBox(double &f64MinX, double &f64MinY, double &f64MinZ, double &f64MaxX, double &f64MaxY, double &f64MaxZ) const override
Returns the bounding box (AABB).
friend CFLPoint3< double > operator/(const float &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1796
CFLPoint3(const CFLGeometry3DVector< double > *pVec3)
virtual const CResult GetCenterOfGravity(double &x, double &y, double &z) const override
Get the center of gravity (geometric center) of the 3D object.
CFLPoint3(const Base::TPoint3< float > *pTp3)
virtual const CResult GetOrthogonalBasis(CFLPoint3< float > &flpU) const
Calculates the orthogonal basis vector (U) perpendicular to the current normal vector while avoiding ...
virtual const CResult Set(int64_t x, int64_t y, int64_t z)
CFLPoint3(int32_t x, int32_t y, int32_t z)
friend CFLPoint3< double > operator+(const int64_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1534
virtual const CResult Set(const CFLPoint< double > &flp, double z=0.)
virtual double GetMagnitude() const
CFLPoint3(const Base::TPoint3< double > &tp3)
friend CFLPoint3< double > operator*(const float &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1718
virtual const CResult Multiply(double x, double y, double z) override
friend CFLPoint3< double > operator-(const float &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1636
virtual const CResult Cross(const CFLPoint3< double > *pRhs)
friend CFLPoint3< double > operator+(const int32_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1514
virtual const CResult Rotate(const CFLGeometry3DQuaternion< double > *pQuat, const CFLPoint3< double > *pFlp3Pivot=nullptr) override
const CFLPoint3< Ty > & operator+=(const CFLPoint3< double > &flp3)
Offset operator[offset].
CFLPoint3< double > operator/(const CFLPoint3< double > &flp3) const
An operator that divides the x, y, z values of the object into parameters.
friend CFLPoint3< double > operator-(const int32_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1594
CFLPoint3(const CFLGeometry3DVector< double > &vec3)
friend CFLPoint3< double > operator*(const int64_t &value, const CFLPoint3< Ty > &point)
Offset operator[offset].
Definition FLPoint3.h:1698
virtual double GetDistance(const CFLPoint3< double > &flp3) const
Get the shortest distance to the parameter's object.
CFLPoint3(const CFLFigure *pFlf)
initialization constructor
const CFLPoint3< Ty > & operator*=(const float &value)
An operator that multiplies the x and y values of the object by a parameter.
virtual const CResult Reflect(const CFLGeometry3DAxis< float > &axis3Pivot)
const CFLPoint3< Ty > & operator+=(const double &value)
Offset operator[offset].
A class representing a point.
Definition FLPoint.h:24
A class representing 3x3 matrix.
Definition MatrixFor3D.h:36
A matrix class for 3D transform.
Definition MatrixFor3DTransform.h:40
A class representing matrix.
Definition Matrix.h:79
Definition AlgorithmBase.h:16
EFigureDeclType
Declare type of figure.
Definition DefinitionsFigure.h:33
EFigureTemplateType
Template type of figure.
Definition DefinitionsFigure.h:423
EFigureSpecCompareType
Definition DefinitionsFigure.h:3579
@ EFigureSpecCompareType_Coordinates
Definition DefinitionsFigure.h:3584