FLImaging 7.8.25.3
FLFigure3.h
1#pragma once
2
8
9#include "FLFigure.h"
10#include "DefinitionsMathematics.h"
11
13namespace FLImaging
14{
16 namespace Foundation
17 {
18 template <typename T>
19 class FL_EXPORT CFLGeometry3DQuaternion;
20
21 template <typename T>
22 class FL_EXPORT CFLGeometry3DAxis;
23
24 template <typename T>
25 class FL_EXPORT CFLGeometry3DVector;
26
27 template <typename T>
28 class FL_EXPORT CMatrixFor3DTransform;
29
30 template <typename T>
31 class FL_EXPORT CMatrix;
32
33 template <typename Ty>
34 class FL_EXPORT CFLPoint3;
35
41 class FL_EXPORT CFLFigure3 : public CFLFigure
42 {
43 protected:
49
50 public:
55 virtual ~CFLFigure3();
56
57 virtual void Clear() override;
58
60 virtual const CResult Offset(double x, double y) override;
61 virtual const CResult Offset(int32_t val) override;
62 virtual const CResult Offset(int64_t val) override;
63 virtual const CResult Offset(float val) override;
64 virtual const CResult Offset(double val) override;
65
79 virtual const CResult Offset(const CFLPoint3<float>& flpPoint);
80
94 virtual const CResult Offset(const CFLPoint3<double>& flpPoint);
95
109 virtual const CResult Offset(const CFLPoint3<float>* pFlpPoint);
110
124 virtual const CResult Offset(const CFLPoint3<double>* pFlpPoint);
125
139 virtual const CResult Offset(const Base::TPoint3<float>& tpPoint);
140
154 virtual const CResult Offset(const Base::TPoint3<double>& tpPoint);
155
169 virtual const CResult Offset(const Base::TPoint3<float>* pTpPoint);
170
184 virtual const CResult Offset(const Base::TPoint3<double>* pTpPoint);
185
201 virtual const CResult Offset(double x, double y, double z) = 0;
202
218 virtual const CResult Offset(float x, float y, float z);
219
235 virtual const CResult Offset(int64_t x, int64_t y, int64_t z);
236
252 virtual const CResult Offset(int32_t x, int32_t y, int32_t z);
253
255 virtual const CResult Multiply(double x, double y) override;
256 virtual const CResult Multiply(int32_t val) override;
257 virtual const CResult Multiply(int64_t val) override;
258 virtual const CResult Multiply(float val) override;
259 virtual const CResult Multiply(double val) override;
260
274 virtual const CResult Multiply(const CFLPoint3<float>& flpPoint);
275
289 virtual const CResult Multiply(const CFLPoint3<double>& flpPoint);
290
304 virtual const CResult Multiply(const CFLPoint3<float>* pFlpPoint);
305
319 virtual const CResult Multiply(const CFLPoint3<double>* pFlpPoint);
320
334 virtual const CResult Multiply(const Base::TPoint3<float>& tpPoint);
335
349 virtual const CResult Multiply(const Base::TPoint3<double>& tpPoint);
350
364 virtual const CResult Multiply(const Base::TPoint3<float>* pTpPoint);
365
379 virtual const CResult Multiply(const Base::TPoint3<double>* pTpPoint);
380
396 virtual const CResult Multiply(double x, double y, double z) = 0;
397
413 virtual const CResult Multiply(float x, float y, float z);
414
430 virtual const CResult Multiply(int64_t x, int64_t y, int64_t z);
431
447 virtual const CResult Multiply(int32_t x, int32_t y, int32_t z);
448
459
461 virtual const CResult GetCenter(double& x, double& y) const override;
462
478 virtual const CResult GetCenter(double& x, double& y, double& z) const;
479
495 virtual const CResult GetCenter(float& x, float& y, float& z) const;
496
512 virtual const CResult GetCenter(int64_t& x, int64_t& y, int64_t& z) const;
513
529 virtual const CResult GetCenter(int32_t& x, int32_t& y, int32_t& z) const;
530
544 virtual const CResult GetCenter(CFLPoint3<double>& flpCenter) const;
545
559 virtual const CResult GetCenter(CFLPoint3<float>& flpCenter) const;
560
574 virtual const CResult GetCenter(CFLPoint3<double>* pFlpCenter) const;
575
589 virtual const CResult GetCenter(CFLPoint3<float>* pFlpCenter) const;
590
604 virtual const CResult GetCenter(Base::TPoint3<double>& tpCenter) const;
605
619 virtual const CResult GetCenter(Base::TPoint3<float>& tpCenter) const;
620
634 virtual const CResult GetCenter(Base::TPoint3<double>* pTpCenter) const;
635
649 virtual const CResult GetCenter(Base::TPoint3<float>* pTpCenter) const;
650
661
663 virtual const CResult GetCenterOfGravity(double& x, double& y) const override;
664
682 virtual const CResult GetCenterOfGravity(double& x, double& y, double& z) const;
683
701 virtual const CResult GetCenterOfGravity(float& x, float& y, float& z) const;
702
720 virtual const CResult GetCenterOfGravity(int64_t& x, int64_t& y, int64_t& z) const;
721
739 virtual const CResult GetCenterOfGravity(int32_t& x, int32_t& y, int32_t& z) const;
740
754 virtual const CResult GetCenterOfGravity(CFLPoint3<double>& flpCenter) const;
755
769 virtual const CResult GetCenterOfGravity(CFLPoint3<float>& flpCenter) const;
770
784 virtual const CResult GetCenterOfGravity(CFLPoint3<double>* pFlpCenter) const;
785
799 virtual const CResult GetCenterOfGravity(CFLPoint3<float>* pFlpCenter) const;
800
814 virtual const CResult GetCenterOfGravity(Base::TPoint3<double>& tpCenter) const;
815
829 virtual const CResult GetCenterOfGravity(Base::TPoint3<float>& tpCenter) const;
830
844 virtual const CResult GetCenterOfGravity(Base::TPoint3<double>* pTpCenter) const;
845
859 virtual const CResult GetCenterOfGravity(Base::TPoint3<float>* pTpCenter) const;
860
871
887 virtual const CResult GetCenterOfVertices(double& x, double& y, double& z) const;
888
904 virtual const CResult GetCenterOfVertices(float& x, float& y, float& z) const;
905
921 virtual const CResult GetCenterOfVertices(int64_t& x, int64_t& y, int64_t& z) const;
922
938 virtual const CResult GetCenterOfVertices(int32_t& x, int32_t& y, int32_t& z) const;
939
953 virtual const CResult GetCenterOfVertices(CFLPoint3<double>& flpCenter) const;
954
968 virtual const CResult GetCenterOfVertices(CFLPoint3<float>& flpCenter) const;
969
983 virtual const CResult GetCenterOfVertices(CFLPoint3<double>* pFlpCenter) const;
984
998 virtual const CResult GetCenterOfVertices(CFLPoint3<float>* pFlpCenter) const;
999
1013 virtual const CResult GetCenterOfVertices(Base::TPoint3<double>& tpCenter) const;
1014
1028 virtual const CResult GetCenterOfVertices(Base::TPoint3<float>& tpCenter) const;
1029
1043 virtual const CResult GetCenterOfVertices(Base::TPoint3<double>* pTpCenter) const;
1044
1058 virtual const CResult GetCenterOfVertices(Base::TPoint3<float>* pTpCenter) const;
1059
1077 virtual const CResult Rotate(const CFLGeometry3DQuaternion<float>& quat, const CFLPoint3<float>& flp3Pivot);
1078
1095
1113 virtual const CResult Rotate(const CFLGeometry3DQuaternion<float>* pQuat, const CFLPoint3<float>* pFlp3Pivot = nullptr) = 0;
1114
1132 virtual const CResult Rotate(const CFLGeometry3DQuaternion<double>& quat, const CFLPoint3<double>& flp3Pivot);
1133
1150
1168 virtual const CResult Rotate(const CFLGeometry3DQuaternion<double>* pQuat, const CFLPoint3<double>* pFlp3Pivot = nullptr) = 0;
1169
1185 virtual const CResult Rotate(const CFLGeometry3DAxis<float>& axis, double f64Angle);
1186
1202 virtual const CResult Rotate(const CFLGeometry3DAxis<float>* pAxis, double f64Angle);
1203
1219 virtual const CResult Rotate(const CFLGeometry3DAxis<double>& axis, double f64Angle);
1220
1236 virtual const CResult Rotate(const CFLGeometry3DAxis<double>* pAxis, double f64Angle);
1237
1253 virtual const CResult Rotate(const CFLGeometry3DVector<float>& vec3Start, const CFLGeometry3DVector<float>& vec3End);
1254
1270 virtual const CResult Rotate(const CFLGeometry3DVector<float>* pVec3Start, const CFLGeometry3DVector<float>* pVec3End);
1271
1287 virtual const CResult Rotate(const CFLGeometry3DVector<double>& vec3Start, const CFLGeometry3DVector<double>& vec3End);
1288
1304 virtual const CResult Rotate(const CFLGeometry3DVector<double>* pVec3Start, const CFLGeometry3DVector<double>* pVec3End);
1305
1327 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma);
1328
1352 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<float>& flp3Pivot);
1353
1377 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<float>* pFlp3Pivot);
1378
1402 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<double>& flp3Pivot);
1403
1427 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<double>* pFlp3Pivot);
1428
1442 virtual const CResult Translate(const CFLGeometry3DVector<float>& vec3Translation);
1443
1457 virtual const CResult Translate(const CFLGeometry3DVector<float>* pVec3Translation);
1458
1474 virtual const CResult Translate(const CFLPoint3<float>& flp3From, const CFLPoint3<float>& flp3To);
1475
1491 virtual const CResult Translate(const CFLPoint3<float>* pFlp3From, const CFLPoint3<float>* pFlp3To);
1492
1506 virtual const CResult Translate(const CFLGeometry3DVector<double>& vec3Translation);
1507
1521 virtual const CResult Translate(const CFLGeometry3DVector<double>* pVec3Translation);
1522
1538 virtual const CResult Translate(const CFLPoint3<double>& flp3From, const CFLPoint3<double>& flp3To);
1539
1555 virtual const CResult Translate(const CFLPoint3<double>* pFlp3From, const CFLPoint3<double>* pFlp3To);
1556
1568 virtual const CResult Scale(double f64Scale);
1569
1585 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, double f64Scale);
1586
1602 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, double f64Scale);
1603
1619 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, double f64Scale);
1620
1636 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, double f64Scale);
1637
1653 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, const CFLPoint3<float>& flp3Scale);
1654
1670 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, const CFLPoint3<float>& flp3Scale);
1671
1687 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, const CFLPoint3<float>* pFlp3Scale);
1688
1704 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, const CFLPoint3<float>* pFlp3Scale);
1705
1721 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, const CFLPoint3<double>& flp3Scale);
1722
1738 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, const CFLPoint3<double>& flp3Scale);
1739
1755 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, const CFLPoint3<double>* pFlp3Scale);
1756
1772 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, const CFLPoint3<double>* pFlp3Scale);
1773
1793 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
1794
1814 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
1815
1835 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
1836
1856 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
1857
1879 virtual const CResult Scale(int32_t i32PivotX, int32_t i32PivotY, int32_t i32PivotZ, int32_t i32ScaleX, int32_t i32ScaleY, int32_t i32ScaleZ);
1880
1902 virtual const CResult Scale(int64_t i64PivotX, int64_t i64PivotY, int64_t i64PivotZ, int64_t i64ScaleX, int64_t i64ScaleY, int64_t i64ScaleZ);
1903
1925 virtual const CResult Scale(float f32PivotX, float f32PivotY, float f32PivotZ, float f32ScaleX, float f32ScaleY, float f32ScaleZ);
1926
1948 virtual const CResult Scale(double f64PivotX, double f64PivotY, double f64PivotZ, double f64ScaleX, double f64ScaleY, double f64ScaleZ) = 0;
1949
1965 virtual const CResult Transform(const CMatrixFor3DTransform<float>& matTransform);
1966
1982 virtual const CResult Transform(const CMatrixFor3DTransform<double>& matTransform);
1983
1999 virtual const CResult Transform(const CMatrixFor3DTransform<float>* pMatTransform);
2000
2016 virtual const CResult Transform(const CMatrixFor3DTransform<double>* pMatTransform);
2017
2043 virtual const CResult Transform(const CFLPoint3<float>& flp3Scale, const CFLPoint3<float>& flp3Angle, const CFLPoint3<float>& flp3Translation, const CFLPoint3<float>& flp3Pivot, EEulerSequence eEulerSequence = EEulerSequence_Extrinsic_XYZ);
2044
2070 virtual const CResult Transform(const CFLPoint3<double>& flp3Scale, const CFLPoint3<double>& flp3Angle, const CFLPoint3<double>& flp3Translation, const CFLPoint3<double>& flp3Pivot, EEulerSequence eEulerSequence = EEulerSequence_Extrinsic_XYZ);
2071
2097 virtual const CResult Transform(const CFLPoint3<float>* pFlp3Scale, const CFLPoint3<float>* pFlp3Angle, const CFLPoint3<float>* pFlp3Translation, const CFLPoint3<float>* pFlp3Pivot = nullptr, EEulerSequence eEulerSequence = EEulerSequence_Extrinsic_XYZ);
2098
2124 virtual const CResult Transform(const CFLPoint3<double>* pFlp3Scale, const CFLPoint3<double>* pFlp3Angle, const CFLPoint3<double>* pFlp3Translation, const CFLPoint3<double>* pFlp3Pivot = nullptr, EEulerSequence eEulerSequence = EEulerSequence_Extrinsic_XYZ);
2125
2147 virtual const CResult Transform(const CFLPoint3<float>& flp3Scale, const CFLGeometry3DQuaternion<float>& quat, const CFLPoint3<float>& flp3Translation);
2148
2170 virtual const CResult Transform(const CFLPoint3<double>& flp3Scale, const CFLGeometry3DQuaternion<double>& quat, const CFLPoint3<double>& flp3Translation);
2171
2195 virtual const CResult Transform(const CFLPoint3<float>& flp3Scale, const CFLGeometry3DQuaternion<float>& quat, const CFLPoint3<float>& flp3Translation, const CFLPoint3<float>& flp3Pivot);
2196
2220 virtual const CResult Transform(const CFLPoint3<double>& flp3Scale, const CFLGeometry3DQuaternion<double>& quat, const CFLPoint3<double>& flp3Translation, const CFLPoint3<double>& flp3Pivot);
2221
2245 virtual const CResult Transform(const CFLPoint3<float>* pFlp3Scale, const CFLGeometry3DQuaternion<float>* pQuat, const CFLPoint3<float>* pFlp3Translation, const CFLPoint3<float>* pFlp3Pivot = nullptr);
2246
2270 virtual const CResult Transform(const CFLPoint3<double>* pFlp3Scale, const CFLGeometry3DQuaternion<double>* pQuat, const CFLPoint3<double>* pFlp3Translation, const CFLPoint3<double>* pFlp3Pivot = nullptr);
2271
2287 virtual const CResult Transform(const CMatrix<float>& matTransform);
2288
2304 virtual const CResult Transform(const CMatrix<double>& matTransform);
2305
2321 virtual const CResult Transform(const CMatrix<float>* pMatTransform) = 0;
2322
2338 virtual const CResult Transform(const CMatrix<double>* pMatTransform) = 0;
2339
2358
2377
2395 virtual const CResult GetBoundingBox(Base::TPoint3<float>* pTp3Min, Base::TPoint3<float>* pTp3Max) const;
2396
2415
2433 virtual const CResult GetBoundingBox(CFLPoint3<float>& flp3Min, CFLPoint3<float>& flp3Max) const;
2434
2452 virtual const CResult GetBoundingBox(CFLPoint3<double>& flp3Min, CFLPoint3<double>& flp3Max) const;
2453
2471 virtual const CResult GetBoundingBox(CFLPoint3<float>* pFlp3Min, CFLPoint3<float>* pFlp3Max) const;
2472
2490 virtual const CResult GetBoundingBox(CFLPoint3<double>* pFlp3Min, CFLPoint3<double>* pFlp3Max) const;
2491
2507 virtual const CResult GetBoundingBox(CFLFrustum3<float>& flfrBoundingBox) const;
2508
2524 virtual const CResult GetBoundingBox(CFLFrustum3<double>& flfrBoundingBox) const;
2525
2541 virtual const CResult GetBoundingBox(CFLFrustum3<float>* pFlfrBoundingBox) const;
2542
2558 virtual const CResult GetBoundingBox(CFLFrustum3<double>* pFlfrBoundingBox) const;
2559
2575 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<float>& flqsBoundingBox) const;
2576
2592 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<double>& flqsBoundingBox) const;
2593
2609 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<float>* pFlqsBoundingBox) const;
2610
2626 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<double>* pFlqsBoundingBox) const;
2627
2651 virtual const CResult GetBoundingBox(double& f64MinX, double& f64MinY, double& f64MinZ, double& f64MaxX, double& f64MaxY, double& f64MaxZ) const = 0;
2652
2676 virtual const CResult GetBoundingBox(float& f32MinX, float& f32MinY, float& f32MinZ, float& f32MaxX, float& f32MaxY, float& f32MaxZ) const = 0;
2677
2685 virtual double GetVolume() const;
2686
2687 protected:
2688 virtual CFLPoint<double> GetCenter() const override;
2689 virtual CFLPoint<double> GetCenterOfGravity() const override;
2690 virtual double GetCircularity() const override;
2691
2692
2693 SupportToDuplicateAbstractObject(CFLFigure3);
2694 DeclareGetClassType();
2695 };
2696 }
2697}
Simplified class representing a 3-D point.
Definition TPoint3.h:37
FLImaging module execution result object.
Definition ResultsDef.h:1704
virtual const CResult Transform(const CFLPoint3< double > *pFlp3Scale, const CFLGeometry3DQuaternion< double > *pQuat, const CFLPoint3< double > *pFlp3Translation, const CFLPoint3< double > *pFlp3Pivot=nullptr)
Transforms the object.
virtual const CResult Multiply(int64_t val) override
virtual const CResult Rotate(const CFLGeometry3DVector< float > &vec3Start, const CFLGeometry3DVector< float > &vec3End)
virtual const CResult GetBoundingBox(CFLFrustum3< double > *pFlfrBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult Rotate(const CFLGeometry3DAxis< double > &axis, double f64Angle)
virtual const CResult Offset(double x, double y) override
virtual const CResult GetCenterOfVertices(float &x, float &y, float &z) const
virtual const CResult Multiply(float x, float y, float z)
virtual const CResult Rotate(const CFLGeometry3DQuaternion< double > &quat)
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, const CFLPoint3< double > &flp3Scale)
virtual const CResult Rotate(const CFLGeometry3DQuaternion< float > &quat)
virtual const CResult Transform(const CFLPoint3< double > &flp3Scale, const CFLGeometry3DQuaternion< double > &quat, const CFLPoint3< double > &flp3Translation)
Transforms the object.
virtual const CResult GetCenterOfVertices(Base::TPoint3< float > *pTpCenter) const
virtual const CResult GetCenter(float &x, float &y, float &z) const
virtual const CResult Scale(const CFLPoint3< float > &flp3Pivot, const CFLPoint3< float > *pFlp3Scale)
virtual const CResult Rotate(const CFLGeometry3DAxis< double > *pAxis, double f64Angle)
virtual const CResult GetCenterOfGravity(CFLPoint3< double > &flpCenter) const
virtual const CResult Translate(const CFLGeometry3DVector< float > &vec3Translation)
virtual const CResult GetCenter(Base::TPoint3< double > &tpCenter) const
virtual const CResult Scale(int64_t i64PivotX, int64_t i64PivotY, int64_t i64PivotZ, int64_t i64ScaleX, int64_t i64ScaleY, int64_t i64ScaleZ)
virtual const CResult GetCenter(int64_t &x, int64_t &y, int64_t &z) const
virtual const CResult Transform(const CMatrix< double > &matTransform)
Transforms the object.
virtual const CResult GetBoundingBox(CFLPoint3< float > *pFlp3Min, CFLPoint3< float > *pFlp3Max) const
Returns the bounding box (AABB).
virtual const CResult Scale(const CFLPoint3< float > &flp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ)
virtual CFLPoint3< double > GetCenter3D() const
virtual const CResult GetCenterOfVertices(CFLPoint3< float > *pFlpCenter) const
virtual const CResult GetCenterOfVertices(CFLPoint3< float > &flpCenter) const
virtual const CResult Scale(int32_t i32PivotX, int32_t i32PivotY, int32_t i32PivotZ, int32_t i32ScaleX, int32_t i32ScaleY, int32_t i32ScaleZ)
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3< double > *pFlp3Pivot)
Rotate this object using Euler sequences.
virtual const CResult Offset(double x, double y, double z)=0
virtual const CResult Transform(const CMatrixFor3DTransform< float > *pMatTransform)
Transform the object using a transformation matrix.
virtual const CResult Transform(const CMatrix< float > *pMatTransform)=0
Transforms the object.
virtual const CResult Transform(const CMatrixFor3DTransform< float > &matTransform)
Transform the object using a transformation matrix.
virtual const CResult GetBoundingBox(Base::TPoint3< float > *pTp3Min, Base::TPoint3< float > *pTp3Max) const
Returns the bounding box (AABB).
virtual const CResult GetCenterOfGravity(CFLPoint3< double > *pFlpCenter) const
virtual const CResult Transform(const CFLPoint3< float > &flp3Scale, const CFLPoint3< float > &flp3Angle, const CFLPoint3< float > &flp3Translation, const CFLPoint3< float > &flp3Pivot, EEulerSequence eEulerSequence=EEulerSequence_Extrinsic_XYZ)
Transforms the object.
virtual const CResult Rotate(const CFLGeometry3DVector< float > *pVec3Start, const CFLGeometry3DVector< float > *pVec3End)
virtual const CResult GetCenterOfGravity(double &x, double &y, double &z) const
Get the center of gravity (geometric center) of the 3D object.
virtual const CResult GetCenterOfGravity(Base::TPoint3< double > &tpCenter) const
virtual const CResult Offset(float x, float y, float z)
virtual const CResult GetCenterOfVertices(int64_t &x, int64_t &y, int64_t &z) const
virtual const CResult Transform(const CFLPoint3< double > &flp3Scale, const CFLPoint3< double > &flp3Angle, const CFLPoint3< double > &flp3Translation, const CFLPoint3< double > &flp3Pivot, EEulerSequence eEulerSequence=EEulerSequence_Extrinsic_XYZ)
Transforms the object.
virtual const CResult Offset(const CFLPoint3< float > &flpPoint)
virtual const CResult GetCenterOfGravity(Base::TPoint3< double > *pTpCenter) const
virtual const CResult Transform(const CMatrix< double > *pMatTransform)=0
Transforms the object.
virtual const CResult Multiply(int32_t val) override
virtual const CResult GetBoundingBox(CFLFrustum3< float > &flfrBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3< float > *pFlp3Pivot)
Rotate this object using Euler sequences.
virtual const CResult GetCenterOfVertices(double &x, double &y, double &z) const
virtual const CResult Transform(const CFLPoint3< float > *pFlp3Scale, const CFLPoint3< float > *pFlp3Angle, const CFLPoint3< float > *pFlp3Translation, const CFLPoint3< float > *pFlp3Pivot=nullptr, EEulerSequence eEulerSequence=EEulerSequence_Extrinsic_XYZ)
Transforms the object.
virtual const CResult GetCenter(Base::TPoint3< double > *pTpCenter) const
virtual const CResult Multiply(const CFLPoint3< float > *pFlpPoint)
virtual CFLPoint< double > GetCenter() const override
virtual const CResult Transform(const CMatrix< float > &matTransform)
Transforms the object.
virtual const CResult Translate(const CFLGeometry3DVector< float > *pVec3Translation)
virtual const CResult Translate(const CFLPoint3< double > &flp3From, const CFLPoint3< double > &flp3To)
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma)
Rotate this object using Euler sequences.
virtual const CResult Rotate(const CFLGeometry3DAxis< float > *pAxis, double f64Angle)
virtual const CResult GetCenterOfGravity(Base::TPoint3< float > *pTpCenter) const
virtual const CResult Multiply(const Base::TPoint3< double > *pTpPoint)
virtual const CResult Scale(const CFLPoint3< float > *pFlp3Pivot, const CFLPoint3< float > &flp3Scale)
virtual const CResult GetBoundingBox(Base::TPoint3< double > &tp3Min, Base::TPoint3< double > &tp3Max) const
Returns the bounding box (AABB).
virtual const CResult GetBoundingBox(CFLPoint3< double > &flp3Min, CFLPoint3< double > &flp3Max) const
Returns the bounding box (AABB).
virtual const CResult Scale(const CFLPoint3< float > *pFlp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ)
virtual const CResult GetCenterOfVertices(int32_t &x, int32_t &y, int32_t &z) const
virtual const CResult Transform(const CMatrixFor3DTransform< double > *pMatTransform)
Transform the object using a transformation matrix.
virtual const CResult Translate(const CFLGeometry3DVector< double > &vec3Translation)
virtual const CResult Multiply(double x, double y) override
virtual void Clear() override
Clear an object's variable.
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, const CFLPoint3< double > *pFlp3Scale)
virtual const CResult GetBoundingBox(CFLFrustum3< float > *pFlfrBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult GetCenter(Base::TPoint3< float > &tpCenter) const
virtual const CResult GetCenter(Base::TPoint3< float > *pTpCenter) const
virtual const CResult Transform(const CFLPoint3< float > &flp3Scale, const CFLGeometry3DQuaternion< float > &quat, const CFLPoint3< float > &flp3Translation)
Transforms the object.
virtual const CResult Multiply(const Base::TPoint3< float > *pTpPoint)
virtual const CResult Rotate(const CFLGeometry3DVector< double > *pVec3Start, const CFLGeometry3DVector< double > *pVec3End)
virtual const CResult GetCenterOfGravity(float &x, float &y, float &z) const
Get the center of gravity (geometric center) of the 3D object.
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, double f64Scale)
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3< float > &flp3Pivot)
Rotate this object using Euler sequences.
virtual const CResult GetCenter(double &x, double &y) const override
virtual const CResult GetCenter(CFLPoint3< float > &flpCenter) const
virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3< double > &flqsBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult Transform(const CFLPoint3< double > *pFlp3Scale, const CFLPoint3< double > *pFlp3Angle, const CFLPoint3< double > *pFlp3Translation, const CFLPoint3< double > *pFlp3Pivot=nullptr, EEulerSequence eEulerSequence=EEulerSequence_Extrinsic_XYZ)
Transforms the object.
virtual const CResult Multiply(const Base::TPoint3< float > &tpPoint)
virtual const CResult GetBoundingBox(CFLFrustum3< double > &flfrBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult Offset(const Base::TPoint3< double > &tpPoint)
virtual const CResult Transform(const CFLPoint3< float > *pFlp3Scale, const CFLGeometry3DQuaternion< float > *pQuat, const CFLPoint3< float > *pFlp3Translation, const CFLPoint3< float > *pFlp3Pivot=nullptr)
Transforms the object.
virtual const CResult Offset(const Base::TPoint3< double > *pTpPoint)
virtual const CResult Rotate(const CFLGeometry3DQuaternion< double > *pQuat, const CFLPoint3< double > *pFlp3Pivot=nullptr)=0
virtual const CResult GetCenter(int32_t &x, int32_t &y, int32_t &z) const
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3< double > &flp3Pivot)
Rotate this object using Euler sequences.
virtual const CResult GetCenterOfVertices(Base::TPoint3< float > &tpCenter) const
virtual const CResult Scale(const CFLPoint3< float > *pFlp3Pivot, double f64Scale)
virtual const CResult GetCenterOfVertices(CFLPoint3< double > *pFlpCenter) const
virtual const CResult Rotate(const CFLGeometry3DQuaternion< double > &quat, const CFLPoint3< double > &flp3Pivot)
virtual const CResult Scale(const CFLPoint3< double > &flp3Pivot, const CFLPoint3< double > &flp3Scale)
virtual const CResult Translate(const CFLPoint3< float > &flp3From, const CFLPoint3< float > &flp3To)
virtual const CResult Multiply(const CFLPoint3< float > &flpPoint)
virtual CFLPoint3< double > GetCenterOfGravity3D() const
virtual const CResult GetCenterOfGravity(CFLPoint3< float > *pFlpCenter) const
virtual const CResult GetBoundingBox(Base::TPoint3< float > &tp3Min, Base::TPoint3< float > &tp3Max) const
Returns the bounding box (AABB).
virtual const CResult GetCenterOfVertices(Base::TPoint3< double > &tpCenter) const
virtual const CResult Multiply(const CFLPoint3< double > *pFlpPoint)
virtual const CResult Multiply(double val) override
virtual const CResult Multiply(const Base::TPoint3< double > &tpPoint)
virtual const CResult Translate(const CFLPoint3< float > *pFlp3From, const CFLPoint3< float > *pFlp3To)
virtual const CResult Offset(const Base::TPoint3< float > *pTpPoint)
virtual const CResult GetCenterOfVertices(CFLPoint3< double > &flpCenter) const
virtual const CResult Rotate(const CFLGeometry3DQuaternion< float > *pQuat, const CFLPoint3< float > *pFlp3Pivot=nullptr)=0
virtual const CResult Scale(double f64Scale)
virtual const CResult Offset(const Base::TPoint3< float > &tpPoint)
virtual const CResult GetCenter(CFLPoint3< double > *pFlpCenter) const
virtual CFLPoint< double > GetCenterOfGravity() const override
virtual const CResult GetBoundingBox(CFLPoint3< float > &flp3Min, CFLPoint3< float > &flp3Max) const
Returns the bounding box (AABB).
virtual const CResult Multiply(double x, double y, double z)=0
virtual const CResult Rotate(const CFLGeometry3DAxis< float > &axis, double f64Angle)
virtual const CResult Rotate(const CFLGeometry3DVector< double > &vec3Start, const CFLGeometry3DVector< double > &vec3End)
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ)
virtual const CResult Scale(const CFLPoint3< float > *pFlp3Pivot, const CFLPoint3< float > *pFlp3Scale)
virtual double GetCircularity() const override
Gets the circularity (compactness) of the figure based on area and perimeter.
virtual const CResult Transform(const CFLPoint3< float > &flp3Scale, const CFLGeometry3DQuaternion< float > &quat, const CFLPoint3< float > &flp3Translation, const CFLPoint3< float > &flp3Pivot)
Transforms the object.
virtual const CResult GetCenter(CFLPoint3< float > *pFlpCenter) const
virtual const CResult Multiply(int32_t x, int32_t y, int32_t z)
virtual const CResult Scale(const CFLPoint3< double > &flp3Pivot, double f64Scale)
virtual const CResult Translate(const CFLPoint3< double > *pFlp3From, const CFLPoint3< double > *pFlp3To)
virtual const CResult GetBoundingBox(double &f64MinX, double &f64MinY, double &f64MinZ, double &f64MaxX, double &f64MaxY, double &f64MaxZ) const =0
Returns the bounding box (AABB).
virtual const CResult Multiply(int64_t x, int64_t y, int64_t z)
virtual const CResult Offset(const CFLPoint3< double > &flpPoint)
virtual const CResult GetCenterOfGravity(double &x, double &y) const override
virtual const CResult GetBoundingBox(CFLPoint3< double > *pFlp3Min, CFLPoint3< double > *pFlp3Max) const
Returns the bounding box (AABB).
virtual const CResult Translate(const CFLGeometry3DVector< double > *pVec3Translation)
virtual const CResult Offset(float val) override
virtual const CResult GetBoundingBox(Base::TPoint3< double > *pTp3Min, Base::TPoint3< double > *pTp3Max) const
Returns the bounding box (AABB).
virtual const CResult Scale(double f64PivotX, double f64PivotY, double f64PivotZ, double f64ScaleX, double f64ScaleY, double f64ScaleZ)=0
virtual const CResult GetBoundingBox(float &f32MinX, float &f32MinY, float &f32MinZ, float &f32MaxX, float &f32MaxY, float &f32MaxZ) const =0
Returns the bounding box (AABB).
virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3< float > &flqsBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3< double > *pFlqsBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult Scale(float f32PivotX, float f32PivotY, float f32PivotZ, float f32ScaleX, float f32ScaleY, float f32ScaleZ)
virtual const CResult Scale(const CFLPoint3< double > &flp3Pivot, const CFLPoint3< double > *pFlp3Scale)
virtual const CResult GetCenterOfVertices(Base::TPoint3< double > *pTpCenter) const
virtual const CResult GetCenterOfGravity(int32_t &x, int32_t &y, int32_t &z) const
Get the center of gravity (geometric center) of the 3D object.
virtual const CResult Scale(const CFLPoint3< double > &flp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ)
virtual const CResult Rotate(const CFLGeometry3DQuaternion< float > &quat, const CFLPoint3< float > &flp3Pivot)
virtual double GetVolume() const
virtual const CResult Offset(int64_t val) override
virtual const CResult Offset(const CFLPoint3< double > *pFlpPoint)
virtual const CResult Transform(const CFLPoint3< double > &flp3Scale, const CFLGeometry3DQuaternion< double > &quat, const CFLPoint3< double > &flp3Translation, const CFLPoint3< double > &flp3Pivot)
Transforms the object.
virtual const CResult Offset(int64_t x, int64_t y, int64_t z)
virtual const CResult Multiply(const CFLPoint3< double > &flpPoint)
virtual const CResult GetCenterOfGravity(int64_t &x, int64_t &y, int64_t &z) const
Get the center of gravity (geometric center) of the 3D object.
virtual CFLPoint3< double > GetCenterOfVertices3D() const
virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3< float > *pFlqsBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult Offset(int32_t x, int32_t y, int32_t z)
virtual const CResult Offset(const CFLPoint3< float > *pFlpPoint)
virtual const CResult GetCenterOfGravity(Base::TPoint3< float > &tpCenter) const
virtual const CResult Scale(const CFLPoint3< float > &flp3Pivot, double f64Scale)
virtual const CResult Multiply(float val) override
virtual const CResult Scale(const CFLPoint3< float > &flp3Pivot, const CFLPoint3< float > &flp3Scale)
virtual const CResult GetCenterOfGravity(CFLPoint3< float > &flpCenter) const
virtual const CResult GetCenter(double &x, double &y, double &z) const
virtual const CResult Offset(double val) override
virtual const CResult GetCenter(CFLPoint3< double > &flpCenter) const
virtual const CResult Offset(int32_t val) override
virtual const CResult Transform(const CMatrixFor3DTransform< double > &matTransform)
Transform the object using a transformation matrix.
virtual const CResult Multiply(int32_t i32Mul)
virtual CFLPoint< double > GetCenter() const
virtual const CResult Offset(int32_t val)
virtual CFLPoint< double > GetCenterOfGravity() const
A class representing a frustum.
Definition FLFrustum3.h:26
Represents a 3D axis defined by an origin point and a direction.
Definition FLGeometry3DAxis.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
A class representing a point.
Definition FLPoint.h:24
A class representing an irregular hexahedron formed by connecting corresponding vertices of two base ...
Definition FLQuadrilateralSolid3.h:25
A matrix class for 3D transform.
Definition MatrixFor3DTransform.h:40
A class representing matrix.
Definition Matrix.h:79
Definition AlgorithmBase.h:16
EEulerSequence
The order of rotations.
Definition DefinitionsMathematics.h:240
@ EEulerSequence_Extrinsic_XYZ
Definition DefinitionsMathematics.h:246