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>
36 #include <cinosmovepathsegment.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
57  m_pCurve->AddPoint(aPoint);
58  }
59 
61  void AddKnot(double adKnot, uint32 auMultiplicity = 1)
62  {
63  // add knot to my curve
64  m_pCurve->AddKnot(adKnot, auMultiplicity);
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
79  m_pCurve->GetPositionFirst(ovPos);
80  ovPos = ovPos + this->m_vStart;
81  }
82 
84  virtual void GetPositionLast(TINOSMovePathVec& ovPos) override
85  {
86  // handle over to curve
87  m_pCurve->GetPositionLast(ovPos);
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
102  m_pCurve->GetD2max(ovD2max);
103  }
104 
106  virtual void GetD3max(TINOSMovePathVec& ovD3max) override
107  {
108  // handle over to curve
109  m_pCurve->GetD3max(ovD3max);
110  }
111 
113  virtual void GetDerivativeBgn(uint32 auLevel, TINOSMovePathVec& ovDir) override
114  {
115  // handle over to curve
116  m_pCurve->GetDerivativeBgn(auLevel, ovDir);
117  }
118 
120  virtual void GetDerivativeEnd(uint32 auLevel, TINOSMovePathVec& ovDir) override
121  {
122  // handle over to curve
123  m_pCurve->GetDerivativeEnd(auLevel, ovDir);
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 
160  {
161  return m_pCurve;
162  }
163 
164  //--- internals --------------------------------------------------------
165 
166  friend class CINOSMovePath;
167  friend class CINOSMovePathCurve;
168 
169  // constructor / destructor
170  public :
172  CINOSMovePathSegmentNurbs (uint32 auId, uint32 auFlags, uint32 auDegree,
173  uint32 auInterpolationPoints, uint32 auLengthMask, double adVelocity);
174 
175  virtual ~CINOSMovePathSegmentNurbs();
176 
177  // protected members
178  protected :
181 
182  // dynamic object handling
183  DECLARE_DYNAMIC(CINOSMovePathSegmentNurbs);
184 };
185 
186 
187 //------------------------------------------------------------------------------
188 // end of file
189 //------------------------------------------------------------------------------
190 
191 #endif // INC_CINOSMOVEPATHSEGMENTNURBS_H
CINOSMovePathSegmentNurbs::GetD2max
virtual void GetD2max(TINOSMovePathVec &ovD2max) override
get max. second derivative over the whole segment
Definition: cinosmovepathsegmentnurbs.h:99
CINOSMovePathSegmentNurbs::IsEndBlendingAllowed
virtual bool IsEndBlendingAllowed() override
return true if end blending allowed
Definition: cinosmovepathsegmentnurbs.h:145
cinosmovepathsegment.h
The CINOSMovePathSegment class.
CINOSNurbsCurve::AddPoint
void AddPoint(CINOSNurbsPoint< N > &aPoint)
add control point to curve
Definition: cinosnurbscurve.h:77
CINOSNurbsCurve::GetD3max
virtual void GetD3max(TINOSVector< N > &ovD3Max)
get max. 3rd derivative over the whole curve
Definition: cinosnurbscurve.h:628
CINOSNurbsCurve::GetPosition
virtual void GetPosition(double adP, TINOSVector< N > &ovPos)
get position at 'adP'
Definition: cinosnurbscurve.h:384
CINOSNurbsCurve::GetPositionFirst
virtual void GetPositionFirst(TINOSVector< N > &ovPos)
get first position
Definition: cinosnurbscurve.h:404
CINOSMovePathSegmentNurbs::GetDerivative
virtual void GetDerivative(uint32 auLevel, double adP, TINOSMovePathVec &ovDir) override
get auLevel derivative at 'adP'
Definition: cinosmovepathsegmentnurbs.h:92
CINOSMovePathSegmentNurbs
Definition: cinosmovepathsegmentnurbs.h:46
CINOSMovePathSegmentNurbs::IsContinuous
virtual bool IsContinuous(uint32 auLevel) override
return true if segment is auLevel continuous
Definition: cinosmovepathsegmentnurbs.h:152
CINOSNurbsCurve< DF_INOS_MOVEPATH_MAX_AXES >
CINOSNurbsCurve::GetD2max
virtual void GetD2max(TINOSVector< N > &ovD2Max)
get max. second derivative over the whole curve
Definition: cinosnurbscurve.h:603
CINOSMovePathSegmentNurbs::m_pCurve
CINOSNurbsCurve< DF_INOS_MOVEPATH_MAX_AXES > * m_pCurve
pointer to nurbs curve
Definition: cinosmovepathsegmentnurbs.h:180
CINOSMovePathSegmentNurbs::Check
virtual uint32 Check() override
check segment integrity (called before added to curve)
Definition: cinosmovepathsegmentnurbs.h:127
CINOSMovePathSegmentNurbs::GetD3max
virtual void GetD3max(TINOSMovePathVec &ovD3max) override
get max. 3rd derivative over the whole segment
Definition: cinosmovepathsegmentnurbs.h:106
CINOSNurbsCurve::AddKnot
void AddKnot(double adKnot, uint32 auMultiplicity)
add knot to curve
Definition: cinosnurbscurve.h:108
CINOSMovePath
Definition: cinosmovepath.h:549
CINOSMovePathSegmentNurbs::Recalc
virtual void Recalc(double &adP, TINOSMovePathVec &ovStart, uint32 auInvolved, double adEpsilon) override
prepare segment
Definition: cinosmovepathsegmentnurbs.h:139
CINOSMovePathSegmentNurbs::AddPoint
void AddPoint(CINOSNurbsPoint< DF_INOS_MOVEPATH_MAX_AXES > &aPoint)
add point to segment
Definition: cinosmovepathsegmentnurbs.h:54
CINOSMovePathSegment
Definition: cinosmovepathsegment.h:44
CINOSMovePathCurve
Definition: cinosmovepathcurve.h:55
CINOSNurbsPoint
Definition: cinosnurbspoint.h:46
CINOSMovePathSegmentNurbs::GetPositionLast
virtual void GetPositionLast(TINOSMovePathVec &ovPos) override
get last position
Definition: cinosmovepathsegmentnurbs.h:84
CINOSNurbsCurve::GetPositionLast
virtual void GetPositionLast(TINOSVector< N > &ovPos)
get last position
Definition: cinosnurbscurve.h:411
CINOSMovePathSegmentNurbs::CINOSMovePathSegmentNurbs
CINOSMovePathSegmentNurbs(uint32 auId, uint32 auFlags, uint32 auDegree, uint32 auInterpolationPoints, uint32 auLengthMask, double adVelocity)
constructor
cinosnurbscurve.h
The CINOSNurbsCurve class.
CINOSNurbsCurve::Check
uint32 Check()
check curve
Definition: cinosnurbscurve.h:141
CINOSMovePathSegmentNurbs::AddKnot
void AddKnot(double adKnot, uint32 auMultiplicity=1)
add knot to segment
Definition: cinosmovepathsegmentnurbs.h:61
CINOSMovePathSegmentNurbs::GetDerivativeEnd
virtual void GetDerivativeEnd(uint32 auLevel, TINOSMovePathVec &ovDir) override
get auLevel derivative at segment end
Definition: cinosmovepathsegmentnurbs.h:120
CINOSMovePathSegmentNurbs::GetPosition
virtual void GetPosition(double adP, TINOSMovePathVec &ovPos) override
get position at 'adP'
Definition: cinosmovepathsegmentnurbs.h:68
CINOSNurbsCurve::GetDerivativeEnd
virtual void GetDerivativeEnd(uint32 auLevel, TINOSVector< N > &ovDer)
get auLevel derivative at curve end
Definition: cinosnurbscurve.h:497
CINOSMovePathSegment::m_vStart
TINOSMovePathVec m_vStart
segment start position vector
Definition: cinosmovepathsegment.h:296
CINOSMovePathSegmentNurbs::GetCurve
CINOSNurbsCurve< DF_INOS_MOVEPATH_MAX_AXES > * GetCurve()
return pointer to curve
Definition: cinosmovepathsegmentnurbs.h:159
CINOSMovePathSegmentNurbs::Prepare
virtual uint32 Prepare(double &adP, uint32 uIncremental, TINOSMovePathVec &ovPos, double adEpsilon) override
prepare segment
CINOSMovePathSegmentNurbs::GetPositionFirst
virtual void GetPositionFirst(TINOSMovePathVec &ovPos) override
get last position
Definition: cinosmovepathsegmentnurbs.h:76
CINOSNurbsCurve::GetDerivativeBgn
virtual void GetDerivativeBgn(uint32 auLevel, TINOSVector< N > &ovDer)
get auLevel derivative at curve begin
Definition: cinosnurbscurve.h:490
CINOSMovePathSegmentNurbs::GetDerivativeBgn
virtual void GetDerivativeBgn(uint32 auLevel, TINOSMovePathVec &ovDir) override
get auLevel derivative at segment begin
Definition: cinosmovepathsegmentnurbs.h:113
CINOSNurbsCurve::GetDerivative
virtual void GetDerivative(uint32 auLevel, double adP, TINOSVector< N > &ovDer)
get auLevel derivative at 'adP'
Definition: cinosnurbscurve.h:481
CINOSMovePathSegment::m_dStart
double m_dStart
segment start position
Definition: cinosmovepathsegment.h:292