INOS
cinosmovepathpartclothoid.h
Go to the documentation of this file.
1 //******************************************************************************
26 //******************************************************************************
27 #ifndef INC_CINOSMOVEPATHPARTCLOTHOID_H
28 #define INC_CINOSMOVEPATHPARTCLOTHOID_H
29 //------------------------------------------------------------------------------
30 // includes
31 //------------------------------------------------------------------------------
32 //
33 // system
34 #include <inos.h>
35 //
36 // C++
37 //
38 // project
39 //
40 //------------------------------------------------------------------------------
41 // struct definition
42 //------------------------------------------------------------------------------
43 //
45 {
47  enum {
48  eCnsSeries = 5,
49  };
51  double m_dX[eCnsSeries];
52  double m_dY[eCnsSeries];
53 };
54 //
55 //------------------------------------------------------------------------------
56 // class definition
57 //------------------------------------------------------------------------------
58 //
60 {
61  //--- user interface ---------------------------------------------------
62 
63  // public member functions
64  public :
65 
67  virtual uint8 GetMainAxisIndex() override
68  {
69  // axis 0 is our main one
70  return m_uIndex[0];
71  }
72 
74  virtual uint32 GetInvolved() override
75  {
76  return (1<<m_uIndex[0])|(1<<m_uIndex[1]);
77  }
78 
80  virtual double Prepare(uint32 auIncremental, double* apPosition) override;
81 
83  virtual void GetPosition(double adP, double* apPosition) override;
85  virtual void GetDerivative(uint32 auLevel, double adP, double* apDerivative) override;
87  virtual void GetD2max(double* apD2max) override;
89  virtual void GetD3max(double* apD3max) override;
90 
93  static double GetTangentLength(double adR, double adL, double adGamma);
94 
95  //--- internals --------------------------------------------------------
96 
97  friend class CINOSMovePath;
98 
99  // constructor / destructor
100  public :
102  enum {
103  eOptNone = 0x00000000,
104  eOptClockWise = 0x00000001,
105  eOptInverted = 0x00000002,
106  };
107 
115  CINOSMovePathPartClothoid(uint8 auIndex1, uint8 auIndex2,
116  double adR, double adL, double adRotationAngle, uint32 auOptions);
118  virtual ~CINOSMovePathPartClothoid();
119 
121  static void GetXY(double adL, uint32 auOptions, double& adX, double& adY,
124  static void InitConstants(double adA, SINOSMovePathPartClothoidConstants& asConst);
125 
126  // protected members
127  protected :
129  double GetD2x(double adP);
131  double GetD2y(double adP);
133  double GetD3x(double adP);
135  double GetD3y(double adP);
136 
138  uint8 m_uIndex[2];
140  uint32 m_uOptions;
142  double m_dR;
144  double m_dL;
146  double m_dA;
147  double m_dA_2;
148  double m_dA_4;
152  double m_dCosA;
153  double m_dSinA;
155  double m_dXe;
156  double m_dYe;
157  // calculation constants
159 
160  // dynamic object handling
161  DECLARE_DYNAMIC(CINOSMovePathPartClothoid);
162 };
163 
164 //------------------------------------------------------------------------------
165 // end of file
166 //------------------------------------------------------------------------------
167 
168 #endif // INC_CINOSMOVEPATHPARTCLOTHOID_H
CINOSMovePathPartClothoid::GetXY
static void GetXY(double adL, uint32 auOptions, double &adX, double &adY, SINOSMovePathPartClothoidConstants &asConst)
get clothoid coordinates
CINOSMovePathPartClothoid::GetD3max
virtual void GetD3max(double *apD3max) override
get max 3. derivative of part
CINOSMovePathPartClothoid::m_dRotationAngle
double m_dRotationAngle
rotation angle
Definition: cinosmovepathpartclothoid.h:150
CINOSMovePathPartClothoid::Prepare
virtual double Prepare(uint32 auIncremental, double *apPosition) override
prepare part
SINOSMovePathPartClothoidConstants
Definition: cinosmovepathpartclothoid.h:44
CINOSMovePathPartClothoid::m_uOptions
uint32 m_uOptions
clothoid options
Definition: cinosmovepathpartclothoid.h:140
CINOSMovePathPartClothoid::GetTangentLength
static double GetTangentLength(double adR, double adL, double adGamma)
CINOSMovePathPartClothoid::GetD2y
double GetD2y(double adP)
get 2. derivative of y coord at given P
CINOSMovePathPartClothoid::GetD3x
double GetD3x(double adP)
get 3. derivative of x coord at given P
CINOSMovePathPartClothoid::InitConstants
static void InitConstants(double adA, SINOSMovePathPartClothoidConstants &asConst)
init calculation constants
CINOSMovePathPartClothoid::GetDerivative
virtual void GetDerivative(uint32 auLevel, double adP, double *apDerivative) override
get auLevel derivative at P
CINOSMovePathPartClothoid::m_dXe
double m_dXe
calc end coordinates
Definition: cinosmovepathpartclothoid.h:155
CINOSMovePathPartClothoid::CINOSMovePathPartClothoid
CINOSMovePathPartClothoid(uint8 auIndex1, uint8 auIndex2, double adR, double adL, double adRotationAngle, uint32 auOptions)
CINOSMovePathPartClothoid::GetPosition
virtual void GetPosition(double adP, double *apPosition) override
get position at P
CINOSMovePathPartClothoid::GetD2max
virtual void GetD2max(double *apD2max) override
get max 2. derivative of part
CINOSMovePathPartClothoid::m_dA
double m_dA
clothoid param A
Definition: cinosmovepathpartclothoid.h:146
CINOSMovePathPartClothoid::GetD2x
double GetD2x(double adP)
get 2. derivative of x coord at given P
CINOSMovePathPartClothoid::m_dCosA
double m_dCosA
rotation factors
Definition: cinosmovepathpartclothoid.h:152
SINOSMovePathPartClothoidConstants::m_dX
double m_dX[eCnsSeries]
calculation constants
Definition: cinosmovepathpartclothoid.h:51
CINOSMovePathPartClothoid::m_dR
double m_dR
requested radius
Definition: cinosmovepathpartclothoid.h:142
CINOSMovePathPartClothoid::~CINOSMovePathPartClothoid
virtual ~CINOSMovePathPartClothoid()
destructor
CINOSMovePathPartClothoid::GetD3y
double GetD3y(double adP)
get 3. derivative of y coord at given P
CINOSMovePath
Definition: cinosmovepath.h:549
CINOSMovePathPart
Definition: cinosmovepathpart.h:44
CINOSMovePathPartClothoid::m_uIndex
uint8 m_uIndex[2]
axis indexes
Definition: cinosmovepathpartclothoid.h:138
CINOSMovePathPartClothoid::GetInvolved
virtual uint32 GetInvolved() override
get mask of involved axes
Definition: cinosmovepathpartclothoid.h:74
CINOSMovePathPartClothoid::GetMainAxisIndex
virtual uint8 GetMainAxisIndex() override
get main axis index (relevant for abs/inc/nlg)
Definition: cinosmovepathpartclothoid.h:67
CINOSMovePathPartClothoid::m_dL
double m_dL
requested length
Definition: cinosmovepathpartclothoid.h:144
CINOSMovePathPartClothoid
Definition: cinosmovepathpartclothoid.h:59