FLImaging 7.10.21.1
FLImagingFoundation/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
66 virtual void Clear() override;
67
69 virtual const CResult Offset(double x, double y) override;
70 virtual const CResult Offset(int32_t val) override;
71 virtual const CResult Offset(int64_t val) override;
72 virtual const CResult Offset(float val) override;
73 virtual const CResult Offset(double val) override;
74
76
89 virtual const CResult Offset(const CFLPoint3<float>& flpPoint);
90 virtual const CResult Offset(const CFLPoint3<double>& flpPoint);
91 virtual const CResult Offset(const CFLPoint3<float>* pFlpPoint);
92 virtual const CResult Offset(const CFLPoint3<double>* pFlpPoint);
94
96
109 virtual const CResult Offset(const Base::TPoint3<float>& tpPoint);
110 virtual const CResult Offset(const Base::TPoint3<double>& tpPoint);
111 virtual const CResult Offset(const Base::TPoint3<float>* pTpPoint);
112 virtual const CResult Offset(const Base::TPoint3<double>* pTpPoint);
114
116
131 virtual const CResult Offset(double x, double y, double z) = 0;
132 virtual const CResult Offset(float x, float y, float z);
133 virtual const CResult Offset(int64_t x, int64_t y, int64_t z);
134 virtual const CResult Offset(int32_t x, int32_t y, int32_t z);
136
138 virtual const CResult Multiply(double x, double y) override;
139 virtual const CResult Multiply(int32_t val) override;
140 virtual const CResult Multiply(int64_t val) override;
141 virtual const CResult Multiply(float val) override;
142 virtual const CResult Multiply(double val) override;
143
145
158 virtual const CResult Multiply(const CFLPoint3<float>& flpPoint);
159 virtual const CResult Multiply(const CFLPoint3<double>& flpPoint);
160 virtual const CResult Multiply(const CFLPoint3<float>* pFlpPoint);
161 virtual const CResult Multiply(const CFLPoint3<double>* pFlpPoint);
163
165
178 virtual const CResult Multiply(const Base::TPoint3<float>& tpPoint);
179 virtual const CResult Multiply(const Base::TPoint3<double>& tpPoint);
180 virtual const CResult Multiply(const Base::TPoint3<float>* pTpPoint);
181 virtual const CResult Multiply(const Base::TPoint3<double>* pTpPoint);
183
185
200 virtual const CResult Multiply(double x, double y, double z) = 0;
201 virtual const CResult Multiply(float x, float y, float z);
202 virtual const CResult Multiply(int64_t x, int64_t y, int64_t z);
203 virtual const CResult Multiply(int32_t x, int32_t y, int32_t z);
205
216
218 virtual const CResult GetCenter(double& x, double& y) const override;
219
221
236 virtual const CResult GetCenter(double& x, double& y, double& z) const;
237 virtual const CResult GetCenter(float& x, float& y, float& z) const;
238 virtual const CResult GetCenter(int64_t& x, int64_t& y, int64_t& z) const;
239 virtual const CResult GetCenter(int32_t& x, int32_t& y, int32_t& z) const;
241
243
256 virtual const CResult GetCenter(CFLPoint3<double>& flpCenter) const;
257 virtual const CResult GetCenter(CFLPoint3<float>& flpCenter) const;
258 virtual const CResult GetCenter(CFLPoint3<double>* pFlpCenter) const;
259 virtual const CResult GetCenter(CFLPoint3<float>* pFlpCenter) const;
261
263
276 virtual const CResult GetCenter(Base::TPoint3<double>& tpCenter) const;
277 virtual const CResult GetCenter(Base::TPoint3<float>& tpCenter) const;
278 virtual const CResult GetCenter(Base::TPoint3<double>* pTpCenter) const;
279 virtual const CResult GetCenter(Base::TPoint3<float>* pTpCenter) const;
281
292
294 virtual const CResult GetCenterOfGravity(double& x, double& y) const override;
295
297
314 virtual const CResult GetCenterOfGravity(double& x, double& y, double& z) const;
315 virtual const CResult GetCenterOfGravity(float& x, float& y, float& z) const;
316 virtual const CResult GetCenterOfGravity(int64_t& x, int64_t& y, int64_t& z) const;
317 virtual const CResult GetCenterOfGravity(int32_t& x, int32_t& y, int32_t& z) const;
319
321
334 virtual const CResult GetCenterOfGravity(CFLPoint3<double>& flpCenter) const;
335 virtual const CResult GetCenterOfGravity(CFLPoint3<float>& flpCenter) const;
336 virtual const CResult GetCenterOfGravity(CFLPoint3<double>* pFlpCenter) const;
337 virtual const CResult GetCenterOfGravity(CFLPoint3<float>* pFlpCenter) const;
339
341
354 virtual const CResult GetCenterOfGravity(Base::TPoint3<double>& tpCenter) const;
355 virtual const CResult GetCenterOfGravity(Base::TPoint3<float>& tpCenter) const;
356 virtual const CResult GetCenterOfGravity(Base::TPoint3<double>* pTpCenter) const;
357 virtual const CResult GetCenterOfGravity(Base::TPoint3<float>* pTpCenter) const;
359
370
372
387 virtual const CResult GetCenterOfVertices(double& x, double& y, double& z) const;
388 virtual const CResult GetCenterOfVertices(float& x, float& y, float& z) const;
389 virtual const CResult GetCenterOfVertices(int64_t& x, int64_t& y, int64_t& z) const;
390 virtual const CResult GetCenterOfVertices(int32_t& x, int32_t& y, int32_t& z) const;
392
394
407 virtual const CResult GetCenterOfVertices(CFLPoint3<double>& flpCenter) const;
408 virtual const CResult GetCenterOfVertices(CFLPoint3<float>& flpCenter) const;
409 virtual const CResult GetCenterOfVertices(CFLPoint3<double>* pFlpCenter) const;
410 virtual const CResult GetCenterOfVertices(CFLPoint3<float>* pFlpCenter) const;
412
414
427 virtual const CResult GetCenterOfVertices(Base::TPoint3<double>& tpCenter) const;
428 virtual const CResult GetCenterOfVertices(Base::TPoint3<float>& tpCenter) const;
429 virtual const CResult GetCenterOfVertices(Base::TPoint3<double>* pTpCenter) const;
430 virtual const CResult GetCenterOfVertices(Base::TPoint3<float>* pTpCenter) const;
432
434
453 virtual const CResult Rotate(const CFLGeometry3DQuaternion<float>& quat, const CFLPoint3<float>& flp3Pivot);
454 virtual const CResult Rotate(const CFLGeometry3DQuaternion<double>& quat, const CFLPoint3<double>& flp3Pivot);
456
458
477 virtual const CResult Rotate(const CFLGeometry3DQuaternion<float>* pQuat, const CFLPoint3<float>* pFlp3Pivot = nullptr) = 0;
478 virtual const CResult Rotate(const CFLGeometry3DQuaternion<double>* pQuat, const CFLPoint3<double>* pFlp3Pivot = nullptr) = 0;
480
482
502
504
521 virtual const CResult Rotate(const CFLGeometry3DAxis<float>& axis, double f64Angle);
522 virtual const CResult Rotate(const CFLGeometry3DAxis<float>* pAxis, double f64Angle);
523 virtual const CResult Rotate(const CFLGeometry3DAxis<double>& axis, double f64Angle);
524 virtual const CResult Rotate(const CFLGeometry3DAxis<double>* pAxis, double f64Angle);
526
528
545 virtual const CResult Rotate(const CFLGeometry3DVector<float>& vec3Start, const CFLGeometry3DVector<float>& vec3End);
546 virtual const CResult Rotate(const CFLGeometry3DVector<float>* pVec3Start, const CFLGeometry3DVector<float>* pVec3End);
547 virtual const CResult Rotate(const CFLGeometry3DVector<double>& vec3Start, const CFLGeometry3DVector<double>& vec3End);
548 virtual const CResult Rotate(const CFLGeometry3DVector<double>* pVec3Start, const CFLGeometry3DVector<double>* pVec3End);
550
572 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma);
573
575
600 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<float>& flp3Pivot);
601 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<float>* pFlp3Pivot);
602 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<double>& flp3Pivot);
603 virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3<double>* pFlp3Pivot);
605
607
622 virtual const CResult Translate(const CFLGeometry3DVector<float>& vec3Translation);
623 virtual const CResult Translate(const CFLGeometry3DVector<float>* pVec3Translation);
624 virtual const CResult Translate(const CFLGeometry3DVector<double>& vec3Translation);
625 virtual const CResult Translate(const CFLGeometry3DVector<double>* pVec3Translation);
627
629
646 virtual const CResult Translate(const CFLPoint3<float>& flp3From, const CFLPoint3<float>& flp3To);
647 virtual const CResult Translate(const CFLPoint3<float>* pFlp3From, const CFLPoint3<float>* pFlp3To);
648 virtual const CResult Translate(const CFLPoint3<double>& flp3From, const CFLPoint3<double>& flp3To);
649 virtual const CResult Translate(const CFLPoint3<double>* pFlp3From, const CFLPoint3<double>* pFlp3To);
651
665 virtual const CResult Scale(double f64Scale);
666
668
685 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, double f64Scale);
686 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, double f64Scale);
687 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, double f64Scale);
688 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, double f64Scale);
690
692
709 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, const CFLPoint3<float>& flp3Scale);
710 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, const CFLPoint3<float>& flp3Scale);
711 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, const CFLPoint3<float>* pFlp3Scale);
712 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, const CFLPoint3<float>* pFlp3Scale);
713 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, const CFLPoint3<double>& flp3Scale);
714 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, const CFLPoint3<double>& flp3Scale);
715 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, const CFLPoint3<double>* pFlp3Scale);
716 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, const CFLPoint3<double>* pFlp3Scale);
718
720
741 virtual const CResult Scale(const CFLPoint3<float>& flp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
742 virtual const CResult Scale(const CFLPoint3<double>& flp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
743 virtual const CResult Scale(const CFLPoint3<float>* pFlp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
744 virtual const CResult Scale(const CFLPoint3<double>* pFlp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ);
746
748
771 virtual const CResult Scale(int32_t i32PivotX, int32_t i32PivotY, int32_t i32PivotZ, int32_t i32ScaleX, int32_t i32ScaleY, int32_t i32ScaleZ);
772 virtual const CResult Scale(int64_t i64PivotX, int64_t i64PivotY, int64_t i64PivotZ, int64_t i64ScaleX, int64_t i64ScaleY, int64_t i64ScaleZ);
773 virtual const CResult Scale(float f32PivotX, float f32PivotY, float f32PivotZ, float f32ScaleX, float f32ScaleY, float f32ScaleZ);
774 virtual const CResult Scale(double f64PivotX, double f64PivotY, double f64PivotZ, double f64ScaleX, double f64ScaleY, double f64ScaleZ) = 0;
776
778
793 virtual const CResult Transform(const CMatrixFor3DTransform<float>& matTransform);
794 virtual const CResult Transform(const CMatrixFor3DTransform<double>& matTransform);
795 virtual const CResult Transform(const CMatrixFor3DTransform<float>* pMatTransform);
796 virtual const CResult Transform(const CMatrixFor3DTransform<double>* pMatTransform);
798
800
825 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);
826 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);
827 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);
828 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);
830
832
853 virtual const CResult Transform(const CFLPoint3<float>& flp3Scale, const CFLGeometry3DQuaternion<float>& quat, const CFLPoint3<float>& flp3Translation);
854 virtual const CResult Transform(const CFLPoint3<double>& flp3Scale, const CFLGeometry3DQuaternion<double>& quat, const CFLPoint3<double>& flp3Translation);
856
858
881 virtual const CResult Transform(const CFLPoint3<float>& flp3Scale, const CFLGeometry3DQuaternion<float>& quat, const CFLPoint3<float>& flp3Translation, const CFLPoint3<float>& flp3Pivot);
882 virtual const CResult Transform(const CFLPoint3<double>& flp3Scale, const CFLGeometry3DQuaternion<double>& quat, const CFLPoint3<double>& flp3Translation, const CFLPoint3<double>& flp3Pivot);
883 virtual const CResult Transform(const CFLPoint3<float>* pFlp3Scale, const CFLGeometry3DQuaternion<float>* pQuat, const CFLPoint3<float>* pFlp3Translation, const CFLPoint3<float>* pFlp3Pivot = nullptr);
884 virtual const CResult Transform(const CFLPoint3<double>* pFlp3Scale, const CFLGeometry3DQuaternion<double>* pQuat, const CFLPoint3<double>* pFlp3Translation, const CFLPoint3<double>* pFlp3Pivot = nullptr);
886
888
903 virtual const CResult Transform(const CMatrix<float>& matTransform);
904 virtual const CResult Transform(const CMatrix<double>& matTransform);
905 virtual const CResult Transform(const CMatrix<float>* pMatTransform) = 0;
906 virtual const CResult Transform(const CMatrix<double>* pMatTransform) = 0;
908
910
929 virtual const CResult GetBoundingBox(Base::TPoint3<float>* pTp3Min, Base::TPoint3<float>* pTp3Max) const;
930 virtual const CResult GetBoundingBox(Base::TPoint3<double>* pTp3Min, Base::TPoint3<double>* pTp3Max) const;
932
934
951 virtual const CResult GetBoundingBox(CFLPoint3<float>& flp3Min, CFLPoint3<float>& flp3Max) const;
952 virtual const CResult GetBoundingBox(CFLPoint3<double>& flp3Min, CFLPoint3<double>& flp3Max) const;
953 virtual const CResult GetBoundingBox(CFLPoint3<float>* pFlp3Min, CFLPoint3<float>* pFlp3Max) const;
954 virtual const CResult GetBoundingBox(CFLPoint3<double>* pFlp3Min, CFLPoint3<double>* pFlp3Max) const;
956
958
973 virtual const CResult GetBoundingBox(CFLFrustum3<float>& flfrBoundingBox) const;
974 virtual const CResult GetBoundingBox(CFLFrustum3<double>& flfrBoundingBox) const;
975 virtual const CResult GetBoundingBox(CFLFrustum3<float>* pFlfrBoundingBox) const;
976 virtual const CResult GetBoundingBox(CFLFrustum3<double>* pFlfrBoundingBox) const;
978
980
995 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<float>& flqsBoundingBox) const;
996 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<double>& flqsBoundingBox) const;
997 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<float>* pFlqsBoundingBox) const;
998 virtual const CResult GetBoundingBox(CFLQuadrilateralSolid3<double>* pFlqsBoundingBox) const;
1000
1002
1025 virtual const CResult GetBoundingBox(double& f64MinX, double& f64MinY, double& f64MinZ, double& f64MaxX, double& f64MaxY, double& f64MaxZ) const = 0;
1026 virtual const CResult GetBoundingBox(float& f32MinX, float& f32MinY, float& f32MinZ, float& f32MaxX, float& f32MaxY, float& f32MaxZ) const = 0;
1028
1036 virtual double GetVolume() const;
1037
1038 protected:
1039 virtual CFLPoint<double> GetCenter() const override;
1040 virtual CFLPoint<double> GetCenterOfGravity() const override;
1041 virtual double GetCircularity() const override;
1042
1043
1044 SupportToDuplicateAbstractObject(CFLFigure3);
1045 DeclareGetClassType();
1046 };
1047 }
1048}
Simplified class representing a 3-D point.
Definition FLImagingBase/TPoint3.h:37
FLImaging module execution result object.
Definition FLImagingBase/ResultsDef.h:1712
virtual const CResult Transform(const CFLPoint3< double > *pFlp3Scale, const CFLGeometry3DQuaternion< double > *pQuat, const CFLPoint3< double > *pFlp3Translation, const CFLPoint3< double > *pFlp3Pivot=nullptr)
Transforms the object. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
virtual const CResult Multiply(int64_t val) override
virtual const CResult Rotate(const CFLGeometry3DVector< float > &vec3Start, const CFLGeometry3DVector< float > &vec3End)
Rotate the object to represent the shortest arc rotation from vector 1 to vector 2....
virtual const CResult GetBoundingBox(CFLFrustum3< double > *pFlfrBoundingBox) const
Returns the bounding box (AABB).
virtual const CResult Rotate(const CFLGeometry3DAxis< double > &axis, double f64Angle)
Rotate the object by the specified rotation angle around the rotation axis. Precision may be lost dur...
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)
Rotate the object using quaternions based on its AABB (Axis-Aligned Bounding Box) center.
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, const CFLPoint3< double > &flp3Scale)
Scale the object with a specified pivot point.
virtual const CResult Rotate(const CFLGeometry3DQuaternion< float > &quat)
Rotate the object using quaternions based on its AABB (Axis-Aligned Bounding Box) center.
virtual const CResult Transform(const CFLPoint3< double > &flp3Scale, const CFLGeometry3DQuaternion< double > &quat, const CFLPoint3< double > &flp3Translation)
Transforms the object based on its AABB (Axis-Aligned Bounding Box) center.
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)
Scale the object with a specified pivot point.
virtual const CResult Rotate(const CFLGeometry3DAxis< double > *pAxis, double f64Angle)
Rotate the object by the specified rotation angle around the rotation axis. Precision may be lost dur...
virtual const CResult GetCenterOfGravity(CFLPoint3< double > &flpCenter) const
virtual const CResult Translate(const CFLGeometry3DVector< float > &vec3Translation)
Translate the object by the translation vector.
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)
Scale the object with a specified pivot point.
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 using a transformation matrix (4x4 or 3x3).
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)
Scale the object with a specified pivot point.
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)
Scale the object with a specified pivot point.
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3< double > *pFlp3Pivot)
Rotate this object using Euler sequences with a specified pivot point. Precision may be lost during t...
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 using a transformation matrix (4x4 or 3x3).
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. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
virtual const CResult Rotate(const CFLGeometry3DVector< float > *pVec3Start, const CFLGeometry3DVector< float > *pVec3End)
Rotate the object to represent the shortest arc rotation from vector 1 to vector 2....
virtual const CResult GetCenterOfGravity(double &x, double &y, double &z) const
Get the center of gravity 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. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
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 using a transformation matrix (4x4 or 3x3).
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 with a specified pivot point. Precision may be lost during t...
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. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
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 using a transformation matrix (4x4 or 3x3).
virtual const CResult Translate(const CFLGeometry3DVector< float > *pVec3Translation)
Translate the object by the translation vector.
virtual const CResult Translate(const CFLPoint3< double > &flp3From, const CFLPoint3< double > &flp3To)
Translate the object using the vector from the start point to the end point.
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma)
Rotate this object using Euler sequences based on its AABB (Axis-Aligned Bounding Box) center.
virtual const CResult Rotate(const CFLGeometry3DAxis< float > *pAxis, double f64Angle)
Rotate the object by the specified rotation angle around the rotation axis. Precision may be lost dur...
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)
Scale the object with a specified pivot point.
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)
Scale the object with a specified pivot point.
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)
Translate the object by the translation vector.
virtual const CResult Multiply(double x, double y) override
virtual void Clear() override
Clears all internal variables and resets all 3D vertex coordinates to 0.
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, const CFLPoint3< double > *pFlp3Scale)
Scale the object with a specified pivot point.
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 based on its AABB (Axis-Aligned Bounding Box) center.
virtual const CResult Multiply(const Base::TPoint3< float > *pTpPoint)
virtual const CResult Rotate(const CFLGeometry3DVector< double > *pVec3Start, const CFLGeometry3DVector< double > *pVec3End)
Rotate the object to represent the shortest arc rotation from vector 1 to vector 2....
virtual const CResult GetCenterOfGravity(float &x, float &y, float &z) const
Get the center of gravity of the 3D object.
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, double f64Scale)
Apply a scale transformation to the object with a specified pivot point.
virtual const CResult Rotate(EEulerSequence eEulerSequence, double f64Alpha, double f64Beta, double f64Gamma, const CFLPoint3< float > &flp3Pivot)
Rotate this object using Euler sequences with a specified pivot point. Precision may be lost during t...
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. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
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. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
virtual const CResult Offset(const Base::TPoint3< double > *pTpPoint)
virtual const CResult Rotate(const CFLGeometry3DQuaternion< double > *pQuat, const CFLPoint3< double > *pFlp3Pivot=nullptr)=0
Rotate the object using quaternions. If the pivot point is nullptr, the object's AABB (Axis-Aligned B...
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 with a specified pivot point. Precision may be lost during t...
virtual const CResult GetCenterOfVertices(Base::TPoint3< float > &tpCenter) const
virtual const CResult Scale(const CFLPoint3< float > *pFlp3Pivot, double f64Scale)
Apply a scale transformation to the object with a specified pivot point.
virtual const CResult GetCenterOfVertices(CFLPoint3< double > *pFlpCenter) const
virtual const CResult Rotate(const CFLGeometry3DQuaternion< double > &quat, const CFLPoint3< double > &flp3Pivot)
Rotate the object using quaternions with a specified pivot point.
virtual const CResult Scale(const CFLPoint3< double > &flp3Pivot, const CFLPoint3< double > &flp3Scale)
Scale the object with a specified pivot point.
virtual const CResult Translate(const CFLPoint3< float > &flp3From, const CFLPoint3< float > &flp3To)
Translate the object using the vector from the start point to the end point.
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)
Translate the object using the vector from the start point to the end point.
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
Rotate the object using quaternions. If the pivot point is nullptr, the object's AABB (Axis-Aligned B...
virtual const CResult Scale(double f64Scale)
Apply a scale transformation to the object based on its AABB (Axis-Aligned Bounding Box) center.
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)
Rotate the object by the specified rotation angle around the rotation axis. Precision may be lost dur...
virtual const CResult Rotate(const CFLGeometry3DVector< double > &vec3Start, const CFLGeometry3DVector< double > &vec3End)
Rotate the object to represent the shortest arc rotation from vector 1 to vector 2....
virtual const CResult Scale(const CFLPoint3< double > *pFlp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ)
Scale the object with a specified pivot point.
virtual const CResult Scale(const CFLPoint3< float > *pFlp3Pivot, const CFLPoint3< float > *pFlp3Scale)
Scale the object with a specified pivot point.
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. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
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)
Apply a scale transformation to the object with a specified pivot point.
virtual const CResult Translate(const CFLPoint3< double > *pFlp3From, const CFLPoint3< double > *pFlp3To)
Translate the object using the vector from the start point to the end point.
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)
Translate the object by the translation vector.
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
Scale the object with a specified pivot point.
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)
Scale the object with a specified pivot point.
virtual const CResult Scale(const CFLPoint3< double > &flp3Pivot, const CFLPoint3< double > *pFlp3Scale)
Scale the object with a specified pivot point.
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 of the 3D object.
virtual const CResult Scale(const CFLPoint3< double > &flp3Pivot, double f64ScaleX, double f64ScaleY, double f64ScaleZ)
Scale the object with a specified pivot point.
virtual const CResult Rotate(const CFLGeometry3DQuaternion< float > &quat, const CFLPoint3< float > &flp3Pivot)
Rotate the object using quaternions with a specified pivot point.
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. If the pivot parameter is not specified or nullptr, the AABB (Axis-Aligned Bou...
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 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)
Apply a scale transformation to the object with a specified pivot point.
virtual const CResult Multiply(float val) override
virtual const CResult Scale(const CFLPoint3< float > &flp3Pivot, const CFLPoint3< float > &flp3Scale)
Scale the object with a specified pivot point.
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 FLImagingFoundation/FLFrustum3.h:26
Represents a 3D axis defined by an origin point and a direction.
Definition FLImagingFoundation/FLGeometry3DAxis.h:38
A class representing quaternion.
Definition FLImagingFoundation/FLGeometry3DQuaternion.h:30
A class representing vector in 3D space which has direction and magnitude.
Definition FLImagingFoundation/FLGeometry3DVector.h:33
A class representing a 3D point.
Definition FLImagingFoundation/FLPoint3.h:40
A class representing a point.
Definition FLImagingFoundation/FLPoint.h:24
A class representing an irregular hexahedron formed by connecting corresponding vertices of two base ...
Definition FLImagingFoundation/FLQuadrilateralSolid3.h:28
A matrix class for 3D transform.
Definition FLImagingFoundation/MatrixFor3DTransform.h:40
A class representing matrix.
Definition FLImagingFoundation/Matrix.h:79
Definition FLImagingFoundation/AlgorithmBase.h:16
EEulerSequence
The order of rotations.
Definition FLImagingFoundation/DefinitionsMathematics.h:240
@ EEulerSequence_Extrinsic_XYZ
Definition FLImagingFoundation/DefinitionsMathematics.h:246