INOS
cinosmovepathpartcircle.h
Go to the documentation of this file.
1//******************************************************************************
26//******************************************************************************
27#ifndef INC_CINOSMOVEPATHPARTCIRCLE_H
28#define INC_CINOSMOVEPATHPARTCIRCLE_H
29//------------------------------------------------------------------------------
30// includes
31//------------------------------------------------------------------------------
32//
33// system
34#include <inos.h>
35//
36// C++
37//
38// project
39//
40//------------------------------------------------------------------------------
41// class definition
42//------------------------------------------------------------------------------
43//
50{
51 //--- user interface ---------------------------------------------------
52
53 // public member functions
54 public :
55
58 {
59 // axis 0 is our main one
60 return m_uIndex[0];
61 }
62
64 virtual uint32 GetInvolved()
65 {
66 return (1<<m_uIndex[0])|(1<<m_uIndex[1]);
67 }
68
70 double GetRadius()
71 {
72 // do it
73 return m_dRadius;
74 }
75
77 virtual double Prepare(uint32 auIncremental, double* apPosition);
78
80 virtual void GetPosition(double adP, double* apPosition);
82 virtual void GetDerivative(uint32 auLevel, double adP, double* apDerivative);
84 virtual void GetD2max(double* apD2max);
86 virtual void GetD3max(double* apD2max);
88 virtual double GetMaxVectorLength(double adError);
89
92 {
93 // default is no
94 return true;
95 }
96
98 virtual bool IsEndBlendingAllowed()
99 {
100 // default is no
101 return true;
102 }
103
104 //--- internals --------------------------------------------------------
105
106 friend class CINOSMovePath;
107
108 // constructor / destructor
109 public :
111 enum {
112 eOptNone = 0x00000000,
113 eOptClockWise = 0x00000001,
114 };
137 double adMid2, double adAngle, bool abAngleAbsolute, uint32 auOptions);
157 double adEnd2, double adMid1, double adMid2, uint32 auOptions);
186 double adEnd2, double adRadius, uint32 auOptions);
189
190 // protected members
191 protected :
199 double m_dAngle;
201 double m_dAlpha;
203 double m_dAlpha0;
205 double m_dRadius;
209 double m_dMidO[2];
211 double m_dMidC[2];
213 double m_dEndO[2];
215 double m_dEndC[2];
216
217 // dynamic object handling
219};
220
221//------------------------------------------------------------------------------
222// end of file
223//------------------------------------------------------------------------------
224
225#endif // INC_CINOSMOVEPATHPARTCIRCLE_H
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
Definition cinosmcmodule.h:1900
Definition cinosmovepathpartcircle.h:50
uint8 m_uSubType
circle type
Definition cinosmovepathpartcircle.h:193
double m_dEndO[2]
circle end point (original)
Definition cinosmovepathpartcircle.h:213
CINOSMovePathPartCircle(uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adMid1, double adMid2, uint32 auOptions)
virtual void GetPosition(double adP, double *apPosition)
get position at P
double GetRadius()
get circle radius
Definition cinosmovepathpartcircle.h:70
uint32 m_uOptions
circle options
Definition cinosmovepathpartcircle.h:197
virtual void GetDerivative(uint32 auLevel, double adP, double *apDerivative)
get auLevel derivative at P
double m_dMidO[2]
circle middle point (original)
Definition cinosmovepathpartcircle.h:209
CINOSMovePathPartCircle(uint8 auIndex1, uint8 auIndex2, double adMid1, double adMid2, double adAngle, bool abAngleAbsolute, uint32 auOptions)
virtual uint8 GetMainAxisIndex()
get main axis index (relevant for abs/inc/nlg)
Definition cinosmovepathpartcircle.h:57
uint8 m_uIndex[2]
axis indexes
Definition cinosmovepathpartcircle.h:195
virtual bool IsEndBlendingAllowed()
return true if end blending allowed
Definition cinosmovepathpartcircle.h:98
virtual uint32 GetInvolved()
get mask of involved axes
Definition cinosmovepathpartcircle.h:64
double m_dAlpha0
starting angle
Definition cinosmovepathpartcircle.h:203
virtual void GetD3max(double *apD2max)
get max 3. derivative of part
virtual double GetMaxVectorLength(double adError)
get max linear error
CINOSMovePathPartCircle(uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adRadius, uint32 auOptions)
double m_dEndC[2]
circle end point (calculated)
Definition cinosmovepathpartcircle.h:215
virtual void GetD2max(double *apD2max)
get max 2. derivative of part
double m_dAlpha
calculated angle
Definition cinosmovepathpartcircle.h:201
double m_dAngle
requested angle
Definition cinosmovepathpartcircle.h:199
virtual double Prepare(uint32 auIncremental, double *apPosition)
prepare part
virtual ~CINOSMovePathPartCircle()
destructor
double m_dRadiusEnd
radius at end of circle
Definition cinosmovepathpartcircle.h:207
double m_dMidC[2]
circle middle point (calculated)
Definition cinosmovepathpartcircle.h:211
virtual bool IsStartBlendingAllowed()
return true if start blending allowed
Definition cinosmovepathpartcircle.h:91
double m_dRadius
requested radius
Definition cinosmovepathpartcircle.h:205
Definition cinosmovepathpart.h:45
Definition cinosmovepath.h:566