FLImaging 6.5.8.1
FLGeometry3DLine.h
1#pragma once
2#include "FLGeometry3DAxis.h"
3
5namespace FLImaging
6{
8 namespace Foundation
9 {
10 template <typename Ty>
11 class FL_EXPORT CMatrixFor3DTransform;
12
13 template <typename Ty>
14 class FL_EXPORT CFLGeometry3DDirection;
15
16 template <typename Ty>
17 class FL_EXPORT CFLPoint3;
18
24 template <typename Ty>
25 class FL_EXPORT CFLGeometry3DLine : public Base::CFLBase
26 {
27 public:
33
41
50 CFLGeometry3DLine(const CFLPoint3<Ty>& flp3Origin, const CFLGeometry3DDirection<Ty>& dir);
51
56 void Reverse();
57
63 CFLGeometry3DLine<Ty> GetReversed() const;
64
71 void SetDirection(const CFLGeometry3DDirection<Ty>& dir);
72
79 void SetLocation(const CFLPoint3<Ty>& flp3Origin);
80
87 void SetPosition(const CFLGeometry3DAxis<Ty>& axis);
88
94 const CFLGeometry3DDirection<Ty>* GetDirection() const;
95
101 const CFLPoint3<Ty>* GetLocation() const;
102
108 const CFLGeometry3DAxis<Ty>* GetPosition() const;
109
116 double GetAngle(const CFLGeometry3DLine<Ty>& rhs) const;
117
124 double GetAngleInRadian(const CFLGeometry3DLine<Ty>& rhs) const;
125
134 bool Contains(const CFLPoint3<Ty>& flp3, const double f64LinearTolerance) const;
135
143 double GetDistance(const CFLPoint3<Ty>& flp3Point) const;
144
151 double GetDistance(const CFLGeometry3DLine<Ty>& rhs) const;
152
160 double GetSquareDistance(const CFLPoint3<Ty>& flp3) const;
161
168 double GetSquareDistance(const CFLGeometry3DLine<Ty>& rhs) const;
169
177 CFLGeometry3DLine<Ty> GetNormalLine(const CFLPoint3<Ty>& flp3) const;
178
188 const CResult Mirror(const CFLPoint3<Ty>& flp3Pivot);
189
198 CFLGeometry3DLine<Ty> GetMirrored(const CFLPoint3<Ty>& flp3Pivot) const;
199
209 const CResult Mirror(const CFLGeometry3DAxis<Ty>& axisOfSymmetry);
210
219 CFLGeometry3DLine<Ty> GetMirrored(const CFLGeometry3DAxis<Ty>& axisOfSymmetry) const;
220
230 const CResult Mirror(const CFLGeometry3DCoordinateSystemRH<Ty>& planeOfSymmetry);
231
240 CFLGeometry3DLine<Ty> GetMirrored(const CFLGeometry3DCoordinateSystemRH<Ty>& planeOfSymmetry) const;
241
252 const CResult Rotate(const CFLGeometry3DAxis<Ty>& axisOfRotation, const double f64Angle);
253
263 CFLGeometry3DLine<Ty> GetRotated(const CFLGeometry3DAxis<Ty>& axisOfRotation, const double f64Angle) const;
264
275 const CResult Scale(const CFLPoint3<Ty>& flp3Pivot, const double f64Scale);
276
286 CFLGeometry3DLine<Ty> GetScaled(const CFLPoint3<Ty>& flp3Pivot, const double f64Scale) const;
287
297 const CResult Transform(const CMatrixFor3DTransform<Ty>& trsf);
298
307 CFLGeometry3DLine<Ty> GetTransformed(const CMatrixFor3DTransform<Ty>& trsf) const;
308
318 const CResult Translate(const CFLGeometry3DVector<Ty>& vecTranslate);
319
328 CFLGeometry3DLine<Ty> GetTranslated(const CFLGeometry3DVector<Ty>& vecTranslate) const;
329
340 const CResult Translate(const CFLPoint3<Ty>& flp3From, const CFLPoint3<Ty>& flp3To);
341
351 CFLGeometry3DLine<Ty> GetTranslated(const CFLPoint3<Ty>& flp3From, const CFLPoint3<Ty>& flp3To) const;
352
353 SupportToDuplicateObject(CFLGeometry3DLine<Ty>, *this);
354 DeclareGetClassType();
355
356 protected:
357 CFLGeometry3DAxis<Ty> m_axisPos;
358 };
359 }
360}
Top-level base class of FLImaging.
Definition FLBase.h:36
FLImaging module execution result object.
Definition ResultsDef.h:1514
A class that represents axis in 3D space.
Definition FLGeometry3DAxis.h:31
A class that represents right-handed coordinate system in 3D space.
Definition FLGeometry3DCoordinateSystemRH.h:32
A class representing unit vector in 3D space.
Definition FLGeometry3DDirection.h:32
A class representing line in 3D space which has position and direction.
Definition FLGeometry3DLine.h:26
CFLGeometry3DLine(const CFLGeometry3DAxis< Ty > &axisPos)
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:36
A matrix class for 3D transform.
Definition MatrixFor3DTransform.h:35