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

Clothoids: /Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Clothoids/src/Clothoids/BiarcList.hxx Source File
Clothoids
BiarcList.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 using std::vector;
27
28 class ClothoidList;
29
30 /*\
31 | ____ _ _ _ _
32 | | __ )(_) __ _ _ __ ___| | (_)___| |_
33 | | _ \| |/ _` | '__/ __| | | / __| __|
34 | | |_) | | (_| | | | (__| |___| \__ \ |_
35 | |____/|_|\__,_|_| \___|_____|_|___/\__|
36 \*/
42 class BiarcList : public BaseCurve {
43
44 friend class ClothoidList;
45
46 vector<real_type> m_s0;
47 vector<Biarc> m_biarc_list;
48
49 #ifdef CLOTHOIDS_USE_THREADS
50 mutable Utils::BinarySearch<integer> m_last_interval;
51 #else
52 mutable integer m_last_interval{0};
53 #endif
54
55 mutable bool m_aabb_done{false};
56 mutable AABB_TREE m_aabb_tree;
57 mutable real_type m_aabb_offs{real_type(0)};
58 mutable real_type m_aabb_max_angle{real_type(0)};
59 mutable real_type m_aabb_max_size{real_type(0)};
60 mutable vector<Triangle2D> m_aabb_triangles;
61
62 #ifdef CLOTHOIDS_USE_THREADS
63 mutable std::mutex m_aabb_mutex;
64 #endif
65
66 void
67 reset_last_interval() {
68 #ifdef CLOTHOIDS_USE_THREADS
69 bool ok;
70 integer & last_interval = *m_last_interval.search( std::this_thread::get_id(), ok );
71 #else
72 integer & last_interval = m_last_interval;
73 #endif
74 last_interval = 0;
75 }
76
78 closest_point_internal(
79 real_type qx,
80 real_type qy,
81 real_type offs,
82 real_type & x,
83 real_type & y,
84 real_type & s,
85 real_type & dst
86 ) const;
87
88 public:
89
90 #include "BaseCurve_using.hxx"
91
95 BiarcList( string const & name ) : BaseCurve( name )
96 { this->reset_last_interval(); }
97
98 ~BiarcList() override {
99 m_s0.clear();
100 m_biarc_list.clear();
101 m_aabb_triangles.clear();
102 }
103
104 void setup( GenericContainer const & gc ) override;
105
109 BiarcList( BiarcList const & s ) : BiarcList( s.name() )
110 { this->copy(s); }
111
115 void init();
116
120 void reserve( integer n );
121
125 void copy( BiarcList const & L );
126
127 CurveType type() const override { return CurveType::BIARC_LIST; }
128
132 BiarcList const & operator = ( BiarcList const & s )
133 { this->copy(s); return *this; }
134
138 explicit BiarcList( LineSegment const & LS );
139
143 explicit BiarcList( CircleArc const & C );
144
148 explicit BiarcList( Biarc const & C );
149
153 explicit BiarcList( PolyLine const & pl );
154
158 explicit BiarcList( BaseCurve const * pC );
159
160 void build( LineSegment const & );
161 void build( CircleArc const & );
162 void build( ClothoidCurve const & );
163 void build( Biarc const & );
164 void build( BiarcList const & );
165 void build( PolyLine const & );
166 void build( ClothoidList const & );
167 void build( Dubins const & );
168 void build( Dubins3p const & );
169
174 void push_back( LineSegment const & c );
175
180 void push_back( CircleArc const & c );
181
185 void push_back( Biarc const & c );
186
191 void push_back( PolyLine const & c );
192
204 void push_back_G1( real_type x1, real_type y1, real_type theta1 );
205
219 void
221 real_type x0, real_type y0, real_type theta0,
222 real_type x1, real_type y1, real_type theta1
223 );
224
232 bool
233 build_G1(
234 integer n,
235 real_type const x[],
236 real_type const y[]
237 );
238
248 bool
249 build_G1(
250 integer n,
251 real_type const x[],
252 real_type const y[],
253 real_type const theta[]
254 );
255
259 Biarc const & get( integer idx ) const;
260
264 Biarc const & get_at_s( real_type s ) const;
265
269 integer num_segments() const { return integer(m_biarc_list.size()); }
270
275 integer find_at_s( real_type & s ) const;
276
277 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
278
279 real_type length() const override;
280 real_type length_ISO( real_type offs ) const override;
281
286 segment_length( integer nseg ) const;
287
292 segment_length_ISO( integer nseg, real_type offs ) const;
293
294 /*\
295 | _ _ _____ _ _
296 | | |__| |_|_ _| _(_)__ _ _ _ __ _| |___
297 | | '_ \ '_ \| || '_| / _` | ' \/ _` | / -_)
298 | |_.__/_.__/|_||_| |_\__,_|_||_\__, |_\___|
299 | |___/
300 \*/
301
302 void
304 real_type offs,
305 vector<Triangle2D> & tvec,
306 real_type max_angle = Utils::m_pi/6, // 30 degree
307 real_type max_size = 1e100,
308 integer icurve = 0
309 ) const override;
310
311 void
313 real_type offs,
314 vector<Triangle2D> & tvec,
315 real_type max_angle = Utils::m_pi/6, // 30 degree
316 real_type max_size = 1e100,
317 integer icurve = 0
318 ) const override;
319
320 void
322 vector<Triangle2D> & tvec,
323 real_type max_angle = Utils::m_pi/6, // 30 degree
324 real_type max_size = 1e100,
325 integer icurve = 0
326 ) const override;
327
328 #ifndef DOXYGEN_SHOULD_SKIP_THIS
336 void
337 build_AABBtree_ISO(
338 real_type offs,
339 real_type max_angle = Utils::m_pi/6, // 30 degree
340 real_type max_size = 1e100
341 ) const;
342
350 void
351 build_AABBtree_SAE(
352 real_type offs,
353 real_type max_angle = Utils::m_pi/6, // 30 degree
354 real_type max_size = 1e100
355 ) const {
356 build_AABBtree_ISO( -offs, max_angle, max_size );
357 }
358 #endif
359
360 /*\
361 | _ _
362 | | |__ | |__ _____ __
363 | | '_ \| '_ \ / _ \ \/ /
364 | | |_) | |_) | (_) > <
365 | |_.__/|_.__/ \___/_/\_\
366 \*/
367
368 void
370 real_type & xmin,
371 real_type & ymin,
372 real_type & xmax,
373 real_type & ymax
374 ) const override {
375 bbox_ISO( 0, xmin, ymin, xmax, ymax );
376 }
377
378 void
379 bbox_ISO(
380 real_type offs,
381 real_type & xmin,
382 real_type & ymin,
383 real_type & xmax,
384 real_type & ymax
385 ) const override;
386
387 /*\
388 | ____ _ _______ _
389 | | __ ) ___ __ _(_)_ __ / / ____|_ __ __| |
390 | | _ \ / _ \/ _` | | '_ \ / /| _| | '_ \ / _` |
391 | | |_) | __/ (_| | | | | |/ / | |___| | | | (_| |
392 | |____/ \___|\__, |_|_| |_/_/ |_____|_| |_|\__,_|
393 | |___/
394 \*/
395
397 theta_begin() const override
398 { return m_biarc_list.front().theta_begin(); }
399
401 theta_end() const override
402 { return m_biarc_list.back().theta_end(); }
403
405 x_begin() const override
406 { return m_biarc_list.front().x_begin(); }
407
409 y_begin() const override
410 { return m_biarc_list.front().y_begin(); }
411
413 x_end() const override
414 { return m_biarc_list.back().x_end(); }
415
417 y_end() const override
418 { return m_biarc_list.back().y_end(); }
419
421 x_begin_ISO( real_type offs ) const override
422 { return m_biarc_list.front().x_begin_ISO( offs ); }
423
425 y_begin_ISO( real_type offs ) const override
426 { return m_biarc_list.front().y_begin_ISO( offs ); }
427
429 x_end_ISO( real_type offs ) const override
430 { return m_biarc_list.back().x_end_ISO( offs ); }
431
433 y_end_ISO( real_type offs ) const override
434 { return m_biarc_list.back().y_end_ISO( offs ); }
435
437 tx_begin() const override
438 { return m_biarc_list.front().tx_begin(); }
439
441 ty_begin() const override
442 { return m_biarc_list.front().ty_begin(); }
443
445 tx_end() const override
446 { return m_biarc_list.back().tx_end(); }
447
449 ty_end() const override
450 { return m_biarc_list.back().ty_end(); }
451
453 nx_begin_ISO() const override
454 { return m_biarc_list.front().nx_begin_ISO(); }
455
457 ny_begin_ISO() const override
458 { return m_biarc_list.front().ny_begin_ISO(); }
459
461 nx_end_ISO() const override
462 { return m_biarc_list.back().nx_end_ISO(); }
463
465 ny_end_ISO() const override
466 { return m_biarc_list.back().ny_end_ISO(); }
467
468 /*\
469 | _ _ _
470 | | |_| |__ ___| |_ __ _
471 | | __| '_ \ / _ \ __/ _` |
472 | | |_| | | | __/ || (_| |
473 | \__|_| |_|\___|\__\__,_|
474 \*/
475
476 real_type theta ( real_type ) const override;
477 real_type theta_D ( real_type ) const override;
478 real_type theta_DD ( real_type ) const override;
479 real_type theta_DDD( real_type ) const override;
480
481 /*\
482 | _____ _ _ _
483 | |_ _| __ _ _ __ __| | | \ | |
484 | | | / _` | '_ \ / _` | | \| |
485 | | | | (_| | | | | (_| | | |\ |
486 | |_| \__,_|_| |_|\__,_| |_| \_|
487 \*/
488
489 real_type tx ( real_type ) const override;
490 real_type ty ( real_type ) const override;
491 real_type tx_D ( real_type ) const override;
492 real_type ty_D ( real_type ) const override;
493 real_type tx_DD ( real_type ) const override;
494 real_type ty_DD ( real_type ) const override;
495 real_type tx_DDD( real_type ) const override;
496 real_type ty_DDD( real_type ) const override;
497
498 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
499
500 void
501 tg(
502 real_type s,
503 real_type & tg_x,
504 real_type & tg_y
505 ) const override;
506
507 void
508 tg_D(
509 real_type s,
510 real_type & tg_x_D,
511 real_type & tg_y_D
512 ) const override;
513
514 void
515 tg_DD(
516 real_type s,
517 real_type & tg_x_DD,
518 real_type & tg_y_DD
519 ) const override;
520
521 void
522 tg_DDD(
523 real_type s,
524 real_type & tg_x_DDD,
525 real_type & tg_y_DDD
526 ) const override;
527
528 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
529
530 void
531 evaluate(
532 real_type s,
533 real_type & th,
534 real_type & k,
535 real_type & x,
536 real_type & y
537 ) const override;
538
539 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
540
541 void
543 real_type s,
544 real_type offs,
545 real_type & th,
546 real_type & k,
547 real_type & x,
548 real_type & y
549 ) const override;
550
551 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
552
553 real_type X ( real_type ) const override;
554 real_type Y ( real_type ) const override;
555 real_type X_D ( real_type ) const override;
556 real_type Y_D ( real_type ) const override;
557 real_type X_DD ( real_type ) const override;
558 real_type Y_DD ( real_type ) const override;
559 real_type X_DDD( real_type ) const override;
560 real_type Y_DDD( real_type ) const override;
561
562 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
563
564 void
565 eval(
566 real_type s,
567 real_type & x,
568 real_type & y
569 ) const override;
570
571 void
572 eval_D(
573 real_type s,
574 real_type & x_D,
575 real_type & y_D
576 ) const override;
577
578 void
579 eval_DD(
580 real_type s,
581 real_type & x_DD,
582 real_type & y_DD
583 ) const override;
584
585 void
586 eval_DDD(
587 real_type s,
588 real_type & x_DDD,
589 real_type & y_DDD
590 ) const override;
591
592 /*\
593 | __ __ _
594 | ___ / _|/ _|___ ___| |_
595 | / _ \| |_| |_/ __|/ _ \ __|
596 | | (_) | _| _\__ \ __/ |_
597 | \___/|_| |_| |___/\___|\__|
598 \*/
599
600 real_type X_ISO ( real_type s, real_type offs ) const override;
601 real_type Y_ISO ( real_type s, real_type offs ) const override;
602 real_type X_ISO_D ( real_type s, real_type offs ) const override;
603 real_type Y_ISO_D ( real_type s, real_type offs ) const override;
604 real_type X_ISO_DD ( real_type s, real_type offs ) const override;
605 real_type Y_ISO_DD ( real_type s, real_type offs ) const override;
606 real_type X_ISO_DDD( real_type s, real_type offs ) const override;
607 real_type Y_ISO_DDD( real_type s, real_type offs ) const override;
608
609 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
610
611 void
612 eval_ISO(
613 real_type s,
614 real_type offs,
615 real_type & x,
616 real_type & y
617 ) const override;
618
619 void
621 real_type s,
622 real_type offs,
623 real_type & x_D,
624 real_type & y_D
625 ) const override;
626
627 void
629 real_type s,
630 real_type offs,
631 real_type & x_DD,
632 real_type & y_DD
633 ) const override;
634
635 void
637 real_type s,
638 real_type offs,
639 real_type & x_DDD,
640 real_type & y_DDD
641 ) const override;
642
643 /*\
644 | _ __
645 | | |_ _ __ __ _ _ __ ___ / _| ___ _ __ _ __ ___
646 | | __| '__/ _` | '_ \/ __| |_ / _ \| '__| '_ ` _ \
647 | | |_| | | (_| | | | \__ \ _| (_) | | | | | | | |
648 | \__|_| \__,_|_| |_|___/_| \___/|_| |_| |_| |_|
649 \*/
650
651 void translate( real_type tx, real_type ty ) override;
652 void rotate( real_type angle, real_type cx, real_type cy ) override;
653 void scale( real_type sc ) override;
654 void reverse() override;
655 void change_origin( real_type newx0, real_type newy0 ) override;
656 void trim( real_type s_begin, real_type s_end ) override;
657
658 /*\
659 | _ _ _
660 | __| (_)___| |_ __ _ _ __ ___ ___
661 | / _` | / __| __/ _` | '_ \ / __/ _ \
662 | | (_| | \__ \ || (_| | | | | (_| __/
663 | \__,_|_|___/\__\__,_|_| |_|\___\___|
664 \*/
665
666 integer
668 real_type qx,
669 real_type qy,
670 real_type & x,
671 real_type & y,
672 real_type & s,
673 real_type & t,
674 real_type & dst
675 ) const override;
676
677 integer // true if projection is unique and orthogonal
679 real_type qx,
680 real_type qy,
681 real_type offs,
682 real_type & x,
683 real_type & y,
684 real_type & s,
685 real_type & t,
686 real_type & dst
687 ) const override;
688
689 string info() const;
690
691 void
692 info( ostream_type & stream ) const override
693 { stream << this->info(); }
694
695 friend
697 operator << ( ostream_type & stream, BiarcList const & CL );
698
706 void
707 get_STK(
708 real_type s[],
711 ) const;
712
719 void
720 get_XY( real_type x[], real_type y[] ) const;
721
732 integer
733 findST1(
734 real_type x,
735 real_type y,
736 real_type & s,
737 real_type & t
738 ) const;
739
752 integer
753 findST1(
754 integer ibegin,
755 integer iend,
756 real_type x,
757 real_type y,
758 real_type & s,
759 real_type & t
760 ) const;
761
762 /*\
763 | _ _ _ _
764 | ___ ___ | | (_)___(_) ___ _ __
765 | / __/ _ \| | | / __| |/ _ \| '_ \
766 | | (_| (_) | | | \__ \ | (_) | | | |
767 | \___\___/|_|_|_|___/_|\___/|_| |_|
768 \*/
769
773 bool
774 collision( BiarcList const & BL ) const {
775 return collision_ISO( 0, BL, 0 );
776 }
777
785 bool
787 real_type offs,
788 BiarcList const & BL,
789 real_type offs_C
790 ) const;
791
792 bool
793 collision( BaseCurve const * pC ) const override;
794
795 bool
797 real_type offs,
798 BaseCurve const * pC,
799 real_type offs_C
800 ) const override;
801
802 /*\
803 | _ _ _
804 | (_)_ __ | |_ ___ _ __ ___ ___ ___| |_
805 | | | '_ \| __/ _ \ '__/ __|/ _ \/ __| __|
806 | | | | | | || __/ | \__ \ __/ (__| |_
807 | |_|_| |_|\__\___|_| |___/\___|\___|\__|
808 \*/
809
816 void
818 BiarcList const & BL,
819 IntersectList & ilist
820 ) const {
821 this->intersect_ISO( 0, BL, 0, ilist );
822 }
823
832 void
834 real_type offs,
835 BiarcList const & BL,
836 real_type offs_obj,
837 IntersectList & ilist
838 ) const;
839
840 void
841 intersect(
842 BaseCurve const * pC,
843 IntersectList & ilist
844 ) const override;
845
846 void
848 real_type offs,
849 BaseCurve const * pC,
850 real_type offs_LS,
851 IntersectList & ilist
852 ) const override;
853
854#ifdef CLOTHOIDS_BACK_COMPATIBILITY
855#include "BiarcList_compatibility.hxx"
856#endif
857
858 };
859
860}
861
Definition BaseCurve.hxx:192
real_type kappa(real_type s) const
Definition BaseCurve.hxx:560
Definition Biarc.hxx:39
Definition BiarcList.hxx:42
real_type tx_DDD(real_type) const override
Definition BiarcList.cc:621
void evaluate_ISO(real_type s, real_type offs, real_type &th, real_type &k, real_type &x, real_type &y) const override
Definition BiarcList.cc:706
real_type nx_begin_ISO() const override
Definition BiarcList.hxx:453
CurveType type() const override
Definition BiarcList.hxx:127
real_type ty_begin() const override
Definition BiarcList.hxx:441
void trim(real_type s_begin, real_type s_end) override
Definition BiarcList.cc:1049
real_type ty_DDD(real_type) const override
Definition BiarcList.cc:630
void translate(real_type tx, real_type ty) override
translate curve by
Definition BiarcList.cc:986
real_type Y_ISO(real_type s, real_type offs) const override
Definition BiarcList.cc:861
real_type X_ISO_DD(real_type s, real_type offs) const override
Definition BiarcList.cc:888
real_type ty_DD(real_type) const override
Definition BiarcList.cc:612
void eval_D(real_type s, real_type &x_D, real_type &y_D) const override
Definition BiarcList.cc:807
real_type ny_end_ISO() const override
Definition BiarcList.hxx:465
void tg_D(real_type s, real_type &tg_x_D, real_type &tg_y_D) const override
Definition BiarcList.cc:652
void tg_DDD(real_type s, real_type &tg_x_DDD, real_type &tg_y_DDD) const override
Definition BiarcList.cc:678
void get_STK(real_type s[], real_type theta[], real_type kappa[]) const
Definition BiarcList.cc:1444
real_type y_begin() const override
Definition BiarcList.hxx:409
real_type length_ISO(real_type offs) const override
Definition BiarcList.cc:414
real_type X_D(real_type) const override
Definition BiarcList.cc:740
void eval_ISO_D(real_type s, real_type offs, real_type &x_D, real_type &y_D) const override
Definition BiarcList.cc:938
real_type theta_DDD(real_type) const override
Definition BiarcList.cc:552
real_type X_DD(real_type) const override
Definition BiarcList.cc:758
real_type ny_begin_ISO() const override
Definition BiarcList.hxx:457
real_type x_end_ISO(real_type offs) const override
Definition BiarcList.hxx:429
void reserve(integer n)
Definition BiarcList.cc:236
void eval_ISO(real_type s, real_type offs, real_type &x, real_type &y) const override
Definition BiarcList.cc:924
integer find_at_s(real_type &s) const
Definition BiarcList.cc:219
void eval_DDD(real_type s, real_type &x_DDD, real_type &y_DDD) const override
Definition BiarcList.cc:833
void eval(real_type s, real_type &x, real_type &y) const override
Definition BiarcList.cc:794
real_type Y(real_type) const override
Definition BiarcList.cc:731
void reverse() override
Definition BiarcList.cc:1017
void push_back_G1(real_type x1, real_type y1, real_type theta1)
Definition BiarcList.cc:301
real_type X_ISO_D(real_type s, real_type offs) const override
Definition BiarcList.cc:870
integer findST1(real_type x, real_type y, real_type &s, real_type &t) const
Definition BiarcList.cc:1485
real_type X_DDD(real_type) const override
Definition BiarcList.cc:776
friend ostream_type & operator<<(ostream_type &stream, BiarcList const &CL)
Definition BiarcList.cc:1578
bool collision(BiarcList const &BL) const
Definition BiarcList.hxx:774
void tg_DD(real_type s, real_type &tg_x_DD, real_type &tg_y_DD) const override
Definition BiarcList.cc:665
real_type theta_end() const override
Definition BiarcList.hxx:401
real_type tx_begin() const override
Definition BiarcList.hxx:437
real_type segment_length(integer nseg) const
Definition BiarcList.cc:421
void tg(real_type s, real_type &tg_x, real_type &tg_y) const override
Definition BiarcList.cc:639
void eval_ISO_DDD(real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const override
Definition BiarcList.cc:966
void evaluate(real_type s, real_type &th, real_type &k, real_type &x, real_type &y) const override
Definition BiarcList.cc:691
real_type tx(real_type) const override
Definition BiarcList.cc:567
real_type Y_DDD(real_type) const override
Definition BiarcList.cc:785
void change_origin(real_type newx0, real_type newy0) override
Definition BiarcList.cc:1038
real_type x_end() const override
Definition BiarcList.hxx:413
real_type X_ISO(real_type s, real_type offs) const override
Definition BiarcList.cc:852
bool collision_ISO(real_type offs, BiarcList const &BL, real_type offs_C) const
Definition BiarcList.cc:1173
void intersect_ISO(real_type offs, BiarcList const &BL, real_type offs_obj, IntersectList &ilist) const
Definition BiarcList.cc:1216
Biarc const & get(integer idx) const
Definition BiarcList.cc:379
real_type X(real_type) const override
Definition BiarcList.cc:722
void intersect(BiarcList const &BL, IntersectList &ilist) const
Definition BiarcList.hxx:817
real_type nx_end_ISO() const override
Definition BiarcList.hxx:461
void scale(real_type sc) override
Definition BiarcList.cc:1000
real_type ty(real_type) const override
Definition BiarcList.cc:576
real_type y_begin_ISO(real_type offs) const override
Definition BiarcList.hxx:425
real_type ty_D(real_type) const override
Definition BiarcList.cc:594
void init()
Definition BiarcList.cc:195
real_type tx_D(real_type) const override
Definition BiarcList.cc:585
real_type segment_length_ISO(integer nseg, real_type offs) const
Definition BiarcList.cc:427
Biarc const & get_at_s(real_type s) const
Definition BiarcList.cc:396
real_type tx_DD(real_type) const override
Definition BiarcList.cc:603
real_type Y_D(real_type) const override
Definition BiarcList.cc:749
real_type theta(real_type) const override
Definition BiarcList.cc:525
real_type x_begin() const override
Definition BiarcList.hxx:405
void rotate(real_type angle, real_type cx, real_type cy) override
Definition BiarcList.cc:993
real_type theta_begin() const override
Definition BiarcList.hxx:397
real_type x_begin_ISO(real_type offs) const override
Definition BiarcList.hxx:421
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 BiarcList.cc:1426
real_type tx_end() const override
Definition BiarcList.hxx:445
real_type theta_DD(real_type) const override
Definition BiarcList.cc:543
void get_XY(real_type x[], real_type y[]) const
Definition BiarcList.cc:1469
void bbox(real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
Definition BiarcList.hxx:369
real_type theta_D(real_type) const override
Definition BiarcList.cc:534
real_type y_end() const override
Definition BiarcList.hxx:417
real_type ty_end() const override
Definition BiarcList.hxx:449
BiarcList(BiarcList const &s)
Definition BiarcList.hxx:109
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 BiarcList.cc:441
void eval_ISO_DD(real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const override
Definition BiarcList.cc:952
real_type Y_ISO_DDD(real_type s, real_type offs) const override
Definition BiarcList.cc:915
bool build_G1(integer n, real_type const x[], real_type const y[])
Definition BiarcList.cc:357
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 BiarcList.cc:466
real_type y_end_ISO(real_type offs) const override
Definition BiarcList.hxx:433
real_type Y_DD(real_type) const override
Definition BiarcList.cc:767
void copy(BiarcList const &L)
Definition BiarcList.cc:206
void push_back(LineSegment const &c)
Definition BiarcList.cc:244
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 BiarcList.cc:453
integer num_segments() const
Definition BiarcList.hxx:269
real_type X_ISO_DDD(real_type s, real_type offs) const override
Definition BiarcList.cc:906
BiarcList const & operator=(BiarcList const &s)
Definition BiarcList.hxx:132
real_type Y_ISO_D(real_type s, real_type offs) const override
Definition BiarcList.cc:879
void info(ostream_type &stream) const override
Definition BiarcList.hxx:692
void eval_DD(real_type s, real_type &x_DD, real_type &y_DD) const override
Definition BiarcList.cc:820
real_type length() const override
Definition BiarcList.cc:409
real_type Y_ISO_DD(real_type s, real_type offs) const override
Definition BiarcList.cc:897
void bbox_ISO(real_type offs, real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
Definition BiarcList.cc:487
BiarcList(string const &name)
Definition BiarcList.hxx:95
Definition Circle.hxx:37
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
Utils::AABBtree< real_type > AABB_TREE
AABB tree type
Definition Clothoids.hh:81
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