/Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Clothoids/src/Clothoids/Line.hxx Source File

Clothoids: /Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Clothoids/src/Clothoids/Line.hxx Source File
Clothoids
Line.hxx
1/*--------------------------------------------------------------------------*\
2 | |
3 | Copyright (C) 2017 |
4 | |
5 | , __ , __ |
6 | /|/ \ /|/ \ |
7 | | __/ _ ,_ | __/ _ ,_ |
8 | | \|/ / | | | | \|/ / | | | |
9 | |(__/|__/ |_/ \_/|/|(__/|__/ |_/ \_/|/ |
10 | /| /| |
11 | \| \| |
12 | |
13 | Enrico Bertolazzi |
14 | Dipartimento di Ingegneria Industriale |
15 | Universita` degli Studi di Trento |
16 | email: enrico.bertolazzi@unitn.it |
17 | |
18\*--------------------------------------------------------------------------*/
19
23
24namespace G2lib {
25
26 /*\
27 | _ _
28 | | | (_)_ __ ___
29 | | | | | '_ \ / _ \
30 | | |___| | | | | __/
31 | |_____|_|_| |_|\___|
32 \*/
33
37 class LineSegment : public BaseCurve {
38
39 friend class CircleArc;
40 friend class PolyLine;
41
42 real_type m_x0{0};
43 real_type m_y0{0};
44 real_type m_theta0{0};
45
46 real_type m_c0{1};
47 real_type m_s0{0};
48 real_type m_L{0};
49
50 public:
51
52 #include "BaseCurve_using.hxx"
53
54 LineSegment() = delete;
55 LineSegment( string const & name ) : BaseCurve( name ) {};
56
57 void setup( GenericContainer const & gc ) override;
58
59 LineSegment( LineSegment const & s ) : BaseCurve( s.name() )
60 { this->copy(s); }
61
62 explicit
63 LineSegment( BaseCurve const * pC );
64
68 explicit
70 real_type x0,
71 real_type y0,
72 real_type theta0,
73 real_type L,
74 string const & name
75 )
76 : BaseCurve( name )
77 , m_x0(x0)
78 , m_y0(y0)
79 , m_theta0(theta0)
80 , m_c0(cos(theta0))
81 , m_s0(sin(theta0))
82 , m_L(L)
83 {}
84
85 void
86 copy( LineSegment const & c ) {
87 m_x0 = c.m_x0;
88 m_y0 = c.m_y0;
89 m_theta0 = c.m_theta0;
90 m_c0 = c.m_c0;
91 m_s0 = c.m_s0;
92 m_L = c.m_L;
93 }
94
95 LineSegment const & operator = ( LineSegment const & s )
96 { this->copy(s); return *this; }
97
98 CurveType type() const override { return CurveType::LINE; }
99
101 length() const override
102 { return m_L; }
103
105 length_ISO( real_type ) const override
106 { return m_L; }
107
108 /*\
109 | _ _
110 | | |__ | |__ _____ __
111 | | '_ \| '_ \ / _ \ \/ /
112 | | |_) | |_) | (_) > <
113 | |_.__/|_.__/ \___/_/\_\
114 \*/
115
116 void
117 bbox(
118 real_type & xmin,
119 real_type & ymin,
120 real_type & xmax,
121 real_type & ymax
122 ) const override;
123
124 void
125 bbox_ISO(
126 real_type offs,
127 real_type & xmin,
128 real_type & ymin,
129 real_type & xmax,
130 real_type & ymax
131 ) const override;
132
133 /*\
134 | _ _ _____ _ _
135 | | |__| |_|_ _| _(_)__ _ _ _ __ _| |___
136 | | '_ \ '_ \| || '_| / _` | ' \/ _` | / -_)
137 | |_.__/_.__/|_||_| |_\__,_|_||_\__, |_\___|
138 | |___/
139 \*/
140
141 void
143 vector<Triangle2D> & tvec,
144 real_type max_angle = Utils::m_pi/6, // 30 degree
145 real_type max_size = 1e100, // unused
146 integer icurve = 0
147 ) const override;
148
149 void
151 real_type offs,
152 vector<Triangle2D> & tvec,
153 real_type max_angle = Utils::m_pi/6, // 30 degree
154 real_type max_size = 1e100, // unused
155 integer icurve = 0
156 ) const override;
157
158 void
160 real_type offs,
161 vector<Triangle2D> & tvec,
162 real_type max_angle = Utils::m_pi/6, // 30 degree
163 real_type max_size = 1e100,
164 integer icurve = 0
165 ) const override {
166 this->bb_triangles_ISO( -offs, tvec, max_angle, max_size, icurve );
167 }
168
169 /*\
170 | ____ _ _______ _
171 | | __ ) ___ __ _(_)_ __ / / ____|_ __ __| |
172 | | _ \ / _ \/ _` | | '_ \ / /| _| | '_ \ / _` |
173 | | |_) | __/ (_| | | | | |/ / | |___| | | | (_| |
174 | |____/ \___|\__, |_|_| |_/_/ |_____|_| |_|\__,_|
175 | |___/
176 \*/
177
178 real_type tx_begin() const override { return m_c0; }
179 real_type ty_begin() const override { return m_s0; }
180 real_type tx_end() const override { return m_c0; }
181 real_type ty_end() const override { return m_s0; }
182
183 real_type nx_begin_ISO() const override { return -m_s0; }
184 real_type ny_begin_ISO() const override { return m_c0; }
185 real_type nx_end_ISO() const override { return -m_s0; }
186 real_type ny_end_ISO() const override { return m_c0; }
187
188 real_type x_begin() const override { return m_x0; }
189 real_type y_begin() const override { return m_y0; }
190 real_type x_end() const override { return m_x0+m_L*m_c0; }
191 real_type y_end() const override { return m_y0+m_L*m_s0; }
192
194 x_begin_ISO( real_type offs ) const override
195 { return m_x0+offs*nx_begin_ISO(); }
196
198 y_begin_ISO( real_type offs ) const override
199 { return m_y0+offs*ny_begin_ISO(); }
200
202 x_end_ISO( real_type offs ) const override
203 { return x_end()+offs*nx_begin_ISO(); }
204
206 y_end_ISO( real_type offs ) const override
207 { return y_end()+offs*ny_begin_ISO(); }
208
209 /*\
210 | _ _ _
211 | | |_| |__ ___| |_ __ _
212 | | __| '_ \ / _ \ __/ _` |
213 | | |_| | | | __/ || (_| |
214 | \__|_| |_|\___|\__\__,_|
215 \*/
216
217 real_type theta ( real_type ) const override { return m_theta0; }
218 real_type theta_D ( real_type ) const override { return 0; }
219 real_type theta_DD ( real_type ) const override { return 0; }
220 real_type theta_DDD( real_type ) const override { return 0; }
221
222
223 /*\
224 | _____ _ _ _
225 | |_ _| __ _ _ __ __| | | \ | |
226 | | | / _` | '_ \ / _` | | \| |
227 | | | | (_| | | | | (_| | | |\ |
228 | |_| \__,_|_| |_|\__,_| |_| \_|
229 \*/
230
231 real_type tx ( real_type ) const override { return m_c0; }
232 real_type ty ( real_type ) const override { return m_s0; }
233 real_type tx_D ( real_type ) const override { return 0; }
234 real_type ty_D ( real_type ) const override { return 0; }
235 real_type tx_DD ( real_type ) const override { return 0; }
236 real_type ty_DD ( real_type ) const override { return 0; }
237 real_type tx_DDD( real_type ) const override { return 0; }
238 real_type ty_DDD( real_type ) const override { return 0; }
239
240 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
241
242 void
243 tg( real_type, real_type & tx, real_type & ty ) const override
244 { tx = m_c0; ty = m_s0; }
245
246 void
247 tg_D( real_type, real_type & tx_D, real_type & ty_D ) const override
248 { tx_D = ty_D = 0; }
249
250 void
252 { tx_DD = ty_DD = 0; }
253
254 void
256 { tx_DDD = ty_DDD = 0; }
257
258 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
259
260 real_type X( real_type s ) const override { return m_x0+s*m_c0; }
261 real_type Y( real_type s ) const override { return m_y0+s*m_s0; }
262
263 real_type X_D( real_type ) const override { return m_c0; }
264 real_type Y_D( real_type ) const override { return m_s0; }
265
266 real_type X_DD( real_type ) const override { return 0; }
267 real_type Y_DD( real_type ) const override { return 0; }
268
269 real_type X_DDD( real_type ) const override { return 0; }
270 real_type Y_DDD( real_type ) const override { return 0; }
271
272 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
273
274 void
276 real_type s,
277 real_type & x,
278 real_type & y
279 ) const override {
280 x = m_x0+s*m_c0;
281 y = m_y0+s*m_s0;
282 }
283
284 void
286 real_type,
287 real_type & x_D,
288 real_type & y_D
289 ) const override {
290 x_D = m_c0;
291 y_D = m_s0;
292 }
293
294 void
296 real_type,
297 real_type & x_DD,
298 real_type & y_DD
299 ) const override {
300 x_DD = 0;
301 y_DD = 0;
302 }
303
304 void
306 real_type,
307 real_type & x_DDD,
308 real_type & y_DDD
309 ) const override {
310 x_DDD = 0;
311 y_DDD = 0;
312 }
313
314 /*\
315 | __ __ _
316 | ___ / _|/ _|___ ___| |_
317 | / _ \| |_| |_/ __|/ _ \ __|
318 | | (_) | _| _\__ \ __/ |_
319 | \___/|_| |_| |___/\___|\__|
320 \*/
321
323 X_ISO( real_type s, real_type offs ) const override
324 { return m_x0 + s*m_c0 + offs*nx_begin_ISO(); }
325
327 Y_ISO( real_type s, real_type offs ) const override
328 { return m_y0 + s*m_s0 + offs*ny_begin_ISO(); }
329
331 X_ISO_D( real_type, real_type ) const override
332 { return m_c0; }
333
335 Y_ISO_D( real_type, real_type ) const override
336 { return m_s0; }
337
339 X_ISO_DD( real_type, real_type ) const override
340 { return 0; }
341
343 Y_ISO_DD( real_type, real_type ) const override
344 { return 0; }
345
347 X_ISO_DDD( real_type, real_type ) const override
348 { return 0; }
349
351 Y_ISO_DDD( real_type, real_type ) const override
352 { return 0; }
353
354 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
355
356 void
358 real_type s,
359 real_type offs,
360 real_type & x,
361 real_type & y
362 ) const override {
363 x = m_x0 + s*m_c0 + offs*nx_begin_ISO();
364 y = m_y0 + s*m_s0 + offs*ny_begin_ISO();
365 }
366
367 void
369 real_type,
370 real_type,
371 real_type & x_D,
372 real_type & y_D
373 ) const override {
374 x_D = m_c0;
375 y_D = m_s0;
376 }
377
378 void
380 real_type,
381 real_type,
382 real_type & x_DD,
383 real_type & y_DD
384 ) const override {
385 x_DD = y_DD = 0;
386 }
387
388 void
390 real_type,
391 real_type,
392 real_type & x_DDD,
393 real_type & y_DDD
394 ) const override {
395 x_DDD = y_DDD = 0;
396 }
397
398 /*\
399 | _ __
400 | | |_ _ __ __ _ _ __ ___ / _| ___ _ __ _ __ ___
401 | | __| '__/ _` | '_ \/ __| |_ / _ \| '__| '_ ` _ \
402 | | |_| | | (_| | | | \__ \ _| (_) | | | | | | | |
403 | \__|_| \__,_|_| |_|___/_| \___/|_| |_| |_| |_|
404 \*/
405
406 void
408 { m_x0 += tx; m_y0 += ty; }
409
410 void
411 rotate( real_type angle, real_type cx, real_type cy ) override;
412
413 void
414 reverse() override;
415
416 void
417 change_origin( real_type newx0, real_type newy0 ) override
418 { m_x0 = newx0; m_y0 = newy0; }
419
420 void
421 scale( real_type sc ) override
422 { m_L *= sc; }
423
424 void
425 trim( real_type s_begin, real_type s_end ) override {
426 m_x0 += m_c0 * s_begin;
427 m_y0 += m_s0 * s_begin;
428 m_L = s_end - s_begin;
429 }
430
431 /*\
432 | _ _ _
433 | __| (_)___| |_ __ _ _ __ ___ ___
434 | / _` | / __| __/ _` | '_ \ / __/ _ \
435 | | (_| | \__ \ || (_| | | | | (_| __/
436 | \__,_|_|___/\__\__,_|_| |_|\___\___|
437 \*/
438
453
454 integer
456 real_type qx,
457 real_type qy,
458 real_type & x,
459 real_type & y,
460 real_type & s,
461 real_type & t,
462 real_type & dst
463 ) const override;
464
465 integer
467 real_type qx,
468 real_type qy,
469 real_type offs,
470 real_type & x,
471 real_type & y,
472 real_type & s,
473 real_type & t,
474 real_type & dst
475 ) const override;
476
477 string info() const;
478
479 void
480 info( ostream_type & stream ) const override
481 { stream << this->info(); }
482
483 friend
485 operator << ( ostream_type & stream, LineSegment const & c );
486
487 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
488 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
489 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
490
491 void
492 build(
493 real_type x0,
494 real_type y0,
495 real_type theta0,
496 real_type L
497 ) {
498 m_x0 = x0;
499 m_y0 = y0;
500 m_theta0 = theta0;
501 m_c0 = cos(theta0);
502 m_s0 = sin(theta0);
503 m_L = L;
504 }
505
509 void
510 build_2P(
511 real_type _x0,
512 real_type _y0,
513 real_type _x1,
514 real_type _y1
515 );
516
520 void
521 build_2P( real_type const p0[2], real_type const p1[2] )
522 { build_2P( p0[0], p0[1], p1[0], p1[1] ); }
523
524 void
525 p1p2( real_type p1[2], real_type p2[2] ) const {
526 p1[0] = m_x0;
527 p1[1] = m_y0;
528 p2[0] = m_x0+m_L*m_c0;
529 p2[1] = m_y0+m_L*m_s0;
530 }
531
532 void build( LineSegment const & LS );
533 void build( CircleArc const & );
534 void build( Biarc const & );
535 void build( ClothoidCurve const & );
536 void build( PolyLine const & );
537 void build( BiarcList const & );
538 void build( ClothoidList const & );
539 void build( Dubins const & );
540 void build( Dubins3p const & );
541
542 /*
543 // _ _ _ _
544 // ___ ___ | | (_)___(_) ___ _ __
545 // / __/ _ \| | | / __| |/ _ \| '_ \
546 // | (_| (_) | | | \__ \ | (_) | | | |
547 // \___\___/|_|_|_|___/_|\___/|_| |_|
548 */
549
550 bool
551 collision( LineSegment const & S ) const;
552
553 bool
554 collision_ISO(
555 real_type offs,
556 LineSegment const & S,
557 real_type S_offs
558 ) const;
559
560 bool
561 collision( BaseCurve const * pC ) const override;
562
563 bool
564 collision_ISO(
565 real_type offs,
566 BaseCurve const * pC,
567 real_type offs_C
568 ) const override;
569
570 /*
571 // _ _ _
572 // (_)_ __ | |_ ___ _ __ ___ ___ ___| |_
573 // | | '_ \| __/ _ \ '__/ __|/ _ \/ __| __|
574 // | | | | | || __/ | \__ \ __/ (__| |_
575 // |_|_| |_|\__\___|_| |___/\___|\___|\__|
576 */
577
578 bool
579 intersect(
580 LineSegment const & S,
581 real_type & s1,
582 real_type & s2
583 ) const;
584
585 bool
586 intersect_ISO(
587 real_type offs,
588 LineSegment const & S,
589 real_type S_offs,
590 real_type & s1,
591 real_type & s2
592 ) const;
593
594 void
595 intersect(
596 LineSegment const & LS,
597 IntersectList & ilist
598 ) const;
599
600 void
601 intersect_ISO(
602 real_type offs,
603 LineSegment const & LS,
604 real_type offs_LS,
605 IntersectList & ilist
606 ) const;
607
608 void
609 intersect(
610 BaseCurve const * pC,
611 IntersectList & ilist
612 ) const override;
613
614 void
615 intersect_ISO(
616 real_type offs,
617 BaseCurve const * pC,
618 real_type offs_LS,
619 IntersectList & ilist
620 ) const override;
621
622 /*\
623 | _ _ _ _ ____ ____ ____
624 | | \ | | | | | _ \| __ ) ___|
625 | | \| | | | | |_) | _ \___ \
626 | | |\ | |_| | _ <| |_) |__) |
627 | |_| \_|\___/|_| \_\____/____/
628 \*/
629
630 void
631 paramNURBS( integer & n_knots, integer & n_pnts ) const;
632
633 void
634 toNURBS( real_type knots[], real_type Poly[][3] ) const;
635
636 virtual
637 void
638 toBS( real_type knots[], real_type Poly[][2] ) const;
639
640 friend class ClothoidCurve;
641
642#ifdef CLOTHOIDS_BACK_COMPATIBILITY
643#include "Line_compatibility.hxx"
644#endif
645
646 };
647
648}
649
Definition BaseCurve.hxx:192
Definition Circle.hxx:37
Definition Line.hxx:37
void build_2P(real_type const p0[2], real_type const p1[2])
Definition Line.hxx:521
real_type tx_D(real_type) const override
Definition Line.hxx:233
real_type x_end_ISO(real_type offs) const override
Definition Line.hxx:202
real_type y_begin() const override
Definition Line.hxx:189
void info(ostream_type &stream) const override
Definition Line.hxx:480
real_type Y_DD(real_type) const override
Definition Line.hxx:267
real_type Y(real_type s) const override
Definition Line.hxx:261
real_type ty_DD(real_type) const override
Definition Line.hxx:236
real_type tx_DDD(real_type) const override
Definition Line.hxx:237
void eval_ISO(real_type s, real_type offs, real_type &x, real_type &y) const override
Definition Line.hxx:357
LineSegment(real_type x0, real_type y0, real_type theta0, real_type L, string const &name)
Definition Line.hxx:69
real_type tx_begin() const override
Definition Line.hxx:178
real_type nx_end_ISO() const override
Definition Line.hxx:185
real_type Y_DDD(real_type) const override
Definition Line.hxx:270
void change_origin(real_type newx0, real_type newy0) override
Definition Line.hxx:417
void eval_DDD(real_type, real_type &x_DDD, real_type &y_DDD) const override
Definition Line.hxx:305
void tg_DDD(real_type, real_type &tx_DDD, real_type &ty_DDD) const override
Definition Line.hxx:255
real_type length_ISO(real_type) const override
Definition Line.hxx:105
void bbox_ISO(real_type offs, real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
Definition Line.cc:363
void eval_ISO_DD(real_type, real_type, real_type &x_DD, real_type &y_DD) const override
Definition Line.hxx:379
void tg(real_type, real_type &tx, real_type &ty) const override
Definition Line.hxx:243
void bb_triangles_ISO(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override
Definition Line.cc:70
real_type x_begin() const override
Definition Line.hxx:188
void scale(real_type sc) override
Definition Line.hxx:421
void trim(real_type s_begin, real_type s_end) override
Definition Line.hxx:425
void tg_DD(real_type, real_type &tx_DD, real_type &ty_DD) const override
Definition Line.hxx:251
real_type X_ISO(real_type s, real_type offs) const override
Definition Line.hxx:323
real_type theta_D(real_type) const override
Definition Line.hxx:218
real_type Y_ISO_DD(real_type, real_type) const override
Definition Line.hxx:343
real_type ty_D(real_type) const override
Definition Line.hxx:234
real_type X_ISO_DDD(real_type, real_type) const override
Definition Line.hxx:347
real_type ty(real_type) const override
Definition Line.hxx:232
void eval_D(real_type, real_type &x_D, real_type &y_D) const override
Definition Line.hxx:285
real_type ty_end() const override
Definition Line.hxx:181
CurveType type() const override
Definition Line.hxx:98
real_type ny_end_ISO() const override
Definition Line.hxx:186
friend ostream_type & operator<<(ostream_type &stream, LineSegment const &c)
Definition Line.cc:780
void translate(real_type tx, real_type ty) override
translate curve by
Definition Line.hxx:407
void bb_triangles(vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override
Definition Line.cc:44
real_type Y_ISO(real_type s, real_type offs) const override
Definition Line.hxx:327
real_type tx(real_type) const override
Definition Line.hxx:231
real_type ty_DDD(real_type) const override
Definition Line.hxx:238
void eval(real_type s, real_type &x, real_type &y) const override
Definition Line.hxx:275
real_type X_ISO_D(real_type, real_type) const override
Definition Line.hxx:331
real_type theta_DDD(real_type) const override
Definition Line.hxx:220
void bbox(real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
Definition Line.cc:348
real_type y_end_ISO(real_type offs) const override
Definition Line.hxx:206
void rotate(real_type angle, real_type cx, real_type cy) override
Definition Line.cc:381
real_type x_end() const override
Definition Line.hxx:190
real_type nx_begin_ISO() const override
Definition Line.hxx:183
real_type Y_ISO_DDD(real_type, real_type) const override
Definition Line.hxx:351
void eval_ISO_DDD(real_type, real_type, real_type &x_DDD, real_type &y_DDD) const override
Definition Line.hxx:389
real_type Y_ISO_D(real_type, real_type) const override
Definition Line.hxx:335
void eval_ISO_D(real_type, real_type, real_type &x_D, real_type &y_D) const override
Definition Line.hxx:368
real_type X_ISO_DD(real_type, real_type) const override
Definition Line.hxx:339
real_type X(real_type s) const override
Definition Line.hxx:260
real_type ny_begin_ISO() const override
Definition Line.hxx:184
real_type tx_DD(real_type) const override
Definition Line.hxx:235
real_type length() const override
Definition Line.hxx:101
void eval_DD(real_type, real_type &x_DD, real_type &y_DD) const override
Definition Line.hxx:295
real_type tx_end() const override
Definition Line.hxx:180
void reverse() override
Definition Line.cc:398
real_type X_DDD(real_type) const override
Definition Line.hxx:269
integer closest_point_ISO(real_type qx, real_type qy, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const override
Definition Line.cc:689
real_type theta_DD(real_type) const override
Definition Line.hxx:219
real_type theta(real_type) const override
Definition Line.hxx:217
void build_2P(real_type _x0, real_type _y0, real_type _x1, real_type _y1)
Definition Line.cc:325
real_type X_DD(real_type) const override
Definition Line.hxx:266
real_type X_D(real_type) const override
Definition Line.hxx:263
real_type y_end() const override
Definition Line.hxx:191
void bb_triangles_SAE(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override
Definition Line.hxx:159
void tg_D(real_type, real_type &tx_D, real_type &ty_D) const override
Definition Line.hxx:247
real_type y_begin_ISO(real_type offs) const override
Definition Line.hxx:198
real_type Y_D(real_type) const override
Definition Line.hxx:264
real_type ty_begin() const override
Definition Line.hxx:179
real_type x_begin_ISO(real_type offs) const override
Definition Line.hxx:194
Class to manage a collection of straight segment.
Definition PolyLine.hxx:42
Definition BBox.cc:42
GC_namespace::GenericContainer GenericContainer
Generic container object.
Definition Clothoids.hh:84
std::basic_ostream< char > ostream_type
output streaming
Definition Clothoids.hh:78
std::vector< Ipair > IntersectList
Vector of pair of two real number.
Definition BaseCurve.hxx:36
enum class CurveType :integer { LINE, POLYLINE, CIRCLE, BIARC, BIARC_LIST, CLOTHOID, CLOTHOID_LIST, DUBINS, DUBINS3P } CurveType
Definition Clothoids.hh:89
double real_type
real type number
Definition Clothoids.hh:79
int integer
integer type number
Definition Clothoids.hh:80