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 
57  virtual uint8 GetMainAxisIndex() override
58  {
59  // axis 0 is our main one
60  return m_uIndex[0];
61  }
62 
64  virtual uint32 GetInvolved() override
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) override;
78 
80  virtual void GetPosition(double adP, double* apPosition) override;
82  virtual void GetDerivative(uint32 auLevel, double adP, double* apDerivative) override;
84  virtual void GetD2max(double* apD2max) override;
86  virtual void GetD3max(double* apD2max) override;
88  virtual double GetMaxVectorLength(double adError) override;
89 
91  virtual bool IsStartBlendingAllowed() override
92  {
93  // default is no
94  return true;
95  }
96 
98  virtual bool IsEndBlendingAllowed() override
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  };
136  CINOSMovePathPartCircle(uint8 auIndex1, uint8 auIndex2, double adMid1,
137  double adMid2, double adAngle, bool abAngleAbsolute, uint32 auOptions);
156  CINOSMovePathPartCircle(uint8 auIndex1, uint8 auIndex2, double adEnd1,
157  double adEnd2, double adMid1, double adMid2, uint32 auOptions);
185  CINOSMovePathPartCircle(uint8 auIndex1, uint8 auIndex2, double adEnd1,
186  double adEnd2, double adRadius, uint32 auOptions);
188  virtual ~CINOSMovePathPartCircle();
189 
190  // protected members
191  protected :
193  uint8 m_uSubType;
195  uint8 m_uIndex[2];
197  uint32 m_uOptions;
199  double m_dAngle;
201  double m_dAlpha;
203  double m_dAlpha0;
205  double m_dRadius;
207  double m_dRadiusEnd;
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
218  DECLARE_DYNAMIC(CINOSMovePathPartCircle);
219 };
220 
221 //------------------------------------------------------------------------------
222 // end of file
223 //------------------------------------------------------------------------------
224 
225 #endif // INC_CINOSMOVEPATHPARTCIRCLE_H
CINOSMovePathPartCircle::Prepare
virtual double Prepare(uint32 auIncremental, double *apPosition) override
prepare part
CINOSMovePathPartCircle::GetRadius
double GetRadius()
get circle radius
Definition: cinosmovepathpartcircle.h:70
CINOSMovePathPartCircle::GetMaxVectorLength
virtual double GetMaxVectorLength(double adError) override
get max linear error
CINOSMovePathPartCircle::m_dMidO
double m_dMidO[2]
circle middle point (original)
Definition: cinosmovepathpartcircle.h:209
CINOSMovePathPartCircle::GetD2max
virtual void GetD2max(double *apD2max) override
get max 2. derivative of part
CINOSMovePathPartCircle
Definition: cinosmovepathpartcircle.h:49
CINOSMovePathPartCircle::m_dAlpha
double m_dAlpha
calculated angle
Definition: cinosmovepathpartcircle.h:201
CINOSMovePathPartCircle::GetDerivative
virtual void GetDerivative(uint32 auLevel, double adP, double *apDerivative) override
get auLevel derivative at P
CINOSMovePathPartCircle::m_dAlpha0
double m_dAlpha0
starting angle
Definition: cinosmovepathpartcircle.h:203
CINOSMovePathPartCircle::m_uOptions
uint32 m_uOptions
circle options
Definition: cinosmovepathpartcircle.h:197
CINOSMovePathPartCircle::m_uSubType
uint8 m_uSubType
circle type
Definition: cinosmovepathpartcircle.h:193
CINOSMovePathPartCircle::GetMainAxisIndex
virtual uint8 GetMainAxisIndex() override
get main axis index (relevant for abs/inc/nlg)
Definition: cinosmovepathpartcircle.h:57
CINOSMovePathPartCircle::IsStartBlendingAllowed
virtual bool IsStartBlendingAllowed() override
return true if start blending allowed
Definition: cinosmovepathpartcircle.h:91
CINOSMovePath
Definition: cinosmovepath.h:549
CINOSMovePathPartCircle::CINOSMovePathPartCircle
CINOSMovePathPartCircle(uint8 auIndex1, uint8 auIndex2, double adMid1, double adMid2, double adAngle, bool abAngleAbsolute, uint32 auOptions)
CINOSMovePathPartCircle::GetInvolved
virtual uint32 GetInvolved() override
get mask of involved axes
Definition: cinosmovepathpartcircle.h:64
CINOSMovePathPartCircle::m_dMidC
double m_dMidC[2]
circle middle point (calculated)
Definition: cinosmovepathpartcircle.h:211
CINOSMovePathPartCircle::m_dEndO
double m_dEndO[2]
circle end point (original)
Definition: cinosmovepathpartcircle.h:213
CINOSMovePathPartCircle::GetD3max
virtual void GetD3max(double *apD2max) override
get max 3. derivative of part
CINOSMovePathPart
Definition: cinosmovepathpart.h:44
CINOSMovePathPartCircle::GetPosition
virtual void GetPosition(double adP, double *apPosition) override
get position at P
CINOSMovePathPartCircle::m_uIndex
uint8 m_uIndex[2]
axis indexes
Definition: cinosmovepathpartcircle.h:195
CINOSMovePathPartCircle::~CINOSMovePathPartCircle
virtual ~CINOSMovePathPartCircle()
destructor
CINOSMovePathPartCircle::m_dAngle
double m_dAngle
requested angle
Definition: cinosmovepathpartcircle.h:199
CINOSMovePathPartCircle::m_dRadiusEnd
double m_dRadiusEnd
radius at end of circle
Definition: cinosmovepathpartcircle.h:207
CINOSMovePathPartCircle::m_dEndC
double m_dEndC[2]
circle end point (calculated)
Definition: cinosmovepathpartcircle.h:215
CINOSMovePathPartCircle::IsEndBlendingAllowed
virtual bool IsEndBlendingAllowed() override
return true if end blending allowed
Definition: cinosmovepathpartcircle.h:98
CINOSMovePathPartCircle::m_dRadius
double m_dRadius
requested radius
Definition: cinosmovepathpartcircle.h:205