116 #ifndef DOXYGEN_SHOULD_SKIP_THIS
130 ClothoidData() =
default;
133 delta_theta( real_type s )
const
134 {
return s*(m_kappa0 + 0.5*s*m_dk); }
136 real_type deltaTheta( real_type s )
const {
return delta_theta( s ); }
142 theta( real_type s )
const
143 {
return m_theta0 + s*(m_kappa0 + 0.5*s*m_dk); }
145 real_type theta_D ( real_type s )
const {
return m_kappa0 + s*m_dk; }
146 real_type theta_DD ( real_type )
const {
return m_dk; }
147 real_type theta_DDD( real_type )
const {
return 0; }
152 real_type kappa ( real_type s )
const {
return m_kappa0 + s*m_dk; }
153 real_type kappa_D ( real_type )
const {
return m_dk; }
154 real_type kappa_DD ( real_type )
const {
return 0; }
155 real_type kappa_DDD( real_type )
const {
return 0; }
167 real_type X_ISO ( real_type s, real_type offs )
const;
168 real_type Y_ISO ( real_type s, real_type offs )
const;
169 real_type X_ISO_D ( real_type s, real_type offs )
const;
170 real_type Y_ISO_D ( real_type s, real_type offs )
const;
171 real_type X_ISO_DD ( real_type s, real_type offs )
const;
172 real_type Y_ISO_DD ( real_type s, real_type offs )
const;
173 real_type X_ISO_DDD( real_type s, real_type offs )
const;
174 real_type Y_ISO_DDD( real_type s, real_type offs )
const;
178 real_type X_SAE ( real_type s, real_type offs )
const;
179 real_type Y_SAE ( real_type s, real_type offs )
const;
180 real_type X_SAE_D ( real_type s, real_type offs )
const;
181 real_type Y_SAE_D ( real_type s, real_type offs )
const;
182 real_type X_SAE_DD ( real_type s, real_type offs )
const;
183 real_type Y_SAE_DD ( real_type s, real_type offs )
const;
184 real_type X_SAE_DDD( real_type s, real_type offs )
const;
185 real_type Y_SAE_DDD( real_type s, real_type offs )
const;
189 real_type tg0_x()
const {
return cos( m_theta0 ); }
190 real_type tg0_y()
const {
return sin( m_theta0 ); }
192 real_type tg_x( real_type s )
const {
return cos(this->theta(s)); }
193 real_type tg_y( real_type s )
const {
return sin(this->theta(s)); }
204 real_type nor0_x_ISO()
const {
return -this->tg0_y(); }
205 real_type nor0_y_ISO()
const {
return this->tg0_x(); }
207 real_type nor_x_ISO( real_type s )
const {
return -this->tg_y(s); }
208 real_type nor_y_ISO( real_type s )
const {
return this->tg_x(s); }
210 real_type nor_x_ISO_D( real_type s )
const {
return -this->tg_y_D(s); }
211 real_type nor_y_ISO_D( real_type s )
const {
return this->tg_x_D(s); }
213 real_type nor_x_ISO_DD( real_type s )
const {
return -this->tg_y_DD(s); }
214 real_type nor_y_ISO_DD( real_type s )
const {
return this->tg_x_DD(s); }
216 real_type nor_x_ISO_DDD( real_type s )
const {
return -this->tg_y_DDD(s); }
217 real_type nor_y_ISO_DDD( real_type s )
const {
return this->tg_x_DDD(s); }
219 real_type nor0_x_SAE()
const {
return this->tg0_y(); }
220 real_type nor0_y_SAE()
const {
return -this->tg0_x(); }
222 real_type nor_x_SAE( real_type s )
const {
return this->tg_y(s); }
223 real_type nor_y_SAE( real_type s )
const {
return -this->tg_x(s); }
225 real_type nor_x_SAE_D( real_type s )
const {
return this->tg_y_D(s); }
226 real_type nor_y_SAE_D( real_type s )
const {
return -this->tg_x_D(s); }
228 real_type nor_x_SAE_DD( real_type s )
const {
return this->tg_y_DD(s); }
229 real_type nor_y_SAE_DD( real_type s )
const {
return -this->tg_x_DD(s); }
231 real_type nor_x_SAE_DDD( real_type s )
const {
return this->tg_y_DDD(s); }
232 real_type nor_y_SAE_DDD( real_type s )
const {
return -this->tg_x_DDD(s); }
234 void tg( real_type s, real_type & tx, real_type & ty )
const;
235 void tg_D( real_type s, real_type & tx, real_type & ty )
const;
236 void tg_DD( real_type s, real_type & tx, real_type & ty )
const;
237 void tg_DDD( real_type s, real_type & tx, real_type & ty )
const;
239 void nor_ISO( real_type s, real_type & nx, real_type & ny )
const;
240 void nor_ISO_D( real_type s, real_type & nx_D, real_type & ny_D )
const;
241 void nor_ISO_DD( real_type s, real_type & nx_DD, real_type & ny_DD )
const;
242 void nor_ISO_DDD( real_type s, real_type & nx_DDD, real_type & ny_DDD )
const;
244 void nor_SAE( real_type s, real_type & nx, real_type & ny )
const;
245 void nor_SAE_D( real_type s, real_type & nx_D, real_type & ny_D )
const;
246 void nor_SAE_DD( real_type s, real_type & nx_DD, real_type & ny_DD )
const;
247 void nor_SAE_DDD( real_type s, real_type & nx_DDD, real_type & ny_DDD )
const;
325 this->eval_ISO( s, -offs, x, y );
335 this->eval_ISO_D( s, -offs, x_D, y_D );
345 this->eval_ISO_DD( s, -offs, x_DD, y_DD );
355 this->eval_ISO_DDD( s, -offs, x_DDD, y_DDD );
359 eval( real_type s, ClothoidData & C )
const;
361 real_type c0x()
const {
return m_x0 - (sin(m_theta0)/m_kappa0); }
362 real_type c0y()
const {
return m_y0 + (cos(m_theta0)/m_kappa0); }
365 Pinfinity( real_type & x, real_type & y,
bool plus )
const;
368 reverse( real_type L );
371 reverse( real_type L, ClothoidData & out)
const;
374 rotate( real_type angle, real_type cx, real_type cy );
377 origin_at( real_type s_origin );
380 split_at_flex( ClothoidData & C0, ClothoidData & C1 )
const;
383 aplus( real_type dtheta )
const;
388 real_type & xx0, real_type & yy0,
389 real_type & xx1, real_type & yy1,
390 real_type & xx2, real_type & yy2
397 real_type & xx0, real_type & yy0,
398 real_type & xx1, real_type & yy1,
399 real_type & xx2, real_type & yy2
406 real_type & xx0, real_type & yy0,
407 real_type & xx1, real_type & yy1,
408 real_type & xx2, real_type & yy2
410 return this->bbTriangle_ISO( L, -offs, xx0, yy0, xx1, yy1, xx2, yy2 );
423 bool compute_deriv =
false,
424 real_type L_D[2] =
nullptr,
425 real_type k_D[2] =
nullptr,
426 real_type dk_D[2] =
nullptr
442 info( ostream_type & s )
const;
void GeneralizedFresnelCS(integer nk, real_type a, real_type b, real_type c, real_type intC[], real_type intS[])
Definition Fresnel.cc:601
double real_type
real type number
Definition Clothoids.hh:79
void FresnelCS(real_type x, real_type &C, real_type &S)
Definition Fresnel.cc:187
int integer
integer type number
Definition Clothoids.hh:80