codac 2.0.0
Loading...
Searching...
No Matches
codac2_Figure2D.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include <string>
13#include <vector>
14#include <memory>
15#include "codac2_Index.h"
18#include "codac2_Paving.h"
20#include "codac2_Zonotope.h"
21#include "codac2_ColorMap.h"
22#include "codac2_PavingStyle.h"
23#include "codac2_Ellipsoid.h"
24#include "codac2_Polygon.h"
25#include "codac2_SlicedTube.h"
26#include "codac2_Ctc.h"
27#include "codac2_Sep.h"
28
29#define DEFAULT_FIG_NAME "Codac - default figure"
30
31namespace codac2
32{
33 enum class GraphicOutput
34 {
35 VIBES = 0x01,
36 IPE = 0x02
37 };
38
39 constexpr int operator&(GraphicOutput a, GraphicOutput b)
40 { return static_cast<int>(static_cast<int>(a) & static_cast<int>(b)); }
41
42 constexpr GraphicOutput operator|(GraphicOutput a, GraphicOutput b)
43 { return static_cast<GraphicOutput>(static_cast<int>(a) | static_cast<int>(b)); }
44
45 struct FigureAxis
46 {
47 Index dim_id;
48 Interval limits;
49 std::string label;
50 };
51
52 inline FigureAxis axis(Index dim_id, const Interval& limits, const std::string& label = "")
53 {
54 assert_release(dim_id >= 0);
55 //assert_release(!limits.is_empty());
56
57 std::string axis_label = label;
58 if(axis_label.empty())
59 axis_label = "x_" + std::to_string(dim_id);
60
61 return { dim_id, limits, axis_label };
62 }
63
64 class DefaultFigure;
65 class PavingOut;
66 class PavingInOut;
67 template<typename P>
68 class Subpaving;
69
82 class Figure2D : public std::enable_shared_from_this<Figure2D>
83 {
84 public:
85
93 Figure2D(const std::string& name, GraphicOutput o, bool set_as_default = false);
94
100 const std::string& name() const;
101
107 Index size() const;
108
114 const std::vector<FigureAxis>& axes() const;
115
122 Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2);
123
129 const Index& i() const;
130
136 const Index& j() const;
137
143 const Vector& pos() const;
144
150 const Vector& window_size() const;
151
159
166 void center_viewbox(const Vector& c, const Vector& r);
167
171 void clear();
172
178 double scaled_unit() const;
179
184
190 bool is_default() const;
191
196
202 void set_tdomain(const Interval& tdomain);
203
204 // Geometric shapes
205
212 void draw_point(const Vector& c, const StyleProperties& s = StyleProperties());
213
221
229 void draw_circle(const Vector& c, double r, const StyleProperties& s = StyleProperties());
230
238 void draw_ring(const Vector& c, const Interval& r, const StyleProperties& s = StyleProperties());
239
247 void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& s = StyleProperties());
248
255 void draw_line(const Segment& e, const StyleProperties& s = StyleProperties());
256
265 void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& s = StyleProperties());
266
273 void draw_polyline(const std::vector<Vector>& x, const StyleProperties& s = StyleProperties());
274
282 void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& s = StyleProperties());
283
291
299
307
316 void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& s = StyleProperties());
317
326 void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& s = StyleProperties());
327
335
342 void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& s = StyleProperties());
343
350 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& s = StyleProperties());
351
358 void draw_trajectory(const SampledTraj<Vector>& x, const ColorMap& cmap);
359
366 void draw_trajectory(const AnalyticTraj<VectorType>& x, const ColorMap& cmap);
367
374 void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& s = StyleProperties());
375
382 void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& s = StyleProperties());
383
390 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& s);
391
398 void draw_tube(const SlicedTube<IntervalVector>& x, const ColorMap& cmap = ColorMap::blue_tube());
399
400 // Robots
401
409 void draw_tank(const Vector& x, float size, const StyleProperties& s = StyleProperties());
410
418 void draw_AUV(const Vector& x, float size, const StyleProperties& s = StyleProperties());
419
427 void draw_motor_boat(const Vector& x, float size, const StyleProperties& s = StyleProperties());
428
429 // Pavings
430
437 void draw_paving(const PavingOut& p,
438 const PavingStyle& style = PavingStyle::default_style());
439
447 void draw_paving(const PavingOut& p,
448 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
449 const PavingStyle& style = PavingStyle::default_style());
450
457 void draw_paving(const PavingInOut& p,
458 const PavingStyle& style = PavingStyle::default_style());
459
467 void draw_paving(const PavingInOut& p,
468 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
469 const PavingStyle& style = PavingStyle::default_style());
470
479 template<typename C>
480 requires IsCtcBaseOrPtr<C,IntervalVector>
481 void pave(const IntervalVector& x0, const C& c, double eps,
482 const PavingStyle& style = PavingStyle::default_style());
483
493 template<typename C>
494 requires IsCtcBaseOrPtr<C,IntervalVector>
495 void pave(const IntervalVector& x0, const C& c, double eps,
496 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
497 const PavingStyle& style = PavingStyle::default_style());
498
507 template<typename S>
508 requires IsSepBaseOrPtr<S>
509 void pave(const IntervalVector& x0, const S& s, double eps,
510 const PavingStyle& style = PavingStyle::default_style());
511
521 template<typename S>
522 requires IsSepBaseOrPtr<S>
523 void pave(const IntervalVector& x0, const S& s, double eps,
524 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
525 const PavingStyle& style = PavingStyle::default_style());
526
533 template<typename P>
534 void draw_subpaving(const Subpaving<P>& p, const StyleProperties& s = StyleProperties())
535 {
536 for(const auto& pi : p.boxes())
537 draw_box(pi, s);
538 }
539
540 protected:
541
542 const std::string _name;
543 Vector _pos {50,50}, _window_size {700,700};
544 std::vector<FigureAxis> _axes { axis(0,{0,1}), axis(1,{0,1}) };
545 std::vector<std::shared_ptr<OutputFigure2D>> _output_figures;
546 Interval _tdomain;
547
548 friend DefaultFigure;
549 };
550
560 {
561 public:
562
568 static std::shared_ptr<Figure2D> selected_fig()
569 {
570 if(_selected_fig == nullptr)
571 _selected_fig = _default_fig;
572 return _selected_fig;
573 }
574
580 static void set(std::shared_ptr<Figure2D> fig)
581 {
582 _selected_fig = fig;
583 }
584
591 static Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2)
592 {
593 auto_init();
594 return selected_fig()->set_axes(axis1,axis2);
595 }
596
603 static void set_window_properties(const Vector& pos, const Vector& size)
604 {
605 auto_init();
606 selected_fig()->set_window_properties(pos,size);
607 }
608
612 static void auto_scale()
613 {
614 auto_init();
615 selected_fig()->auto_scale();
616 }
617
621 static void clear()
622 {
623 auto_init();
624 selected_fig()->clear();
625 }
626
627 // Geometric shapes
628
635 static void draw_point(const Vector& c, const StyleProperties& s = StyleProperties())
636 {
637 auto_init();
638 selected_fig()->draw_point(c,s);
639 }
640
647 static void draw_box(const IntervalVector& x, const StyleProperties& s = StyleProperties())
648 {
649 auto_init();
650 selected_fig()->draw_box(x,s);
651 }
652
660 static void draw_circle(const Vector& c, double r, const StyleProperties& s = StyleProperties())
661 {
662 auto_init();
663 selected_fig()->draw_circle(c,r,s);
664 }
665
673 static void draw_ring(const Vector& c, const Interval& r, const StyleProperties& s = StyleProperties())
674 {
675 auto_init();
676 selected_fig()->draw_ring(c,r,s);
677 }
678
686 static void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& s = StyleProperties())
687 {
688 auto_init();
689 selected_fig()->draw_line(p1,p2,s);
690 }
691
698 static void draw_line(const Segment& e, const StyleProperties& s = StyleProperties())
699 {
700 auto_init();
701 selected_fig()->draw_line(e,s);
702 }
703
712 static void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& s = StyleProperties())
713 {
714 auto_init();
715 selected_fig()->draw_arrow(p1,p2,tip_length,s);
716 }
717
724 static void draw_polyline(const std::vector<Vector>& x, const StyleProperties& s = StyleProperties())
725 {
726 auto_init();
727 selected_fig()->draw_polyline(x,s);
728 }
729
737 static void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& s = StyleProperties())
738 {
739 auto_init();
740 selected_fig()->draw_polyline(x,tip_length,s);
741 }
742
749 static void draw_polygon(const Polygon& x, const StyleProperties& s = StyleProperties())
750 {
751 auto_init();
752 selected_fig()->draw_polygon(x,s);
753 }
754
762 {
763 auto_init();
764 selected_fig()->draw_parallelepiped(p,s);
765 }
766
773 static void draw_zonotope(const Zonotope& z, const StyleProperties& s = StyleProperties())
774 {
775 auto_init();
776 selected_fig()->draw_zonotope(z,s);
777 }
778
787 static void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& s = StyleProperties())
788 {
789 auto_init();
790 selected_fig()->draw_pie(c,r,theta,s);
791 }
792
801 static void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& s = StyleProperties())
802 {
803 auto_init();
804 selected_fig()->draw_ellipse(c,ab,theta,s);
805 }
806
813 static void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& s = StyleProperties())
814 {
815 auto_init();
816 selected_fig()->draw_ellipsoid(e,s);
817 }
818
825 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& s = StyleProperties())
826 {
827 auto_init();
828 selected_fig()->draw_trajectory(x,s);
829 }
830
837 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& s = StyleProperties())
838 {
839 auto_init();
840 selected_fig()->draw_trajectory(x,s);
841 }
842
849 static void draw_trajectory(const SampledTraj<Vector>& x, const ColorMap& cmap)
850 {
851 auto_init();
852 selected_fig()->draw_trajectory(x,cmap);
853 }
854
861 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const ColorMap& cmap)
862 {
863 auto_init();
864 selected_fig()->draw_trajectory(x,cmap);
865 }
866
873 static void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& s = StyleProperties())
874 {
875 auto_init();
876 selected_fig()->plot_trajectory(x,s);
877 }
878
885 static void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& s = StyleProperties())
886 {
887 auto_init();
888 selected_fig()->plot_trajectories(x,s);
889 }
890
897 static void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& s)
898 {
899 auto_init();
900 selected_fig()->draw_tube(x,s);
901 }
902
909 static void draw_tube(const SlicedTube<IntervalVector>& x, const ColorMap& cmap = ColorMap::blue_tube())
910 {
911 auto_init();
912 selected_fig()->draw_tube(x,cmap);
913 }
914
915 // Robots
916
924 static void draw_tank(const Vector& x, float size, const StyleProperties& s = StyleProperties())
925 {
926 auto_init();
927 selected_fig()->draw_tank(x,size,s);
928 }
929
937 static void draw_AUV(const Vector& x, float size, const StyleProperties& s = StyleProperties())
938 {
939 auto_init();
940 selected_fig()->draw_AUV(x,size,s);
941 }
942
950 static void draw_motor_boat(const Vector& x, float size, const StyleProperties& s = StyleProperties())
951 {
952 auto_init();
953 selected_fig()->draw_motor_boat(x,size,s);
954 }
955
956 // Pavings
957
958 protected:
959
960 static void init_axes_paving(const IntervalVector& x)
961 {
962 _default_fig->set_window_properties({100,100}, {800,800});
963 _default_fig->set_axes(axis(0,x[0],"x_1"), axis(1,x[1],"x_2"));
964 _default_fig->auto_scale();
965 }
966
967 public:
968
975 static void draw_paving(const PavingOut& p,
976 const PavingStyle& style = PavingStyle::default_style())
977 {
978 if(auto_init())
979 init_axes_paving(p.tree()->hull());
980 selected_fig()->draw_paving(p, style);
981 }
982
990 static void draw_paving(const PavingOut& p,
991 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
992 const PavingStyle& style = PavingStyle::default_style())
993 {
994 if(auto_init())
995 init_axes_paving(p.tree()->hull());
996 selected_fig()->draw_paving(p, draw_box, style);
997 }
998
1005 static void draw_paving(const PavingInOut& p,
1006 const PavingStyle& style = PavingStyle::default_style())
1007 {
1008 if(auto_init())
1009 init_axes_paving(p.tree()->hull());
1010 selected_fig()->draw_paving(p, style);
1011 }
1012
1020 static void draw_paving(const PavingInOut& p,
1021 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1022 const PavingStyle& style = PavingStyle::default_style())
1023 {
1024 if(auto_init())
1025 init_axes_paving(p.tree()->hull());
1026 selected_fig()->draw_paving(p, draw_box, style);
1027 }
1028
1037 template<typename C>
1038 requires IsCtcBaseOrPtr<C,IntervalVector>
1039 static void pave(const IntervalVector& x0, const C& c, double eps,
1040 const PavingStyle& style = PavingStyle::default_style())
1041 {
1042 if(auto_init())
1043 init_axes_paving(x0);
1044 selected_fig()->pave(x0, c, eps, style);
1045 }
1046
1056 template<typename C>
1057 requires IsCtcBaseOrPtr<C,IntervalVector>
1058 static void pave(const IntervalVector& x0, const C& c, double eps,
1059 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1060 const PavingStyle& style = PavingStyle::default_style())
1061 {
1062 if(auto_init())
1063 init_axes_paving(x0);
1064 selected_fig()->pave(x0, c, eps, draw_box, style);
1065 }
1066
1075 template<typename S>
1076 requires IsSepBaseOrPtr<S>
1077 static void pave(const IntervalVector& x0, const S& s, double eps,
1078 const PavingStyle& style = PavingStyle::default_style())
1079 {
1080 if(auto_init())
1081 init_axes_paving(x0);
1082 selected_fig()->pave(x0, s, eps, style);
1083 }
1084
1094 template<typename S>
1095 requires IsSepBaseOrPtr<S>
1096 static void pave(const IntervalVector& x0, const S& s, double eps,
1097 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1098 const PavingStyle& style = PavingStyle::default_style())
1099 {
1100 if(auto_init())
1101 init_axes_paving(x0);
1102 selected_fig()->pave(x0, s, eps, draw_box, style);
1103 }
1104
1111 template<typename P>
1112 static void draw_subpaving(const Subpaving<P>& p, const StyleProperties& s = StyleProperties())
1113 {
1114 auto_init();
1115 selected_fig()->draw_subpaving(p, s);
1116 }
1117
1118
1119 protected:
1120
1121 static bool auto_init()
1122 {
1123 if(!_default_fig && !_selected_fig)
1124 {
1125 _default_fig = std::make_shared<Figure2D>(DEFAULT_FIG_NAME, GraphicOutput::VIBES);
1126 _default_fig->set_window_properties({20.,20.}, {800.,800.});
1127 _default_fig->set_axes(axis(0,{-10,10}),axis(1,{-10,10}));
1128 _selected_fig = _default_fig;
1129 return true;
1130 }
1131
1132 return false;
1133 }
1134
1135 friend Figure2D;
1136
1137 static std::shared_ptr<Figure2D> _default_fig;
1138 static std::shared_ptr<Figure2D> _selected_fig;
1139 };
1140}
1141
1142#include "codac2_Figure2D_pave.h"
Default view class, used to manage the default figure.
Definition codac2_Figure2D.h:560
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:825
static void pave(const IntervalVector &x0, const C &c, double eps, const std::function< void(Figure2D &, const IntervalVector &, const StyleProperties &)> &draw_box, const PavingStyle &style=PavingStyle::default_style())
Draws a paving from a contractor while it is being computed.
Definition codac2_Figure2D.h:1058
static void draw_tube(const SlicedTube< IntervalVector > &x, const ColorMap &cmap=ColorMap::blue_tube())
Draws a tube of IntervalVector on the figure with a colormap.
Definition codac2_Figure2D.h:909
static void draw_pie(const Vector &c, const Interval &r, const Interval &theta, const StyleProperties &s=StyleProperties())
Draws a pie on the figure.
Definition codac2_Figure2D.h:787
static void draw_ring(const Vector &c, const Interval &r, const StyleProperties &s=StyleProperties())
Draws a ring on the figure.
Definition codac2_Figure2D.h:673
static void draw_paving(const PavingInOut &p, const std::function< void(Figure2D &, const IntervalVector &, const StyleProperties &)> &draw_box, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (inner/outer approximation) on the figure.
Definition codac2_Figure2D.h:1020
static void plot_trajectory(const SampledTraj< double > &x, const StyleProperties &s=StyleProperties())
Plots a trajectory on the figure (x-axis is the time)
Definition codac2_Figure2D.h:873
static void draw_circle(const Vector &c, double r, const StyleProperties &s=StyleProperties())
Draws a circle on the figure.
Definition codac2_Figure2D.h:660
static void pave(const IntervalVector &x0, const S &s, double eps, const std::function< void(Figure2D &, const IntervalVector &, const StyleProperties &)> &draw_box, const PavingStyle &style=PavingStyle::default_style())
Draws a paving from a separator while it is being computed.
Definition codac2_Figure2D.h:1096
static void draw_arrow(const Vector &p1, const Vector &p2, float tip_length, const StyleProperties &s=StyleProperties())
Draws an arrow on the figure.
Definition codac2_Figure2D.h:712
static void auto_scale()
VIBes only: auto scale the figure.
Definition codac2_Figure2D.h:612
static void draw_line(const Segment &e, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:698
static void draw_polyline(const std::vector< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:724
static void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &s=StyleProperties())
Draws an ellipsoid on the figure.
Definition codac2_Figure2D.h:813
static void draw_AUV(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws an AUV on the figure.
Definition codac2_Figure2D.h:937
static void draw_paving(const PavingOut &p, const std::function< void(Figure2D &, const IntervalVector &, const StyleProperties &)> &draw_box, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (outer approximation) on the figure.
Definition codac2_Figure2D.h:990
static void set(std::shared_ptr< Figure2D > fig)
Setter for the default figure.
Definition codac2_Figure2D.h:580
static void clear()
Clear the figure.
Definition codac2_Figure2D.h:621
static void draw_polyline(const std::vector< Vector > &x, float tip_length, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:737
static void draw_parallelepiped(const Parallelepiped &p, const StyleProperties &s=StyleProperties())
Draws a parallelepiped z+A*[-1,1]^2 on the figure.
Definition codac2_Figure2D.h:761
static void draw_paving(const PavingInOut &p, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (inner/outer approximation) on the figure.
Definition codac2_Figure2D.h:1005
static void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:686
static void draw_subpaving(const Subpaving< P > &p, const StyleProperties &s=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:1112
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:837
static void draw_ellipse(const Vector &c, const Vector &ab, double theta, const StyleProperties &s=StyleProperties())
Draws an ellipse on the figure.
Definition codac2_Figure2D.h:801
static Figure2D & set_axes(const FigureAxis &axis1, const FigureAxis &axis2)
Setter for the axes of the figure.
Definition codac2_Figure2D.h:591
static void draw_zonotope(const Zonotope &z, const StyleProperties &s=StyleProperties())
Draws a zonotope z+sum_i [-1,1] A_i on the figure.
Definition codac2_Figure2D.h:773
static void draw_polygon(const Polygon &x, const StyleProperties &s=StyleProperties())
Draws a Polygon object on the figure.
Definition codac2_Figure2D.h:749
static void draw_motor_boat(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a motor boat on the figure.
Definition codac2_Figure2D.h:950
static void draw_box(const IntervalVector &x, const StyleProperties &s=StyleProperties())
Draws a box on the figure.
Definition codac2_Figure2D.h:647
static void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
Definition codac2_Figure2D.h:603
static void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &s)
Draws a tube of IntervalVector on the figure.
Definition codac2_Figure2D.h:897
static void draw_trajectory(const SampledTraj< Vector > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:849
static void pave(const IntervalVector &x0, const C &c, double eps, const PavingStyle &style=PavingStyle::default_style())
Draws a paving from a contractor while it is being computed.
Definition codac2_Figure2D.h:1039
static void draw_tank(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a tank on the figure.
Definition codac2_Figure2D.h:924
static void plot_trajectories(const SampledTraj< Vector > &x, const StyleProperties &s=StyleProperties())
Plots a set of trajectories on the figure (x-axis is the time)
Definition codac2_Figure2D.h:885
static std::shared_ptr< Figure2D > selected_fig()
Getter for the default figure.
Definition codac2_Figure2D.h:568
static void draw_point(const Vector &c, const StyleProperties &s=StyleProperties())
Draws a point on the figure.
Definition codac2_Figure2D.h:635
static void draw_paving(const PavingOut &p, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (outer approximation) on the figure.
Definition codac2_Figure2D.h:975
static void pave(const IntervalVector &x0, const S &s, double eps, const PavingStyle &style=PavingStyle::default_style())
Draws a paving from a separator while it is being computed.
Definition codac2_Figure2D.h:1077
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:861
Ellipsoid representation.
Definition codac2_Ellipsoid.h:43
const Index & j() const
Getter for the index of the vertical axis.
Figure2D & set_axes(const FigureAxis &axis1, const FigureAxis &axis2)
Setter for the axes of the figure.
const std::vector< FigureAxis > & axes() const
Getter for the axes of the figure.
void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
void set_tdomain(const Interval &tdomain)
Setter for the time domain of the figure.
void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
void draw_trajectory(const SampledTraj< Vector > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
void draw_zonotope(const Zonotope &z, const StyleProperties &s=StyleProperties())
Draws a zonotope z+sum_i [-1,1] A_i on the figure.
void draw_parallelepiped(const Parallelepiped &p, const StyleProperties &s=StyleProperties())
Draws a parallelepiped z+A*[-1,1]^2 on the figure.
void draw_polyline(const std::vector< Vector > &x, float tip_length, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
void draw_tank(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a tank on the figure.
void center_viewbox(const Vector &c, const Vector &r)
VIBes only: center the viewbox on a given point with a given radius.
const Vector & pos() const
Getter for the position of the figure.
void draw_box(const IntervalVector &x, const StyleProperties &s=StyleProperties())
Draws a box on the figure.
void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
void draw_circle(const Vector &c, double r, const StyleProperties &s=StyleProperties())
Draws a circle on the figure.
void draw_motor_boat(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a motor boat on the figure.
void plot_trajectory(const SampledTraj< double > &x, const StyleProperties &s=StyleProperties())
Plots a trajectory on the figure (x-axis is the time)
void draw_polyline(const std::vector< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
void clear()
Clears the figure.
const Vector & window_size() const
getter for the size of the window
bool is_default() const
void draw_AUV(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws an AUV on the figure.
void plot_trajectories(const SampledTraj< Vector > &x, const StyleProperties &s=StyleProperties())
Plots a set of trajectories on the figure (x-axis is the time)
void set_as_default()
Sets the figure as the default view.
void draw_ring(const Vector &c, const Interval &r, const StyleProperties &s=StyleProperties())
Draws a ring on the figure.
void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &s=StyleProperties())
Draws an ellipsoid on the figure.
void draw_trajectory(const AnalyticTraj< VectorType > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
void draw_pie(const Vector &c, const Interval &r, const Interval &theta, const StyleProperties &s=StyleProperties())
Draws a pie on the figure.
double scaled_unit() const
Getter for the scaling factor of the figure.
void draw_paving(const PavingOut &p, const std::function< void(Figure2D &, const IntervalVector &, const StyleProperties &)> &draw_box, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (outer approximation) on the figure.
void draw_line(const Segment &e, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
const Index & i() const
Getter for the index of the horizontal axis.
const std::string & name() const
Getter for the name of the figure.
void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &s)
Draws a tube of IntervalVector on the figure.
void draw_paving(const PavingOut &p, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (outer approximation) on the figure.
void pave(const IntervalVector &x0, const C &c, double eps, const PavingStyle &style=PavingStyle::default_style())
Draws a paving from a contractor while it is being computed.
Definition codac2_Figure2D_pave.h:78
void draw_subpaving(const Subpaving< P > &p, const StyleProperties &s=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:534
void draw_ellipse(const Vector &c, const Vector &ab, double theta, const StyleProperties &s=StyleProperties())
Draws an ellipse on the figure.
Figure2D(const std::string &name, GraphicOutput o, bool set_as_default=false)
Creates a new Figure2D object, with a given name and output.
void draw_polygon(const Polygon &x, const StyleProperties &s=StyleProperties())
Draws a Polygon object on the figure.
void draw_paving(const PavingInOut &p, const std::function< void(Figure2D &, const IntervalVector &, const StyleProperties &)> &draw_box, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (inner/outer approximation) on the figure.
void auto_scale()
VIBes only: auto scale the figure.
void draw_tube(const SlicedTube< IntervalVector > &x, const ColorMap &cmap=ColorMap::blue_tube())
Draws a tube of IntervalVector on the figure with a colormap.
Index size() const
Getter for the size of the figure.
void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
void draw_arrow(const Vector &p1, const Vector &p2, float tip_length, const StyleProperties &s=StyleProperties())
Draws an arrow on the figure.
void draw_point(const Vector &c, const StyleProperties &s=StyleProperties())
Draws a point on the figure.
void draw_paving(const PavingInOut &p, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (inner/outer approximation) on the figure.
Interval class, for representing closed and connected subsets of .
Definition codac2_Interval.h:49
Class representing a parallelepiped .
Definition codac2_Parallelepiped.h:30
Represents a polygon (convex or non-convex) defined by its vertices enclosed in IntervalVectors.
Definition codac2_Polygon.h:29
Represents a geometric segment defined by two points enclosed in IntervalVectors.
Definition codac2_Segment.h:28
Class representing a zonotope .
Definition codac2_Zonotope.h:29
Definition codac2_OctaSym.h:21
Eigen::Matrix< double,-1, 1 > Vector
Alias for a dynamically-sized column vector of doubles.
Definition codac2_Vector.h:24
Eigen::Matrix< Interval,-1, 1 > IntervalVector
Alias for a dynamic-size column vector of intervals.
Definition codac2_IntervalVector.h:25
Represents a set of RGB or HSV values.
Definition codac2_ColorMap.h:29
static ColorMap blue_tube()
Blue tube color map.
Definition codac2_ColorMap.h:131
Style properties structure, to specify the style of a shape.
Definition codac2_StyleProperties.h:26