INOS
cinosmovepathpart.h
Go to the documentation of this file.
1 //******************************************************************************
26 //******************************************************************************
27 #ifndef INC_CINOSMOVEPATHPART_H
28 #define INC_CINOSMOVEPATHPART_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 //
45 {
46  //--- user interface ---------------------------------------------------
47 
48  // public member functions
49  public :
50 
51  // official supported part types
52  enum {
53  eTypeUnknown,
54  eTypeLinear,
55  eTypeLinearBay,
56  eTypeCircle,
57  eTypeRapid
58  };
59 
61  uint8 GetType()
62  {
63  // return type
64  return m_uType;
65  }
66 
68  virtual uint8 GetMainAxisIndex() = 0;
70  virtual uint32 GetInvolved() = 0;
71 
73  virtual double Prepare(uint32 auIncremental, double* apPosition) = 0;
74 
76  virtual void GetPosition(double adP, double* apPosition) = 0;
78  virtual void GetDerivative(uint32 auLevel, double adP, double* apDirection) = 0;
80  virtual void GetD2max(double* apD2max) = 0;
82  virtual void GetD3max(double* apD2max) = 0;
84  virtual double GetMaxVectorLength(double adError)
85  {
86  // not available
87  return 0.0;
88  }
89 
91  virtual bool IsStartBlendingAllowed()
92  {
93  // default is no
94  return false;
95  }
96 
98  virtual bool IsEndBlendingAllowed()
99  {
100  // default is no
101  return false;
102  }
103 
105  virtual bool IsContinuous(uint32 auLevel)
106  {
107  // default is yes
108  return true;
109  }
110  //--- internals --------------------------------------------------------
111 
112  friend class CINOSMovePath;
113 
114  // constructor / destructor
115  public :
117  CINOSMovePathPart () : m_uType(eTypeUnknown), m_pSegment(0)
118  {
119  }
121  CINOSMovePathPart (uint8 auType) : m_uType(auType), m_pSegment(0)
122  {
123  }
126  {
127  }
128 
130  void SetSegment(class CINOSMovePathSegment* apSegment)
131  {
132  // set pointer
133  m_pSegment = apSegment;
134  }
135 
136 
137  // protected members
138  protected :
140  uint8 m_uType;
143 
144  // dynamic object handling
145  DECLARE_DYNAMIC(CINOSMovePathPart);
146 };
147 
148 //------------------------------------------------------------------------------
149 // end of file
150 //------------------------------------------------------------------------------
151 
152 #endif // INC_CINOSMOVEPATHPART_H
CINOSMovePathPart::GetMaxVectorLength
virtual double GetMaxVectorLength(double adError)
get max vector length for given error
Definition: cinosmovepathpart.h:84
CINOSMovePathPart::IsStartBlendingAllowed
virtual bool IsStartBlendingAllowed()
return true if start blending allowed
Definition: cinosmovepathpart.h:91
CINOSMovePathPart::CINOSMovePathPart
CINOSMovePathPart(uint8 auType)
constructor
Definition: cinosmovepathpart.h:121
CINOSMovePathPart::SetSegment
void SetSegment(class CINOSMovePathSegment *apSegment)
set pointer to my segment
Definition: cinosmovepathpart.h:130
CINOSMovePathPart::GetMainAxisIndex
virtual uint8 GetMainAxisIndex()=0
get main axis index (relevant for abs/inc/nlg)
CINOSMovePathPart::m_uType
uint8 m_uType
part type
Definition: cinosmovepathpart.h:140
CINOSMovePathPart::GetDerivative
virtual void GetDerivative(uint32 auLevel, double adP, double *apDirection)=0
get auLevel derivative at P
CINOSMovePathPart::IsContinuous
virtual bool IsContinuous(uint32 auLevel)
return true if part is auLevel continuous
Definition: cinosmovepathpart.h:105
CINOSMovePathPart::m_pSegment
class CINOSMovePathSegment * m_pSegment
pointer to my segment
Definition: cinosmovepathpart.h:142
CINOSMovePathPart::GetType
uint8 GetType()
get part type
Definition: cinosmovepathpart.h:61
CINOSMovePath
Definition: cinosmovepath.h:549
CINOSMovePathSegment
Definition: cinosmovepathsegment.h:44
CINOSMovePathPart
Definition: cinosmovepathpart.h:44
CINOSMovePathPart::IsEndBlendingAllowed
virtual bool IsEndBlendingAllowed()
return true if end blending allowed
Definition: cinosmovepathpart.h:98
CINOSMovePathPart::~CINOSMovePathPart
virtual ~CINOSMovePathPart()
destructor
Definition: cinosmovepathpart.h:125
CINOSMovePathPart::GetD3max
virtual void GetD3max(double *apD2max)=0
get max 3. derivative of part
CINOSMovePathPart::GetInvolved
virtual uint32 GetInvolved()=0
get mask of involved axes
CINOSMovePathPart::GetPosition
virtual void GetPosition(double adP, double *apPosition)=0
get position at P
CINOSMovePathPart::GetD2max
virtual void GetD2max(double *apD2max)=0
get max 2. derivative of part
CINOSMovePathPart::Prepare
virtual double Prepare(uint32 auIncremental, double *apPosition)=0
prepare part
CINOSMovePathPart::CINOSMovePathPart
CINOSMovePathPart()
constructor
Definition: cinosmovepathpart.h:117