INOS
cinosmovepathsegmentnurbs.h
Go to the documentation of this file.
1//******************************************************************************
26//******************************************************************************
27#ifndef INC_CINOSMOVEPATHSEGMENTNURBS_H
28#define INC_CINOSMOVEPATHSEGMENTNURBS_H
29//------------------------------------------------------------------------------
30// includes
31//------------------------------------------------------------------------------
32//
33// system
34#include <inos.h>
35#include <cinosnurbscurve.h>
37//
38// C++
39//
40// project
41//
42//------------------------------------------------------------------------------
43// class definition
44//------------------------------------------------------------------------------
45//
47{
48 //--- user interface ---------------------------------------------------
49
50 // public member functions
51 public :
52
55 {
56 // add point to my curve
58 }
59
61 void AddKnot(double adKnot, uint32 auMultiplicity = 1)
62 {
63 // add knot to my curve
65 }
66
68 virtual void GetPosition(double adP, TINOSMovePathVec& ovPos) override
69 {
70 // handle over to curve
71 m_pCurve->GetPosition(adP - this->m_dStart, ovPos);
72 ovPos = ovPos + this->m_vStart;
73 }
74
76 virtual void GetPositionFirst(TINOSMovePathVec& ovPos) override
77 {
78 // handle over to curve
80 ovPos = ovPos + this->m_vStart;
81 }
82
84 virtual void GetPositionLast(TINOSMovePathVec& ovPos) override
85 {
86 // handle over to curve
88 ovPos = ovPos + this->m_vStart;
89 }
90
92 virtual void GetDerivative(uint32 auLevel, double adP, TINOSMovePathVec& ovDir) override
93 {
94 // handle over to curve
95 m_pCurve->GetDerivative(auLevel, adP - this->m_dStart, ovDir);
96 }
97
99 virtual void GetD2max(TINOSMovePathVec& ovD2max) override
100 {
101 // handle over to curve
103 }
104
106 virtual void GetD3max(TINOSMovePathVec& ovD3max) override
107 {
108 // handle over to curve
110 }
111
113 virtual void GetDerivativeBgn(uint32 auLevel, TINOSMovePathVec& ovDir) override
114 {
115 // handle over to curve
117 }
118
120 virtual void GetDerivativeEnd(uint32 auLevel, TINOSMovePathVec& ovDir) override
121 {
122 // handle over to curve
124 }
125
127 virtual uint32 Check() override
128 {
129 // check curve
130 return m_pCurve->Check();
131 }
132
134 virtual uint32 Prepare(double& adP, uint32 uIncremental,
135 TINOSMovePathVec& ovPos, double adEpsilon) override;
136
137
139 virtual void Recalc(double& adP, TINOSMovePathVec& ovStart, uint32 auInvolved,
140 double adEpsilon) override
141 {
142 }
143
145 virtual bool IsEndBlendingAllowed() override
146 {
147 // ok
148 return false;
149 }
150
152 virtual bool IsContinuous(uint32 auLevel) override
153 {
154 // ok
155 return true;
156 }
157
163
164 //--- internals --------------------------------------------------------
165
166 friend class CINOSMovePath;
167 friend class CINOSMovePathCurve;
168
169 // constructor / destructor
170 public :
173 uint32 auInterpolationPoints, uint32 auLengthMask, double adVelocity);
174
176
177 // protected members
178 protected :
181
182 // dynamic object handling
184};
185
186
187//------------------------------------------------------------------------------
188// end of file
189//------------------------------------------------------------------------------
190
191#endif // INC_CINOSMOVEPATHSEGMENTNURBS_H
The CINOSMovePathSegment class.
The CINOSNurbsCurve class.
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
Definition cinosmcmodule.h:1900
Definition cinosmovepathcurve.h:56
Definition cinosmovepathsegmentnurbs.h:47
void AddKnot(double adKnot, uint32 auMultiplicity=1)
add knot to segment
Definition cinosmovepathsegmentnurbs.h:61
CINOSNurbsCurve< DF_INOS_MOVEPATH_MAX_AXES > * GetCurve()
return pointer to curve
Definition cinosmovepathsegmentnurbs.h:159
virtual void GetPosition(double adP, TINOSMovePathVec &ovPos) override
get position at 'adP'
Definition cinosmovepathsegmentnurbs.h:68
virtual bool IsContinuous(uint32 auLevel) override
return true if segment is auLevel continuous
Definition cinosmovepathsegmentnurbs.h:152
virtual void GetDerivative(uint32 auLevel, double adP, TINOSMovePathVec &ovDir) override
get auLevel derivative at 'adP'
Definition cinosmovepathsegmentnurbs.h:92
CINOSMovePathSegmentNurbs(uint32 auId, uint32 auFlags, uint32 auDegree, uint32 auInterpolationPoints, uint32 auLengthMask, double adVelocity)
constructor
virtual void GetPositionFirst(TINOSMovePathVec &ovPos) override
get last position
Definition cinosmovepathsegmentnurbs.h:76
void AddPoint(CINOSNurbsPoint< DF_INOS_MOVEPATH_MAX_AXES > &aPoint)
add point to segment
Definition cinosmovepathsegmentnurbs.h:54
CINOSNurbsCurve< DF_INOS_MOVEPATH_MAX_AXES > * m_pCurve
pointer to nurbs curve
Definition cinosmovepathsegmentnurbs.h:180
virtual void GetDerivativeBgn(uint32 auLevel, TINOSMovePathVec &ovDir) override
get auLevel derivative at segment begin
Definition cinosmovepathsegmentnurbs.h:113
virtual uint32 Prepare(double &adP, uint32 uIncremental, TINOSMovePathVec &ovPos, double adEpsilon) override
prepare segment
virtual void Recalc(double &adP, TINOSMovePathVec &ovStart, uint32 auInvolved, double adEpsilon) override
prepare segment
Definition cinosmovepathsegmentnurbs.h:139
virtual void GetDerivativeEnd(uint32 auLevel, TINOSMovePathVec &ovDir) override
get auLevel derivative at segment end
Definition cinosmovepathsegmentnurbs.h:120
virtual void GetD2max(TINOSMovePathVec &ovD2max) override
get max. second derivative over the whole segment
Definition cinosmovepathsegmentnurbs.h:99
virtual void GetD3max(TINOSMovePathVec &ovD3max) override
get max. 3rd derivative over the whole segment
Definition cinosmovepathsegmentnurbs.h:106
virtual void GetPositionLast(TINOSMovePathVec &ovPos) override
get last position
Definition cinosmovepathsegmentnurbs.h:84
virtual bool IsEndBlendingAllowed() override
return true if end blending allowed
Definition cinosmovepathsegmentnurbs.h:145
virtual uint32 Check() override
check segment integrity (called before added to curve)
Definition cinosmovepathsegmentnurbs.h:127
Definition cinosmovepathsegment.h:45
TINOSMovePathVec m_vStart
segment start position vector
Definition cinosmovepathsegment.h:296
double m_dStart
segment start position
Definition cinosmovepathsegment.h:292
Definition cinosmovepath.h:566
virtual void GetPositionLast(TINOSVector< N > &ovPos)
get last position
Definition cinosnurbscurve.h:411
virtual void GetD2max(TINOSVector< N > &ovD2Max)
get max. second derivative over the whole curve
Definition cinosnurbscurve.h:603
virtual void GetDerivativeEnd(uint32 auLevel, TINOSVector< N > &ovDer)
get auLevel derivative at curve end
Definition cinosnurbscurve.h:497
virtual void GetPositionFirst(TINOSVector< N > &ovPos)
get first position
Definition cinosnurbscurve.h:404
uint32 Check()
check curve
Definition cinosnurbscurve.h:141
virtual void GetDerivativeBgn(uint32 auLevel, TINOSVector< N > &ovDer)
get auLevel derivative at curve begin
Definition cinosnurbscurve.h:490
virtual void GetD3max(TINOSVector< N > &ovD3Max)
get max. 3rd derivative over the whole curve
Definition cinosnurbscurve.h:628
void AddKnot(double adKnot, uint32 auMultiplicity)
add knot to curve
Definition cinosnurbscurve.h:108
void AddPoint(CINOSNurbsPoint< N > &aPoint)
add control point to curve
Definition cinosnurbscurve.h:77
virtual void GetDerivative(uint32 auLevel, double adP, TINOSVector< N > &ovDer)
get auLevel derivative at 'adP'
Definition cinosnurbscurve.h:481
virtual void GetPosition(double adP, TINOSVector< N > &ovPos)
get position at 'adP'
Definition cinosnurbscurve.h:384