INOS
cinosmovepathinterpolatornurbs.h
Go to the documentation of this file.
1 //******************************************************************************
26 //******************************************************************************
27 #ifndef INC_CINOSMOVEPATHINTERPOLATORNURBS_H
28 #define INC_CINOSMOVEPATHINTERPOLATORNURBS_H
29 //------------------------------------------------------------------------------
30 // defines
31 //------------------------------------------------------------------------------
32 //
33 //------------------------------------------------------------------------------
34 // includes
35 //------------------------------------------------------------------------------
36 //
37 // system
38 #include <inos.h>
39 #include <cinosnurbscurve.h>
41 //
42 // C++
43 //
44 // project
45 //
46 //------------------------------------------------------------------------------
47 // struct definition
48 //------------------------------------------------------------------------------
49 //
51 {
53  double m_dStart;
54  // part length
55  double m_dLength;
56  // part 1/length
57  double m_dLength_1;
68 };
69 //
70 //------------------------------------------------------------------------------
71 // class definition
72 //------------------------------------------------------------------------------
73 //
75 {
76  //--- user interface ---------------------------------------------------
77 
78  // public member functions
79  public :
80 
82  virtual double GetCurveLength() override;
83 
85  virtual void GetPosition(double adP, CINOSMovePathSegment*& opSegment,
86  TINOSMovePathVec& ovPos) override;
88  virtual void GetDirection(double adP,
89  TINOSMovePathVec& ovDir) override;
91  virtual void GetDirectionLast(TINOSMovePathVec& ovDir) override;
93  virtual void GetDerivative(uint32 auLevel, double adP,
94  TINOSMovePathVec& ovDer) override;
96  virtual void GetD2max(double adBgn, double adEnd, TINOSMovePathVec& aD2max) override;
98  virtual void GetD3max(double adBgn, double adEnd, TINOSMovePathVec& aD3max) override;
99 
101  virtual uint32 Prepare() override;
102  //--- internals --------------------------------------------------------
103 
104  // constructor / destructor
105  public :
108  CINOSMovePathCurve* apCurve,
109  CINOSMovePath* apPath = NULL);
112  CINOSMovePathInterpolatorNurbs::NurbsCleanup();
113  };
114 
115 
117  virtual uint32 PreparePart(
121  double adTolerance, double adShorten = 0.0, double adExtend = 0.0);
123  virtual SINOSNurbsPart* GetPart(double adP);
125  virtual double CalcAngle(CINOSMovePathSegment* apSeg1,
126  CINOSMovePathSegment* apSeg2);
128  uint32 GetPartPoints(
131  double adTolerance);
132 
133  protected :
134  // protected member functions
136  virtual void Cleanup() override;
137 
138  private:
139  // private member functions
140 
142  void NurbsCleanup();
143 
144  protected :
145 
146  // protected members
148  double m_dLength;
150  uint32 m_uParts;
152  uint32 m_uLastPart;
158  double m_dVectorize;
164  TINOSMovePathVec m_OverlapPos{};
167 
168  // dynamic
169  DECLARE_DYNAMIC(CINOSMovePathInterpolatorNurbs);
170 };
171 
172 //------------------------------------------------------------------------------
173 // end of file
174 //------------------------------------------------------------------------------
175 
176 #endif // INC_CINOSMOVEPATHINTERPOLATORNURBS_H
DF_INOS_NURBSCURVE_INTERPOLATION_POINTS
#define DF_INOS_NURBSCURVE_INTERPOLATION_POINTS
Definition: inosdefault.h:196
CINOSMovePathInterpolatorNurbs::~CINOSMovePathInterpolatorNurbs
virtual ~CINOSMovePathInterpolatorNurbs()
destructor
Definition: cinosmovepathinterpolatornurbs.h:111
CINOSMovePathInterpolatorNurbs::m_bOverlapPos
bool m_bOverlapPos
overlap position valid
Definition: cinosmovepathinterpolatornurbs.h:162
CINOSMovePathInterpolatorNurbs::GetPart
virtual SINOSNurbsPart * GetPart(double adP)
get part
CINOSMovePathInterpolatorNurbs::m_dVectorize
double m_dVectorize
vectorize factor
Definition: cinosmovepathinterpolatornurbs.h:158
CINOSMovePathInterpolatorNurbs::GetCurveLength
virtual double GetCurveLength() override
get curve length
SINOSNurbsPart
Definition: cinosmovepathinterpolatornurbs.h:50
CINOSNurbsCurve< DF_INOS_MOVEPATH_MAX_AXES >
CINOSMovePathInterpolatorNurbs::m_dOverlapExtend
double m_dOverlapExtend
overlap reduce length
Definition: cinosmovepathinterpolatornurbs.h:166
CINOSMovePathInterpolatorNurbs::CINOSMovePathInterpolatorNurbs
CINOSMovePathInterpolatorNurbs(CINOSMovePathCurve *apCurve, CINOSMovePath *apPath=NULL)
constructor
SINOSNurbsPart::m_pSegmentFirst
CINOSMovePathSegment * m_pSegmentFirst
pointer to first curve segment
Definition: cinosmovepathinterpolatornurbs.h:59
SINOSNurbsPart::m_uSegmentActualIndex
uint32 m_uSegmentActualIndex
actual segment index
Definition: cinosmovepathinterpolatornurbs.h:63
CINOSMovePathInterpolatorNurbs::PreparePart
virtual uint32 PreparePart(CINOSMovePathSegmentBase *apBgn, CINOSMovePathSegmentBase *apEnd, CINOSMovePathSegmentBase *apNxt, double adTolerance, double adShorten=0.0, double adExtend=0.0)
prepare part
CINOSMovePathInterpolatorNurbs::Prepare
virtual uint32 Prepare() override
do precalculation
CINOSMovePathInterpolatorNurbs
Definition: cinosmovepathinterpolatornurbs.h:74
CINOSMovePathInterpolatorNurbs::m_uParts
uint32 m_uParts
number of parts
Definition: cinosmovepathinterpolatornurbs.h:150
CINOSMovePathInterpolator
Definition: cinosmovepathinterpolator.h:81
CINOSMovePathInterpolatorNurbs::GetDerivative
virtual void GetDerivative(uint32 auLevel, double adP, TINOSMovePathVec &ovDer) override
get auLevel derivative vector at 'adP'
CINOSMovePathInterpolatorNurbs::GetPosition
virtual void GetPosition(double adP, CINOSMovePathSegment *&opSegment, TINOSMovePathVec &ovPos) override
get position vector at 'adP'
SINOSNurbsPart::m_Curve
CINOSNurbsCurve< DF_INOS_MOVEPATH_MAX_AXES > m_Curve
curve
Definition: cinosmovepathinterpolatornurbs.h:67
DF_INOS_MOVEPATH_MAX_POINTS
#define DF_INOS_MOVEPATH_MAX_POINTS
Definition: inosdefault.h:161
CINOSMovePathInterpolatorNurbs::GetDirection
virtual void GetDirection(double adP, TINOSMovePathVec &ovDir) override
get direction vector at 'adP'
CINOSMovePath
Definition: cinosmovepath.h:549
CINOSMovePathInterpolatorNurbs::GetD2max
virtual void GetD2max(double adBgn, double adEnd, TINOSMovePathVec &aD2max) override
get max D2 vector of given range
CINOSMovePathSegment
Definition: cinosmovepathsegment.h:44
CINOSMovePathCurve
Definition: cinosmovepathcurve.h:55
CINOSMovePathSegmentBase
Definition: cinosmovepathsegmentbase.h:47
SINOSNurbsPart::m_pSegmentActual
CINOSMovePathSegment * m_pSegmentActual
pointer to actual curve segment
Definition: cinosmovepathinterpolatornurbs.h:61
cinosmovepathinterpolator.h
The CINOSMovePathInterpolator class.
SINOSNurbsPart::m_dStart
double m_dStart
part start
Definition: cinosmovepathinterpolatornurbs.h:53
CINOSMovePathInterpolatorNurbs::m_dLength
double m_dLength
curve length
Definition: cinosmovepathinterpolatornurbs.h:148
CINOSMovePathInterpolatorNurbs::Cleanup
virtual void Cleanup() override
cleanup
cinosnurbscurve.h
The CINOSNurbsCurve class.
CINOSMovePathInterpolatorNurbs::GetPartPoints
uint32 GetPartPoints(CINOSMovePathSegmentBase *apBgn, CINOSMovePathSegmentBase *apEnd, double adTolerance)
get number of part points
CINOSMovePathInterpolatorNurbs::m_uInterpolationPoints
uint32 m_uInterpolationPoints
nurbs interpolation points
Definition: cinosmovepathinterpolatornurbs.h:160
CINOSMovePathInterpolatorNurbs::m_pPart
SINOSNurbsPart * m_pPart[DF_INOS_MOVEPATH_MAX_POINTS]
array of parts
Definition: cinosmovepathinterpolatornurbs.h:154
CINOSMovePathInterpolatorNurbs::m_OverlapPos
TINOSMovePathVec m_OverlapPos
overlap position
Definition: cinosmovepathinterpolatornurbs.h:164
CINOSMovePathInterpolatorNurbs::GetD3max
virtual void GetD3max(double adBgn, double adEnd, TINOSMovePathVec &aD3max) override
get max D3 vector of given range
CINOSMovePathInterpolatorNurbs::m_dVectorLength
double m_dVectorLength[DF_INOS_MOVEPATH_MAX_POINTS >>1]
sub parts vector lengths
Definition: cinosmovepathinterpolatornurbs.h:156
CINOSMovePathInterpolatorNurbs::GetDirectionLast
virtual void GetDirectionLast(TINOSMovePathVec &ovDir) override
get direction vector at the end
SINOSNurbsPart::m_uSegmentActualId
uint32 m_uSegmentActualId
actual segment id
Definition: cinosmovepathinterpolatornurbs.h:65
CINOSMovePathInterpolatorNurbs::m_uLastPart
uint32 m_uLastPart
last part index
Definition: cinosmovepathinterpolatornurbs.h:152
CINOSMovePathInterpolatorNurbs::CalcAngle
virtual double CalcAngle(CINOSMovePathSegment *apSeg1, CINOSMovePathSegment *apSeg2)
calc angle between segments