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
68 {
69 // axis 0 is our main one
70 return m_uIndex[0];
71 }
72
74 virtual uint32 GetInvolved()
75 {
76 return (1<<m_uIndex[0])|(1<<m_uIndex[1]);
77 }
78
80 virtual double Prepare(uint32 auIncremental, double* apPosition);
81
83 virtual void GetPosition(double adP, double* apPosition);
85 virtual void GetDerivative(uint32 auLevel, double adP, double* apDerivative);
87 virtual void GetD2max(double* apD2max);
89 virtual void GetD3max(double* apD3max);
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
116 double adR, double adL, double adRotationAngle, uint32 auOptions);
119
121 static void GetXY(double adL, uint32 auOptions, double& adX, double& adY,
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
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
162};
163
164//------------------------------------------------------------------------------
165// end of file
166//------------------------------------------------------------------------------
167
168#endif // INC_CINOSMOVEPATHPARTCLOTHOID_H
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
Definition cinosmcmodule.h:1900
Definition cinosmovepathpartclothoid.h:60
double m_dL
requested length
Definition cinosmovepathpartclothoid.h:144
double GetD2x(double adP)
get 2. derivative of x coord at given P
double m_dRotationAngle
rotation angle
Definition cinosmovepathpartclothoid.h:150
virtual uint8 GetMainAxisIndex()
get main axis index (relevant for abs/inc/nlg)
Definition cinosmovepathpartclothoid.h:67
double GetD2y(double adP)
get 2. derivative of y coord at given P
CINOSMovePathPartClothoid(uint8 auIndex1, uint8 auIndex2, double adR, double adL, double adRotationAngle, uint32 auOptions)
uint32 m_uOptions
clothoid options
Definition cinosmovepathpartclothoid.h:140
double m_dA
clothoid param A
Definition cinosmovepathpartclothoid.h:146
static double GetTangentLength(double adR, double adL, double adGamma)
double m_dCosA
rotation factors
Definition cinosmovepathpartclothoid.h:152
uint8 m_uIndex[2]
axis indexes
Definition cinosmovepathpartclothoid.h:138
virtual void GetD2max(double *apD2max)
get max 2. derivative of part
virtual ~CINOSMovePathPartClothoid()
destructor
virtual void GetDerivative(uint32 auLevel, double adP, double *apDerivative)
get auLevel derivative at P
double m_dR
requested radius
Definition cinosmovepathpartclothoid.h:142
virtual uint32 GetInvolved()
get mask of involved axes
Definition cinosmovepathpartclothoid.h:74
double m_dXe
calc end coordinates
Definition cinosmovepathpartclothoid.h:155
virtual void GetD3max(double *apD3max)
get max 3. derivative of part
double GetD3y(double adP)
get 3. derivative of y coord at given P
virtual double Prepare(uint32 auIncremental, double *apPosition)
prepare part
double GetD3x(double adP)
get 3. derivative of x coord at given P
virtual void GetPosition(double adP, double *apPosition)
get position at P
static void InitConstants(double adA, SINOSMovePathPartClothoidConstants &asConst)
init calculation constants
static void GetXY(double adL, uint32 auOptions, double &adX, double &adY, SINOSMovePathPartClothoidConstants &asConst)
get clothoid coordinates
Definition cinosmovepathpart.h:45
Definition cinosmovepath.h:566
Definition cinosmovepathpartclothoid.h:45
double m_dX[eCnsSeries]
calculation constants
Definition cinosmovepathpartclothoid.h:51