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

Clothoids: /Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Clothoids/src/Clothoids/Biarc.hxx Source File
Clothoids
Biarc.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
39 class Biarc : public BaseCurve {
40 CircleArc m_C0{"Biarc_C0"};
41 CircleArc m_C1{"Biarc_C1"};
42
43 void
44 gfun( real_type alpha, real_type g[3] ) const {
45 real_type so = sin(alpha);
46 real_type co = cos(alpha);
47 real_type oco = alpha*co;
48 g[0] = so + oco;
49 g[1] = 2*co - alpha*so;
50 g[2] = -3*so - oco;
51 }
52
53 public:
54
55 #include "BaseCurve_using.hxx"
56
60 Biarc() = delete;
61 Biarc( string const & name ) : BaseCurve( name ) {};
62
63 ~Biarc() override = default;
64
65 void setup( GenericContainer const & gc ) override;
66
70 Biarc( Biarc const & ba ) : BaseCurve( ba.name() )
71 { this->copy(ba); }
72
86 explicit
87 Biarc(
88 real_type x0,
89 real_type y0,
90 real_type theta0,
91 real_type x1,
92 real_type y1,
93 real_type theta1,
94 string const & name
95 );
96
97 explicit
98 Biarc( LineSegment const & LS ) : BaseCurve( LS.name() )
99 { this->build( LS ); }
100
101 explicit
102 Biarc( CircleArc const & C ) : BaseCurve( C.name() )
103 { this->build( C ); }
104
105 explicit
106 Biarc( BaseCurve const * pC );
107
111 void
112 copy( Biarc const & c ) {
113 m_C0.copy(c.m_C0);
114 m_C1.copy(c.m_C1);
115 }
116
117 CurveType type() const override { return CurveType::BIARC; }
118
122 Biarc const & operator = ( Biarc const & ba )
123 { this->copy(ba); return *this; }
124
128 CircleArc const & C0() const { return m_C0; }
129
133 CircleArc const & C1() const { return m_C1; }
134
148 bool
149 build(
150 real_type x0,
151 real_type y0,
152 real_type theta0,
153 real_type x1,
154 real_type y1,
155 real_type theta1
156 );
157
165 bool
166 build_3P(
167 real_type x0,
168 real_type y0,
169 real_type x1,
170 real_type y1,
171 real_type x2,
172 real_type y2
173 );
174
178 void build( LineSegment const & LS );
179
183 void build( CircleArc const & C );
184 void build( Biarc const & );
185 void build( ClothoidCurve const & );
186 void build( PolyLine const & );
187 void build( BiarcList const & );
188 void build( ClothoidList const & );
189 void build( Dubins const & );
190 void build( Dubins3p const & );
191
192 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
193
194 void
195 bbox(
196 real_type & xmin,
197 real_type & ymin,
198 real_type & xmax,
199 real_type & ymax
200 ) const override;
201
202 void
203 bbox_ISO(
204 real_type offs,
205 real_type & xmin,
206 real_type & ymin,
207 real_type & xmax,
208 real_type & ymax
209 ) const override;
210
211 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
212
214 length() const override
215 { return m_C0.length()+m_C1.length(); }
216
218 length_ISO( real_type offs ) const override
219 { return m_C0.length_ISO(offs)+m_C1.length_ISO(offs); }
220
221 real_type theta_begin() const override { return m_C0.theta_begin(); }
222 real_type theta_end() const override { return m_C1.theta_end(); }
223 real_type kappa_begin() const override { return m_C0.kappa_begin(); }
224 real_type kappa_end() const override { return m_C1.kappa_end(); }
225 real_type x_begin() const override { return m_C0.x_begin(); }
226 real_type x_end() const override { return m_C1.x_end(); }
227 real_type y_begin() const override { return m_C0.y_begin(); }
228 real_type y_end() const override { return m_C1.y_end(); }
229 real_type tx_begin() const override { return m_C0.tx_begin(); }
230 real_type tx_end() const override { return m_C1.tx_end(); }
231 real_type ty_begin() const override { return m_C0.ty_begin(); }
232 real_type ty_end() const override { return m_C1.ty_end(); }
233 real_type nx_begin_ISO() const override { return m_C0.nx_begin_ISO(); }
234 real_type nx_end_ISO() const override { return m_C1.nx_end_ISO(); }
235 real_type ny_begin_ISO() const override { return m_C0.ny_begin_ISO(); }
236 real_type ny_end_ISO() const override { return m_C1.ny_end_ISO(); }
237
238 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
239
240 real_type theta ( real_type ) const override;
241 real_type theta_D ( real_type ) const override;
242 real_type theta_DD ( real_type ) const override { return 0; }
243 real_type theta_DDD( real_type ) const override { return 0; }
244
245 void
246 evaluate(
247 real_type s,
248 real_type & th,
249 real_type & k,
250 real_type & x,
251 real_type & y
252 ) const override;
253
254 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
255
256 real_type X( real_type s ) const override;
257 real_type Y( real_type s ) const override;
258
259 real_type X_D( real_type ) const override;
260 real_type Y_D( real_type ) const override;
261
262 real_type X_DD( real_type ) const override;
263 real_type Y_DD( real_type ) const override;
264
265 real_type X_DDD( real_type ) const override;
266 real_type Y_DDD( real_type ) const override;
267
268 real_type X_ISO( real_type s, real_type offs ) const override;
269 real_type Y_ISO( real_type s, real_type offs ) const override;
270
271 real_type X_ISO_D( real_type, real_type offs ) const override;
272 real_type Y_ISO_D( real_type, real_type offs ) const override;
273
274 real_type X_ISO_DD( real_type, real_type offs ) const override;
275 real_type Y_ISO_DD( real_type, real_type offs ) const override;
276
277 real_type X_ISO_DDD( real_type, real_type offs ) const override;
278 real_type Y_ISO_DDD( real_type, real_type offs ) const override;
279
280 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
281
282 void
283 eval(
284 real_type s,
285 real_type & x,
286 real_type & y
287 ) const override;
288
289 void
290 eval_D(
291 real_type s,
292 real_type & x_D,
293 real_type & y_D
294 ) const override;
295
296 void
297 eval_DD(
298 real_type s,
299 real_type & x_DD,
300 real_type & y_DD
301 ) const override;
302
303 void
304 eval_DDD(
305 real_type s,
306 real_type & x_DDD,
307 real_type & y_DDD
308 ) const override;
309
310 void
311 eval_ISO(
312 real_type s,
313 real_type offs,
314 real_type & x,
315 real_type & y
316 ) const override;
317
318 void
320 real_type s,
321 real_type offs,
322 real_type & x_D,
323 real_type & y_D
324 ) const override;
325
326 void
328 real_type s,
329 real_type offs,
330 real_type & x_DD,
331 real_type & y_DD
332 ) const override;
333
334 void
336 real_type s,
337 real_type offs,
338 real_type & x_DDD,
339 real_type & y_DDD
340 ) const override;
341
342 /*\
343 | _____ _ _ _
344 | |_ _| __ _ _ __ __| | | \ | |
345 | | | / _` | '_ \ / _` | | \| |
346 | | | | (_| | | | | (_| | | |\ |
347 | |_| \__,_|_| |_|\__,_| |_| \_|
348 \*/
349
350 real_type tx ( real_type s ) const override;
351 real_type tx_D ( real_type s ) const override;
352 real_type tx_DD ( real_type s ) const override;
353 real_type tx_DDD( real_type s ) const override;
354 real_type ty ( real_type s ) const override;
355 real_type ty_D ( real_type s ) const override;
356 real_type ty_DD ( real_type s ) const override;
357 real_type ty_DDD( real_type s ) const override;
358
359 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
360
361 void
362 tg(
363 real_type s,
364 real_type & tx,
365 real_type & ty
366 ) const override;
367
368 void
369 tg_D(
370 real_type s,
371 real_type & tx_D,
373 ) const override;
374
375 void
376 tg_DD(
377 real_type s,
380 ) const override;
381
382 void
383 tg_DDD(
384 real_type s,
387 ) const override;
388
389 /*\
390 | _ __
391 | | |_ _ __ __ _ _ __ ___ / _| ___ _ __ _ __ ___
392 | | __| '__/ _` | '_ \/ __| |_ / _ \| '__| '_ ` _ \
393 | | |_| | | (_| | | | \__ \ _| (_) | | | | | | | |
394 | \__|_| \__,_|_| |_|___/_| \___/|_| |_| |_| |_|
395 \*/
396
397 void
399 { m_C0.translate(tx,ty); m_C1.translate(tx,ty); }
400
401 void
402 rotate( real_type angle, real_type cx, real_type cy ) override
403 { m_C0.rotate(angle,cx,cy); m_C1.rotate(angle,cx,cy); }
404
405 void
406 reverse() override;
407
408 void
409 change_origin( real_type newx0, real_type newy0 ) override;
410
411 void
412 trim( real_type s_begin, real_type s_end ) override;
413
414 void
415 scale( real_type s ) override;
416
417 /*\
418 | _ _ ____ _ _
419 | ___| | ___ ___ ___ ___| |_| _ \ ___ (_)_ __ | |_
420 | / __| |/ _ \/ __|/ _ \/ __| __| |_) / _ \| | '_ \| __|
421 | | (__| | (_) \__ \ __/\__ \ |_| __/ (_) | | | | | |_
422 | \___|_|\___/|___/\___||___/\__|_| \___/|_|_| |_|\__|
423 \*/
424
425 integer
427 real_type qx,
428 real_type qy,
429 real_type & x,
430 real_type & y,
431 real_type & s,
432 real_type & t,
433 real_type & dst
434 ) const override;
435
436 integer
438 real_type qx,
439 real_type qy,
440 real_type offs,
441 real_type & x,
442 real_type & y,
443 real_type & s,
444 real_type & t,
445 real_type & dst
446 ) const override;
447
448 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
449 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
450
454 real_type x_middle() const { return m_C1.x_begin(); }
455
459 real_type y_middle() const { return m_C1.y_begin(); }
460
464 real_type theta_middle() const { return m_C1.theta_begin(); }
465
469 real_type kappa0() const { return m_C0.curvature(); }
470
474 real_type length0() const { return m_C0.length(); }
475
479 real_type kappa1() const { return m_C1.curvature(); }
480
484 real_type length1() const { return m_C1.length(); }
485
489 real_type delta_theta() const { return m_C0.delta_theta() + m_C1.delta_theta(); }
490
491 void
493 vector<Triangle2D> & tvec,
494 real_type max_angle = Utils::m_pi/18,
495 real_type max_size = 1e100,
496 integer icurve = 0
497 ) const override {
498 m_C0.bb_triangles( tvec, max_angle, max_size, icurve );
499 m_C1.bb_triangles( tvec, max_angle, max_size, icurve );
500 }
501
502 void
504 real_type offs,
505 vector<Triangle2D> & tvec,
506 real_type max_angle = Utils::m_pi/18,
507 real_type max_size = 1e100,
508 integer icurve = 0
509 ) const override {
510 m_C0.bb_triangles_ISO( offs, tvec, max_angle, max_size, icurve );
511 m_C1.bb_triangles_ISO( offs, tvec, max_angle, max_size, icurve );
512 }
513
514 void
516 real_type offs,
517 vector<Triangle2D> & tvec,
518 real_type max_angle = Utils::m_pi/18,
519 real_type max_size = 1e100,
520 integer icurve = 0
521 ) const override {
522 m_C0.bb_triangles_SAE( offs, tvec, max_angle, max_size, icurve );
523 m_C1.bb_triangles_SAE( offs, tvec, max_angle, max_size, icurve );
524 }
525
526 /*\
527 | _ _ _ _
528 | ___ ___ | | (_)___(_) ___ _ __
529 | / __/ _ \| | | / __| |/ _ \| '_ \
530 | | (_| (_) | | | \__ \ | (_) | | | |
531 | \___\___/|_|_|_|___/_|\___/|_| |_|
532 \*/
533
537 bool
538 collision( Biarc const & B ) const {
539 return m_C0.collision( B.m_C0 ) || m_C0.collision( B.m_C1 ) ||
540 m_C1.collision( B.m_C0 ) || m_C1.collision( B.m_C1 );
541 }
542
550 bool
552 real_type offs,
553 Biarc const & B,
554 real_type offs_B
555 ) const {
556 return m_C0.collision_ISO( offs, B.m_C0, offs_B ) ||
557 m_C0.collision_ISO( offs, B.m_C1, offs_B ) ||
558 m_C1.collision_ISO( offs, B.m_C0, offs_B ) ||
559 m_C1.collision_ISO( offs, B.m_C1, offs_B );
560 }
561
562 bool
563 collision( BaseCurve const * pC ) const override;
564
565 bool
567 real_type offs,
568 BaseCurve const * pC,
569 real_type offs_C
570 ) const override;
571
572 /*\
573 | _ _ _
574 | (_)_ __ | |_ ___ _ __ ___ ___ ___| |_
575 | | | '_ \| __/ _ \ '__/ __|/ _ \/ __| __|
576 | | | | | | || __/ | \__ \ __/ (__| |_
577 | |_|_| |_|\__\___|_| |___/\___|\___|\__|
578 \*/
579
586 void
587 intersect(
588 Biarc const & B,
589 IntersectList & ilist
590 ) const;
591
600 void
602 real_type offs,
603 Biarc const & B,
604 real_type offs_B,
605 IntersectList & ilist
606 ) const;
607
608 void
609 intersect(
610 BaseCurve const * pC,
611 IntersectList & ilist
612 ) const override;
613
614 void
616 real_type offs,
617 BaseCurve const * pC,
618 real_type offs_LS,
619 IntersectList & ilist
620 ) const override;
621
622 string info() const;
623
624 void
625 info( ostream_type & stream ) const override
626 { stream << this->info(); }
627
628 friend
630 operator << ( ostream_type & stream, Biarc const & bi );
631
632#ifdef CLOTHOIDS_BACK_COMPATIBILITY
633#include "Biarc_compatibility.hxx"
634#endif
635
636 };
637
638 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
639
649 bool
651 integer n,
652 real_type const x[],
653 real_type const y[],
654 real_type theta[]
655 );
656
657}
658
Definition BaseCurve.hxx:192
Definition Biarc.hxx:39
real_type x_begin() const override
Definition Biarc.hxx:225
real_type theta_middle() const
Definition Biarc.hxx:464
real_type ty_end() const override
Definition Biarc.hxx:232
real_type length1() const
Definition Biarc.hxx:484
CurveType type() const override
Definition Biarc.hxx:117
void eval_DDD(real_type s, real_type &x_DDD, real_type &y_DDD) const override
Definition Biarc.cc:683
real_type theta_D(real_type) const override
Definition Biarc.cc:352
Biarc const & operator=(Biarc const &ba)
Definition Biarc.hxx:122
void bb_triangles_SAE(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/18, real_type max_size=1e100, integer icurve=0) const override
Definition Biarc.hxx:515
real_type X_DDD(real_type) const override
Definition Biarc.cc:460
void bbox(real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
Definition Biarc.cc:250
real_type length0() const
Definition Biarc.hxx:474
Biarc(Biarc const &ba)
Definition Biarc.hxx:70
real_type ty(real_type s) const override
Definition Biarc.cc:397
bool collision_ISO(real_type offs, Biarc const &B, real_type offs_B) const
Definition Biarc.hxx:551
real_type theta(real_type) const override
Definition Biarc.cc:343
real_type kappa0() const
Definition Biarc.hxx:469
real_type ty_begin() const override
Definition Biarc.hxx:231
void change_origin(real_type newx0, real_type newy0) override
Definition Biarc.cc:309
void reverse() override
Definition Biarc.cc:293
real_type x_middle() const
Definition Biarc.hxx:454
void eval_ISO_DD(real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const override
Definition Biarc.cc:733
real_type ty_D(real_type s) const override
Definition Biarc.cc:406
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 Biarc.cc:875
real_type Y_ISO_DD(real_type, real_type offs) const override
Definition Biarc.cc:559
void eval_DD(real_type s, real_type &x_DD, real_type &y_DD) const override
Definition Biarc.cc:667
void intersect_ISO(real_type offs, Biarc const &B, real_type offs_B, IntersectList &ilist) const
Definition Biarc.cc:845
real_type tx_begin() const override
Definition Biarc.hxx:229
real_type delta_theta() const
Definition Biarc.hxx:489
void bb_triangles_ISO(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/18, real_type max_size=1e100, integer icurve=0) const override
Definition Biarc.hxx:503
void intersect(Biarc const &B, IntersectList &ilist) const
Definition Biarc.cc:815
real_type nx_end_ISO() const override
Definition Biarc.hxx:234
void eval_ISO_DDD(real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const override
Definition Biarc.cc:750
void info(ostream_type &stream) const override
Definition Biarc.hxx:625
real_type tx_end() const override
Definition Biarc.hxx:230
real_type ty_DD(real_type s) const override
Definition Biarc.cc:415
real_type kappa_begin() const override
Definition Biarc.hxx:223
real_type theta_DD(real_type) const override
Definition Biarc.hxx:242
real_type length() const override
Definition Biarc.hxx:214
real_type ty_DDD(real_type s) const override
Definition Biarc.cc:424
friend ostream_type & operator<<(ostream_type &stream, Biarc const &bi)
Definition Biarc.cc:1013
void eval_ISO(real_type s, real_type offs, real_type &x, real_type &y) const override
Definition Biarc.cc:699
CircleArc const & C0() const
Definition Biarc.hxx:128
void evaluate(real_type s, real_type &th, real_type &k, real_type &x, real_type &y) const override
Definition Biarc.cc:613
real_type theta_DDD(real_type) const override
Definition Biarc.hxx:243
Biarc()=delete
bool collision(Biarc const &B) const
Definition Biarc.hxx:538
real_type kappa1() const
Definition Biarc.hxx:479
real_type kappa_end() const override
Definition Biarc.hxx:224
real_type X_D(real_type) const override
Definition Biarc.cc:442
void rotate(real_type angle, real_type cx, real_type cy) override
Definition Biarc.hxx:402
real_type y_end() const override
Definition Biarc.hxx:228
void bb_triangles(vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/18, real_type max_size=1e100, integer icurve=0) const override
Definition Biarc.hxx:492
real_type Y_DDD(real_type) const override
Definition Biarc.cc:496
real_type Y_ISO_DDD(real_type, real_type offs) const override
Definition Biarc.cc:568
real_type tx_D(real_type s) const override
Definition Biarc.cc:370
void translate(real_type tx, real_type ty) override
translate curve by
Definition Biarc.hxx:398
real_type nx_begin_ISO() const override
Definition Biarc.hxx:233
void copy(Biarc const &c)
Definition Biarc.hxx:112
real_type y_begin() const override
Definition Biarc.hxx:227
real_type ny_end_ISO() const override
Definition Biarc.hxx:236
real_type x_end() const override
Definition Biarc.hxx:226
real_type y_middle() const
Definition Biarc.hxx:459
real_type Y(real_type s) const override
Definition Biarc.cc:469
CircleArc const & C1() const
Definition Biarc.hxx:133
void tg_DD(real_type s, real_type &tx_DD, real_type &ty_DD) const override
Definition Biarc.cc:595
real_type X_DD(real_type) const override
Definition Biarc.cc:451
real_type X_ISO_DDD(real_type, real_type offs) const override
Definition Biarc.cc:532
void scale(real_type s) override
Definition Biarc.cc:302
real_type tx(real_type s) const override
Definition Biarc.cc:361
real_type Y_DD(real_type) const override
Definition Biarc.cc:487
real_type X_ISO_D(real_type, real_type offs) const override
Definition Biarc.cc:514
real_type X_ISO(real_type s, real_type offs) const override
Definition Biarc.cc:505
void trim(real_type s_begin, real_type s_end) override
Definition Biarc.cc:315
real_type tx_DDD(real_type s) const override
Definition Biarc.cc:388
void tg_DDD(real_type s, real_type &tx_DDD, real_type &ty_DDD) const override
Definition Biarc.cc:604
real_type Y_ISO(real_type s, real_type offs) const override
Definition Biarc.cc:541
void tg(real_type s, real_type &tx, real_type &ty) const override
Definition Biarc.cc:577
real_type tx_DD(real_type s) const override
Definition Biarc.cc:379
void bbox_ISO(real_type offs, real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
Definition Biarc.cc:268
real_type Y_D(real_type) const override
Definition Biarc.cc:478
real_type length_ISO(real_type offs) const override
Definition Biarc.hxx:218
real_type theta_end() const override
Definition Biarc.hxx:222
real_type ny_begin_ISO() const override
Definition Biarc.hxx:235
real_type X(real_type s) const override
Definition Biarc.cc:433
real_type X_ISO_DD(real_type, real_type offs) const override
Definition Biarc.cc:523
bool build(real_type x0, real_type y0, real_type theta0, real_type x1, real_type y1, real_type theta1)
Definition Biarc.cc:140
void tg_D(real_type s, real_type &tx_D, real_type &ty_D) const override
Definition Biarc.cc:586
void eval_ISO_D(real_type s, real_type offs, real_type &x_D, real_type &y_D) const override
Definition Biarc.cc:716
void eval_D(real_type s, real_type &x_D, real_type &y_D) const override
Definition Biarc.cc:651
real_type Y_ISO_D(real_type, real_type offs) const override
Definition Biarc.cc:550
bool build_3P(real_type x0, real_type y0, real_type x1, real_type y1, real_type x2, real_type y2)
Definition Biarc.cc:192
void eval(real_type s, real_type &x, real_type &y) const override
Definition Biarc.cc:635
real_type theta_begin() const override
Definition Biarc.hxx:221
Definition BiarcList.hxx:42
Definition Circle.hxx:37
virtual real_type theta_end() const
Definition BaseCurve.hxx:388
virtual real_type ty_end() const
Definition BaseCurve.hxx:478
void bb_triangles_SAE(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/18, real_type max_size=1e100, integer icurve=0) const override
Definition Circle.hxx:455
real_type ny_begin_ISO() const override
Definition Circle.hxx:502
real_type kappa_end() const override
Definition Circle.hxx:496
real_type delta_theta() const
Definition Circle.hxx:779
virtual real_type tx_end() const
Definition BaseCurve.hxx:473
bool collision_ISO(real_type offs, CircleArc const &C, real_type offs_obj) const
Definition Circle.cc:647
void bb_triangles_ISO(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/18, real_type max_size=1e100, integer icurve=0) const override
Definition Circle.cc:518
void rotate(real_type angle, real_type cx, real_type cy) override
Definition Circle.cc:368
virtual real_type x_end() const
Definition BaseCurve.hxx:413
real_type curvature() const
Definition Circle.hxx:768
real_type y_begin() const override
Definition Circle.hxx:498
void translate(real_type tx, real_type ty) override
translate curve by
Definition Circle.hxx:606
void copy(CircleArc const &c)
Definition Circle.hxx:117
virtual real_type nx_end_ISO() const
Definition BaseCurve.hxx:493
virtual real_type y_end() const
Definition BaseCurve.hxx:418
real_type nx_begin_ISO() const override
Definition Circle.hxx:501
real_type length() const override
Definition Circle.hxx:487
void bb_triangles(vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/18, real_type max_size=1e100, integer icurve=0) const override
Definition Circle.cc:481
real_type ty_begin() const override
Definition Circle.hxx:500
virtual real_type ny_end_ISO() const
Definition BaseCurve.hxx:498
real_type tx_begin() const override
Definition Circle.hxx:499
bool collision(CircleArc const &) const
Definition Circle.cc:610
real_type x_begin() const override
Definition Circle.hxx:497
real_type kappa_begin() const override
Definition Circle.hxx:495
real_type length_ISO(real_type offs) const override
Definition Circle.hxx:491
real_type theta_begin() const override
Definition Circle.hxx:494
Definition Clothoid.hxx:48
Definition ClothoidList.hxx:861
Definition Dubins3p.hxx:78
Definition Dubins.hxx:74
Definition Line.hxx:37
Class to manage a collection of straight segment.
Definition PolyLine.hxx:42
Definition BBox.cc:42
bool build_guess_theta(integer n, real_type const x[], real_type const y[], real_type theta[])
Definition Biarc.cc:968
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