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_PavingStyle.h"
22#include "codac2_Ellipsoid.h"
23#include "codac2_Polygon.h"
24#include "codac2_SlicedTube.h"
25#include "codac2_Ctc.h"
26#include "codac2_Sep.h"
27
28#define DEFAULT_FIG_NAME "Codac - default figure"
29
30namespace codac2
31{
32 enum class GraphicOutput
33 {
34 VIBES = 0x01,
35 IPE = 0x02
36 };
37
38 constexpr int operator&(GraphicOutput a, GraphicOutput b)
39 { return static_cast<int>(static_cast<int>(a) & static_cast<int>(b)); }
40
41 constexpr GraphicOutput operator|(GraphicOutput a, GraphicOutput b)
42 { return static_cast<GraphicOutput>(static_cast<int>(a) | static_cast<int>(b)); }
43
44 struct FigureAxis
45 {
46 Index dim_id;
47 Interval limits;
48 std::string label;
49 };
50
51 inline FigureAxis axis(Index dim_id, const Interval& limits, const std::string& label = "")
52 {
53 assert_release(dim_id >= 0);
54 //assert_release(!limits.is_empty());
55
56 std::string axis_label = label;
57 if(axis_label.empty())
58 axis_label = "x_" + std::to_string(dim_id);
59
60 return { dim_id, limits, axis_label };
61 }
62
63 class DefaultFigure;
64 class PavingOut;
65 class PavingInOut;
66 template<typename P>
67 class Subpaving;
68
81 class Figure2D : public std::enable_shared_from_this<Figure2D>
82 {
83 public:
84
92 Figure2D(const std::string& name, GraphicOutput o, bool set_as_default = false);
93
99 std::vector<std::shared_ptr<OutputFigure2D>> output_figures();
100
106 const std::string& name() const;
107
113 Index size() const;
114
120 const std::vector<FigureAxis>& axes() const;
121
128 Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2);
129
135 const Index& i() const;
136
142 const Index& j() const;
143
149 const Vector& pos() const;
150
156 const Vector& window_size() const;
157
165
172 void center_viewbox(const Vector& c, const Vector& r);
173
177 void clear();
178
184 double scaled_unit() const;
185
190
196 bool is_default() const;
197
202
208 void set_tdomain(const Interval& tdomain);
209
210 // Geometric shapes
211
218 void draw_point(const Vector& c, const StyleProperties& style = StyleProperties());
219
226 void draw_box(const IntervalVector& x, const StyleProperties& style = StyleProperties());
227
235 void draw_circle(const Vector& c, double r, const StyleProperties& style = StyleProperties());
236
244 void draw_ring(const Vector& c, const Interval& r, const StyleProperties& style = StyleProperties());
245
253 void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& style = StyleProperties());
254
261 void draw_line(const Segment& e, const StyleProperties& style = StyleProperties());
262
271 void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& style = StyleProperties());
272
279 void draw_polyline(const std::vector<Vector>& x, const StyleProperties& style = StyleProperties());
280
288 void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& style = StyleProperties());
289
296 void draw_polygon(const Polygon& x, const StyleProperties& style = StyleProperties());
297
305
312 void draw_zonotope(const Zonotope& z, const StyleProperties& style = StyleProperties());
313
322 void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& style = StyleProperties());
323
332 void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& style = StyleProperties());
333
340 void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& style = StyleProperties());
341
348 void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties());
349
356 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& style = StyleProperties());
357
364 void draw_trajectory(const SampledTraj<Vector>& x, const StyleGradientProperties& style);
365
372 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleGradientProperties& style);
373
380 void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& style = StyleProperties());
381
387 void plot_trajectories(const SampledTraj<Vector>& x);
388
395 void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& style);
396
410 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& style, int max_nb_slices_to_display = 5000);
411
425 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleGradientProperties& style = StyleGradientProperties(ColorMap::blue_tube()), int max_nb_slices_to_display = 5000);
426
433 void plot_tube(const SlicedTube<Interval>& x, const StyleProperties& style = StyleProperties());
434
443 void plot_tube(const SlicedTube<Interval>& x, const SlicedTube<Interval>& v, const StyleProperties& style = StyleProperties());
444
445 // Robots
446
454 void draw_tank(const Vector& x, float size, const StyleProperties& style = StyleProperties());
455
463 void draw_AUV(const Vector& x, float size, const StyleProperties& style = StyleProperties());
464
472 void draw_motor_boat(const Vector& x, float size, const StyleProperties& style = StyleProperties());
473
474 // Miscellaneous
475
484 void draw_text(const std::string& text, const Vector& ul, double scale, const StyleProperties& style = StyleProperties());
485
493 void draw_raster(const std::string& filename, const IntervalVector& bbox, const StyleProperties& style = StyleProperties());
494
495 // Pavings
496
503 void draw_paving(const PavingOut& p,
504 const PavingStyle& style = PavingStyle::default_style());
505
513 void draw_paving(const PavingOut& p,
514 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
515 const PavingStyle& style = PavingStyle::default_style());
516
523 void draw_paving(const PavingInOut& p,
524 const PavingStyle& style = PavingStyle::default_style());
525
533 void draw_paving(const PavingInOut& p,
534 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
535 const PavingStyle& style = PavingStyle::default_style());
536
545 template<typename C>
546 requires IsCtcBaseOrPtr<C,IntervalVector>
547 void pave(const IntervalVector& x0, const C& c, double eps,
548 const PavingStyle& style = PavingStyle::default_style());
549
559 template<typename C>
560 requires IsCtcBaseOrPtr<C,IntervalVector>
561 void pave(const IntervalVector& x0, const C& c, double eps,
562 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
563 const PavingStyle& style = PavingStyle::default_style());
564
573 template<typename S>
574 requires IsSepBaseOrPtr<S>
575 void pave(const IntervalVector& x0, const S& s, double eps,
576 const PavingStyle& style = PavingStyle::default_style());
577
587 template<typename S>
588 requires IsSepBaseOrPtr<S>
589 void pave(const IntervalVector& x0, const S& s, double eps,
590 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
591 const PavingStyle& style = PavingStyle::default_style());
592
599 template<typename P>
600 void draw_subpaving(const Subpaving<P>& p, const StyleProperties& style = StyleProperties())
601 {
602 for(const auto& pi : p.boxes())
603 draw_box(pi, style);
604 }
605
606 protected:
607
608 const std::string _name;
609 Vector _pos {50,50}, _window_size {700,700};
610 std::vector<FigureAxis> _axes { axis(0,{0,1}), axis(1,{0,1}) };
611 std::vector<std::shared_ptr<OutputFigure2D>> _output_figures;
612 Interval _tdomain;
613
614 friend DefaultFigure;
615 };
616
626 {
627 public:
628
634 static std::shared_ptr<Figure2D> selected_fig()
635 {
636 if(_selected_fig == nullptr)
637 _selected_fig = _default_fig;
638 return _selected_fig;
639 }
640
646 static void set(std::shared_ptr<Figure2D> fig)
647 {
648 _selected_fig = fig;
649 }
650
657 static Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2)
658 {
659 auto_init();
660 return selected_fig()->set_axes(axis1,axis2);
661 }
662
669 static void set_window_properties(const Vector& pos, const Vector& size)
670 {
671 auto_init();
672 selected_fig()->set_window_properties(pos,size);
673 }
674
678 static void auto_scale()
679 {
680 auto_init();
681 selected_fig()->auto_scale();
682 }
683
687 static void clear()
688 {
689 auto_init();
690 selected_fig()->clear();
691 }
692
693 // Geometric shapes
694
701 static void draw_point(const Vector& c, const StyleProperties& style = StyleProperties())
702 {
703 auto_init();
704 selected_fig()->draw_point(c,style);
705 }
706
713 static void draw_box(const IntervalVector& x, const StyleProperties& style = StyleProperties())
714 {
715 auto_init();
716 selected_fig()->draw_box(x,style);
717 }
718
726 static void draw_circle(const Vector& c, double r, const StyleProperties& style = StyleProperties())
727 {
728 auto_init();
729 selected_fig()->draw_circle(c,r,style);
730 }
731
739 static void draw_ring(const Vector& c, const Interval& r, const StyleProperties& style = StyleProperties())
740 {
741 auto_init();
742 selected_fig()->draw_ring(c,r,style);
743 }
744
752 static void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& style = StyleProperties())
753 {
754 auto_init();
755 selected_fig()->draw_line(p1,p2,style);
756 }
757
764 static void draw_line(const Segment& e, const StyleProperties& style = StyleProperties())
765 {
766 auto_init();
767 selected_fig()->draw_line(e,style);
768 }
769
778 static void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& style = StyleProperties())
779 {
780 auto_init();
781 selected_fig()->draw_arrow(p1,p2,tip_length,style);
782 }
783
790 static void draw_polyline(const std::vector<Vector>& x, const StyleProperties& style = StyleProperties())
791 {
792 auto_init();
793 selected_fig()->draw_polyline(x,style);
794 }
795
803 static void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& style = StyleProperties())
804 {
805 auto_init();
806 selected_fig()->draw_polyline(x,tip_length,style);
807 }
808
815 static void draw_polygon(const Polygon& x, const StyleProperties& style = StyleProperties())
816 {
817 auto_init();
818 selected_fig()->draw_polygon(x,style);
819 }
820
828 {
829 auto_init();
830 selected_fig()->draw_parallelepiped(p,style);
831 }
832
839 static void draw_zonotope(const Zonotope& z, const StyleProperties& style = StyleProperties())
840 {
841 auto_init();
842 selected_fig()->draw_zonotope(z,style);
843 }
844
853 static void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& style = StyleProperties())
854 {
855 auto_init();
856 selected_fig()->draw_pie(c,r,theta,style);
857 }
858
867 static void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& style = StyleProperties())
868 {
869 auto_init();
870 selected_fig()->draw_ellipse(c,ab,theta,style);
871 }
872
879 static void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& style = StyleProperties())
880 {
881 auto_init();
882 selected_fig()->draw_ellipsoid(e,style);
883 }
884
891 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties())
892 {
893 auto_init();
894 selected_fig()->draw_trajectory(x,style);
895 }
896
903 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& style = StyleProperties())
904 {
905 auto_init();
906 selected_fig()->draw_trajectory(x,style);
907 }
908
915 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleGradientProperties& style)
916 {
917 auto_init();
918 selected_fig()->draw_trajectory(x,style);
919 }
920
927 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleGradientProperties& style)
928 {
929 auto_init();
930 selected_fig()->draw_trajectory(x,style);
931 }
932
939 static void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& style = StyleProperties())
940 {
941 auto_init();
942 selected_fig()->plot_trajectory(x,style);
943 }
944
951 static void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties())
952 {
953 auto_init();
954 selected_fig()->plot_trajectories(x,style);
955 }
956
963 static void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& style)
964 {
965 auto_init();
966 selected_fig()->draw_tube(x,style);
967 }
968
975 static void draw_tube(const SlicedTube<IntervalVector>& x, const StyleGradientProperties& style = StyleGradientProperties(ColorMap::blue_tube()))
976 {
977 auto_init();
978 selected_fig()->draw_tube(x,style);
979 }
980
987 static void plot_tube(const SlicedTube<Interval>& x, const StyleProperties& style = StyleProperties())
988 {
989 auto_init();
990 selected_fig()->plot_tube(x,style);
991 }
992
1001 static void plot_tube(const SlicedTube<Interval>& x, const SlicedTube<Interval>& v, const StyleProperties& style = StyleProperties())
1002 {
1003 auto_init();
1004 selected_fig()->plot_tube(x,v,style);
1005 }
1006
1007 // Robots
1008
1016 static void draw_tank(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1017 {
1018 auto_init();
1019 selected_fig()->draw_tank(x,size,style);
1020 }
1021
1029 static void draw_AUV(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1030 {
1031 auto_init();
1032 selected_fig()->draw_AUV(x,size,style);
1033 }
1034
1042 static void draw_motor_boat(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1043 {
1044 auto_init();
1045 selected_fig()->draw_motor_boat(x,size,style);
1046 }
1047
1048 // Miscellaneous
1049
1058 static void draw_text(const std::string& text, const Vector& ul, double scale, const StyleProperties& style = StyleProperties())
1059 {
1060 auto_init();
1061 selected_fig()->draw_text(text,ul,scale,style);
1062 }
1063
1071 static void draw_raster(const std::string& filename, const IntervalVector& bbox, const StyleProperties& style = StyleProperties())
1072 {
1073 auto_init();
1074 selected_fig()->draw_raster(filename,bbox,style);
1075 }
1076
1077 // Pavings
1078
1079 protected:
1080
1081 static void init_axes_paving(const IntervalVector& x)
1082 {
1083 _default_fig->set_window_properties({100,100}, {800,800});
1084 _default_fig->set_axes(axis(0,x[0],"x_1"), axis(1,x[1],"x_2"));
1085 _default_fig->auto_scale();
1086 }
1087
1088 public:
1089
1096 static void draw_paving(const PavingOut& p,
1097 const PavingStyle& style = PavingStyle::default_style())
1098 {
1099 if(auto_init())
1100 init_axes_paving(p.tree()->hull());
1101 selected_fig()->draw_paving(p, style);
1102 }
1103
1111 static void draw_paving(const PavingOut& p,
1112 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1113 const PavingStyle& style = PavingStyle::default_style())
1114 {
1115 if(auto_init())
1116 init_axes_paving(p.tree()->hull());
1117 selected_fig()->draw_paving(p, draw_box, style);
1118 }
1119
1126 static void draw_paving(const PavingInOut& p,
1127 const PavingStyle& style = PavingStyle::default_style())
1128 {
1129 if(auto_init())
1130 init_axes_paving(p.tree()->hull());
1131 selected_fig()->draw_paving(p, style);
1132 }
1133
1141 static void draw_paving(const PavingInOut& p,
1142 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1143 const PavingStyle& style = PavingStyle::default_style())
1144 {
1145 if(auto_init())
1146 init_axes_paving(p.tree()->hull());
1147 selected_fig()->draw_paving(p, draw_box, style);
1148 }
1149
1158 template<typename C>
1159 requires IsCtcBaseOrPtr<C,IntervalVector>
1160 static void pave(const IntervalVector& x0, const C& c, double eps,
1161 const PavingStyle& style = PavingStyle::default_style())
1162 {
1163 if(auto_init())
1164 init_axes_paving(x0);
1165 selected_fig()->pave(x0, c, eps, style);
1166 }
1167
1177 template<typename C>
1178 requires IsCtcBaseOrPtr<C,IntervalVector>
1179 static void pave(const IntervalVector& x0, const C& c, double eps,
1180 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1181 const PavingStyle& style = PavingStyle::default_style())
1182 {
1183 if(auto_init())
1184 init_axes_paving(x0);
1185 selected_fig()->pave(x0, c, eps, draw_box, style);
1186 }
1187
1196 template<typename S>
1197 requires IsSepBaseOrPtr<S>
1198 static void pave(const IntervalVector& x0, const S& s, double eps,
1199 const PavingStyle& style = PavingStyle::default_style())
1200 {
1201 if(auto_init())
1202 init_axes_paving(x0);
1203 selected_fig()->pave(x0, s, eps, style);
1204 }
1205
1215 template<typename S>
1216 requires IsSepBaseOrPtr<S>
1217 static void pave(const IntervalVector& x0, const S& s, double eps,
1218 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1219 const PavingStyle& style = PavingStyle::default_style())
1220 {
1221 if(auto_init())
1222 init_axes_paving(x0);
1223 selected_fig()->pave(x0, s, eps, draw_box, style);
1224 }
1225
1232 template<typename P>
1233 static void draw_subpaving(const Subpaving<P>& p, const StyleProperties& style = StyleProperties())
1234 {
1235 auto_init();
1236 selected_fig()->draw_subpaving(p, style);
1237 }
1238
1239
1240 protected:
1241
1242 static bool auto_init()
1243 {
1244 if(!_default_fig && !_selected_fig)
1245 {
1246 _default_fig = std::make_shared<Figure2D>(DEFAULT_FIG_NAME, GraphicOutput::VIBES);
1247 _default_fig->set_window_properties({20.,20.}, {800.,800.});
1248 _default_fig->set_axes(axis(0,{-10,10}),axis(1,{-10,10}));
1249 _selected_fig = _default_fig;
1250 return true;
1251 }
1252
1253 return false;
1254 }
1255
1256 friend Figure2D;
1257
1258 static std::shared_ptr<Figure2D> _default_fig;
1259 static std::shared_ptr<Figure2D> _selected_fig;
1260 };
1261}
1262
1263#include "codac2_Figure2D_pave.h"
Default view class, used to manage the default figure.
Definition codac2_Figure2D.h:626
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:1179
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:891
static void draw_box(const IntervalVector &x, const StyleProperties &style=StyleProperties())
Draws a box on the figure.
Definition codac2_Figure2D.h:713
static void draw_ring(const Vector &c, const Interval &r, const StyleProperties &style=StyleProperties())
Draws a ring on the figure.
Definition codac2_Figure2D.h:739
static void draw_line(const Segment &e, const StyleProperties &style=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:764
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:1141
static void draw_circle(const Vector &c, double r, const StyleProperties &style=StyleProperties())
Draws a circle on the figure.
Definition codac2_Figure2D.h:726
static void draw_AUV(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws an AUV on the figure.
Definition codac2_Figure2D.h:1029
static void draw_polygon(const Polygon &x, const StyleProperties &style=StyleProperties())
Draws a Polygon object on the figure.
Definition codac2_Figure2D.h:815
static void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &style=StyleProperties())
Draws an ellipsoid on the figure.
Definition codac2_Figure2D.h:879
static void draw_point(const Vector &c, const StyleProperties &style=StyleProperties())
Draws a point on the figure.
Definition codac2_Figure2D.h:701
static void plot_tube(const SlicedTube< Interval > &x, const SlicedTube< Interval > &v, const StyleProperties &style=StyleProperties())
Plots a tube on the figure (x-axis is the time), with derivative information: slices are displayed as...
Definition codac2_Figure2D.h:1001
static void draw_motor_boat(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws a motor boat on the figure.
Definition codac2_Figure2D.h:1042
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:1217
static void auto_scale()
VIBes only: auto scale the figure.
Definition codac2_Figure2D.h:678
static void draw_polyline(const std::vector< Vector > &x, float tip_length, const StyleProperties &style=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:803
static void draw_raster(const std::string &filename, const IntervalVector &bbox, const StyleProperties &style=StyleProperties())
Draws a raster on the figure in VIBes only, only the bounding box is drawn in IPE.
Definition codac2_Figure2D.h:1071
static void draw_zonotope(const Zonotope &z, const StyleProperties &style=StyleProperties())
Draws a zonotope z+sum_i [-1,1] A_i on the figure.
Definition codac2_Figure2D.h:839
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:1111
static void set(std::shared_ptr< Figure2D > fig)
Setter for the default figure.
Definition codac2_Figure2D.h:646
static void clear()
Clear the figure.
Definition codac2_Figure2D.h:687
static void draw_parallelepiped(const Parallelepiped &p, const StyleProperties &style=StyleProperties())
Draws a parallelepiped z+A*[-1,1]^2 on the figure.
Definition codac2_Figure2D.h:827
static void plot_trajectory(const SampledTraj< double > &x, const StyleProperties &style=StyleProperties())
Plots a trajectory on the figure (x-axis is the time)
Definition codac2_Figure2D.h:939
static void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &style)
Draws a tube of IntervalVector on the figure.
Definition codac2_Figure2D.h:963
static void draw_arrow(const Vector &p1, const Vector &p2, float tip_length, const StyleProperties &style=StyleProperties())
Draws an arrow on the figure.
Definition codac2_Figure2D.h:778
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:1126
static void plot_tube(const SlicedTube< Interval > &x, const StyleProperties &style=StyleProperties())
Plots a tube on the figure (x-axis is the time)
Definition codac2_Figure2D.h:987
static void draw_subpaving(const Subpaving< P > &p, const StyleProperties &style=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:1233
static Figure2D & set_axes(const FigureAxis &axis1, const FigureAxis &axis2)
Setter for the axes of the figure.
Definition codac2_Figure2D.h:657
static void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &style=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:752
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:927
static void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
Definition codac2_Figure2D.h:669
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:1160
static void draw_pie(const Vector &c, const Interval &r, const Interval &theta, const StyleProperties &style=StyleProperties())
Draws a pie on the figure.
Definition codac2_Figure2D.h:853
static void plot_trajectories(const SampledTraj< Vector > &x, const StyleProperties &style=StyleProperties())
Plots a set of trajectories on the figure (x-axis is the time)
Definition codac2_Figure2D.h:951
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:915
static void draw_ellipse(const Vector &c, const Vector &ab, double theta, const StyleProperties &style=StyleProperties())
Draws an ellipse on the figure.
Definition codac2_Figure2D.h:867
static std::shared_ptr< Figure2D > selected_fig()
Getter for the default figure.
Definition codac2_Figure2D.h:634
static void draw_tube(const SlicedTube< IntervalVector > &x, const StyleGradientProperties &style=StyleGradientProperties(ColorMap::blue_tube()))
Draws a tube of IntervalVector on the figure with a colormap.
Definition codac2_Figure2D.h:975
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:903
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:1096
static void draw_text(const std::string &text, const Vector &ul, double scale, const StyleProperties &style=StyleProperties())
Draws text on the figure.
Definition codac2_Figure2D.h:1058
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:1198
static void draw_polyline(const std::vector< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:790
static void draw_tank(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws a tank on the figure.
Definition codac2_Figure2D.h:1016
Ellipsoid representation.
Definition codac2_Ellipsoid.h:43
void draw_polyline(const std::vector< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a polyline on the figure.
std::vector< std::shared_ptr< OutputFigure2D > > output_figures()
Returns OutputFigure2D objects rendering the current figure.
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.
void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
const std::vector< FigureAxis > & axes() const
Getter for the axes of the figure.
void set_tdomain(const Interval &tdomain)
Setter for the time domain of the figure.
void draw_motor_boat(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws a motor boat on the figure.
void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &style=StyleProperties())
Draws a line 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.
void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &style, int max_nb_slices_to_display=5000)
Draws a tube of IntervalVector on the figure with some StyleProperties.
const Vector & pos() const
Getter for the position of the figure.
void draw_ring(const Vector &c, const Interval &r, const StyleProperties &style=StyleProperties())
Draws a ring on the figure.
void draw_parallelepiped(const Parallelepiped &p, const StyleProperties &style=StyleProperties())
Draws a parallelepiped z+A*[-1,1]^2 on the figure.
void draw_raster(const std::string &filename, const IntervalVector &bbox, const StyleProperties &style=StyleProperties())
Draws a raster on the figure in VIBes only, only the bounding box is drawn in IPE.
void draw_tank(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws a tank on the figure.
void draw_arrow(const Vector &p1, const Vector &p2, float tip_length, const StyleProperties &style=StyleProperties())
Draws an arrow 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 set_as_default()
Sets the figure as the default view.
void draw_circle(const Vector &c, double r, const StyleProperties &style=StyleProperties())
Draws a circle on the figure.
void draw_AUV(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws an AUV on the figure.
void draw_subpaving(const Subpaving< P > &p, const StyleProperties &style=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:600
void plot_trajectories(const SampledTraj< Vector > &x, const StyleProperties &style)
Plots a set of trajectories on the figure (x-axis is the time) with custom common color.
void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
double scaled_unit() const
Getter for the scaling factor of the figure.
void draw_text(const std::string &text, const Vector &ul, double scale, const StyleProperties &style=StyleProperties())
Draws text on 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 plot_trajectories(const SampledTraj< Vector > &x)
Plots a set of trajectories on the figure (x-axis is the time) with random colors.
void draw_trajectory(const SampledTraj< Vector > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
const Index & i() const
Getter for the index of the horizontal axis.
void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &style=StyleProperties())
Draws an ellipsoid on the figure.
const std::string & name() const
Getter for the name of the figure.
void draw_polygon(const Polygon &x, const StyleProperties &style=StyleProperties())
Draws a Polygon object on the figure.
void draw_zonotope(const Zonotope &z, const StyleProperties &style=StyleProperties())
Draws a zonotope z+sum_i [-1,1] A_i on the figure.
void plot_tube(const SlicedTube< Interval > &x, const SlicedTube< Interval > &v, const StyleProperties &style=StyleProperties())
Plots a tube on the figure (x-axis is the time), with derivative information: slices are displayed as...
void draw_tube(const SlicedTube< IntervalVector > &x, const StyleGradientProperties &style=StyleGradientProperties(ColorMap::blue_tube()), int max_nb_slices_to_display=5000)
Draws a tube of IntervalVector on the figure with a colormap.
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 plot_tube(const SlicedTube< Interval > &x, const StyleProperties &style=StyleProperties())
Plots a tube on the figure (x-axis is the time)
void draw_line(const Segment &e, const StyleProperties &style=StyleProperties())
Draws a line on the figure.
void draw_box(const IntervalVector &x, const StyleProperties &style=StyleProperties())
Draws a box on the figure.
void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
void draw_ellipse(const Vector &c, const Vector &ab, double theta, const StyleProperties &style=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_pie(const Vector &c, const Interval &r, const Interval &theta, const StyleProperties &style=StyleProperties())
Draws a pie 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 draw_point(const Vector &c, const StyleProperties &style=StyleProperties())
Draws a point on the figure.
void plot_trajectory(const SampledTraj< double > &x, const StyleProperties &style=StyleProperties())
Plots a trajectory on the figure (x-axis is the time)
void auto_scale()
VIBes only: auto scale the figure.
Index size() const
Getter for the size of the figure.
void draw_polyline(const std::vector< Vector > &x, float tip_length, const StyleProperties &style=StyleProperties())
Draws a polyline on the figure.
void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
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:31
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:27
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
static ColorMap blue_tube(float alpha=1.)
Blue tube color map.
Definition codac2_ColorMap.h:131
Style properties structure, to specify the style of a shape.
Definition codac2_StyleGradientProperties.h:27
Style properties structure, to specify the style of a shape.
Definition codac2_StyleProperties.h:27