codac 2.0.5
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
91 Figure2D(const std::string& name, GraphicOutput o);
92
98 std::vector<std::shared_ptr<OutputFigure2D>> output_figures();
99
105 const std::string& name() const;
106
112 Index size() const;
113
119 const std::vector<FigureAxis>& axes() const;
120
127 Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2);
128
135
141 const Index& i() const;
142
148 const Index& j() const;
149
155 const Vector& pos() const;
156
162 const Vector& window_size() const;
163
171
178 void center_viewbox(const Vector& c, const Vector& r);
179
183 void clear();
184
190 void save(const std::string& filename);
191
197 double scaled_unit() const;
198
203
209 bool is_default() const;
210
215
221 void set_tdomain(const Interval& tdomain);
222
223 // Geometric shapes
224
231 void draw_point(const Vector& c, const StyleProperties& style = StyleProperties());
232
239 void draw_box(const IntervalVector& x, const StyleProperties& style = StyleProperties());
240
248 void draw_circle(const Vector& c, double r, const StyleProperties& style = StyleProperties());
249
257 void draw_ring(const Vector& c, const Interval& r, const StyleProperties& style = StyleProperties());
258
266 void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& style = StyleProperties());
267
274 void draw_line(const Segment& e, const StyleProperties& style = StyleProperties());
275
284 void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& style = StyleProperties());
285
292 void draw_polyline(const std::vector<Vector>& x, const StyleProperties& style = StyleProperties());
293
301 void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& style = StyleProperties());
302
309 void draw_polygon(const Polygon& x, const StyleProperties& style = StyleProperties());
310
318
325 void draw_zonotope(const Zonotope& z, const StyleProperties& style = StyleProperties());
326
335 void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& style = StyleProperties());
336
345 void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& style = StyleProperties());
346
353 void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& style = StyleProperties());
354
361 void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties());
362
369 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& style = StyleProperties());
370
377 void draw_trajectory(const SampledTraj<Vector>& x, const StyleGradientProperties& style);
378
385 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleGradientProperties& style);
386
393 void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& style = StyleProperties());
394
401 void plot_trajectory(const AnalyticTraj<ScalarType>& x, const StyleProperties& style = StyleProperties());
402
408 void plot_trajectories(const SampledTraj<Vector>& x);
409
416 void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& style);
417
431 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& style, int max_nb_slices_to_display = 5000);
432
446 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleGradientProperties& style = StyleGradientProperties(ColorMap::blue_tube(), "z:-1"), int max_nb_slices_to_display = 5000);
447
455
465
466 // Robots
467
475 void draw_tank(const Vector& x, float size, const StyleProperties& style = StyleProperties());
476
484 void draw_AUV(const Vector& x, float size, const StyleProperties& style = StyleProperties());
485
493 void draw_motor_boat(const Vector& x, float size, const StyleProperties& style = StyleProperties());
494
495 // Miscellaneous
496
505 void draw_text(const std::string& text, const Vector& ul, double scale, const StyleProperties& style = StyleProperties());
506
514 void draw_raster(const std::string& filename, const IntervalVector& bbox, const StyleProperties& style = StyleProperties());
515
516 // Pavings
517
524 void draw_paving(const PavingOut& p,
525 const PavingStyle& style = PavingStyle::default_style());
526
534 void draw_paving(const PavingOut& p,
535 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
536 const PavingStyle& style = PavingStyle::default_style());
537
544 void draw_paving(const PavingInOut& p,
545 const PavingStyle& style = PavingStyle::default_style());
546
554 void draw_paving(const PavingInOut& p,
555 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
556 const PavingStyle& style = PavingStyle::default_style());
557
566 template<typename C>
567 requires IsCtcBaseOrPtr<C,IntervalVector>
568 void pave(const IntervalVector& x0, const C& c, double eps,
569 const PavingStyle& style = PavingStyle::default_style());
570
580 template<typename C>
581 requires IsCtcBaseOrPtr<C,IntervalVector>
582 void pave(const IntervalVector& x0, const C& c, double eps,
583 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
584 const PavingStyle& style = PavingStyle::default_style());
585
594 template<typename S>
595 requires IsSepBaseOrPtr<S>
596 void pave(const IntervalVector& x0, const S& s, double eps,
597 const PavingStyle& style = PavingStyle::default_style());
598
608 template<typename S>
609 requires IsSepBaseOrPtr<S>
610 void pave(const IntervalVector& x0, const S& s, double eps,
611 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
612 const PavingStyle& style = PavingStyle::default_style());
613
620 template<typename P>
621 void draw_subpaving(const Subpaving<P>& p, const StyleProperties& style = StyleProperties())
622 {
623 for(const auto& pi : p.boxes())
624 draw_box(pi, style);
625 }
626
627 protected:
628
629 const std::string _name;
630 Vector _pos {50,50}, _window_size {700,700};
631 std::vector<FigureAxis> _axes { axis(0,{0,1}), axis(1,{0,1}) };
632 std::vector<std::shared_ptr<OutputFigure2D>> _output_figures;
633 Interval _tdomain;
634
635 friend DefaultFigure;
636 };
637
647 {
648 public:
649
655 static std::shared_ptr<Figure2D> selected_fig()
656 {
657 if(_selected_fig == nullptr)
658 _selected_fig = _default_fig;
659 return _selected_fig;
660 }
661
667 static void set(std::shared_ptr<Figure2D> fig)
668 {
669 _selected_fig = fig;
670 }
671
678 static Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2)
679 {
680 auto_init();
681 return selected_fig()->set_axes(axis1,axis2);
682 }
683
689 static Figure2D& set_axes(const IntervalVector& bbox)
690 {
691 auto_init();
692 return selected_fig()->set_axes(bbox);
693 }
694
701 static void set_window_properties(const Vector& pos, const Vector& size)
702 {
703 auto_init();
704 selected_fig()->set_window_properties(pos,size);
705 }
706
710 static void auto_scale()
711 {
712 auto_init();
713 selected_fig()->auto_scale();
714 }
715
719 static void clear()
720 {
721 auto_init();
722 selected_fig()->clear();
723 }
724
730 static void save(const std::string& filename)
731 {
732 auto_init();
733 selected_fig()->save(filename);
734 }
735
736 // Geometric shapes
737
744 static void draw_point(const Vector& c, const StyleProperties& style = StyleProperties())
745 {
746 auto_init();
747 selected_fig()->draw_point(c,style);
748 }
749
756 static void draw_box(const IntervalVector& x, const StyleProperties& style = StyleProperties())
757 {
758 auto_init();
759 selected_fig()->draw_box(x,style);
760 }
761
769 static void draw_circle(const Vector& c, double r, const StyleProperties& style = StyleProperties())
770 {
771 auto_init();
772 selected_fig()->draw_circle(c,r,style);
773 }
774
782 static void draw_ring(const Vector& c, const Interval& r, const StyleProperties& style = StyleProperties())
783 {
784 auto_init();
785 selected_fig()->draw_ring(c,r,style);
786 }
787
795 static void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& style = StyleProperties())
796 {
797 auto_init();
798 selected_fig()->draw_line(p1,p2,style);
799 }
800
807 static void draw_line(const Segment& e, const StyleProperties& style = StyleProperties())
808 {
809 auto_init();
810 selected_fig()->draw_line(e,style);
811 }
812
821 static void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& style = StyleProperties())
822 {
823 auto_init();
824 selected_fig()->draw_arrow(p1,p2,tip_length,style);
825 }
826
833 static void draw_polyline(const std::vector<Vector>& x, const StyleProperties& style = StyleProperties())
834 {
835 auto_init();
836 selected_fig()->draw_polyline(x,style);
837 }
838
846 static void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& style = StyleProperties())
847 {
848 auto_init();
849 selected_fig()->draw_polyline(x,tip_length,style);
850 }
851
858 static void draw_polygon(const Polygon& x, const StyleProperties& style = StyleProperties())
859 {
860 auto_init();
861 selected_fig()->draw_polygon(x,style);
862 }
863
871 {
872 auto_init();
873 selected_fig()->draw_parallelepiped(p,style);
874 }
875
882 static void draw_zonotope(const Zonotope& c, const StyleProperties& style = StyleProperties())
883 {
884 auto_init();
885 selected_fig()->draw_zonotope(c,style);
886 }
887
896 static void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& style = StyleProperties())
897 {
898 auto_init();
899 selected_fig()->draw_pie(c,r,theta,style);
900 }
901
910 static void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& style = StyleProperties())
911 {
912 auto_init();
913 selected_fig()->draw_ellipse(c,ab,theta,style);
914 }
915
922 static void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& style = StyleProperties())
923 {
924 auto_init();
925 selected_fig()->draw_ellipsoid(e,style);
926 }
927
934 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties())
935 {
936 auto_init();
937 selected_fig()->draw_trajectory(x,style);
938 }
939
946 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& style = StyleProperties())
947 {
948 auto_init();
949 selected_fig()->draw_trajectory(x,style);
950 }
951
958 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleGradientProperties& style)
959 {
960 auto_init();
961 selected_fig()->draw_trajectory(x,style);
962 }
963
970 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleGradientProperties& style)
971 {
972 auto_init();
973 selected_fig()->draw_trajectory(x,style);
974 }
975
982 static void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& style = StyleProperties())
983 {
984 auto_init();
985 selected_fig()->plot_trajectory(x,style);
986 }
987
994 static void plot_trajectory(const AnalyticTraj<ScalarType>& x, const StyleProperties& style = StyleProperties())
995 {
996 auto_init();
997 selected_fig()->plot_trajectory(x,style);
998 }
999
1006 static void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties())
1007 {
1008 auto_init();
1009 selected_fig()->plot_trajectories(x,style);
1010 }
1011
1018 static void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& style)
1019 {
1020 auto_init();
1021 selected_fig()->draw_tube(x,style);
1022 }
1023
1031 {
1032 auto_init();
1033 selected_fig()->draw_tube(x,style);
1034 }
1035
1042 static void plot_tube(const SlicedTube<Interval>& x, const StyleProperties& style = StyleProperties())
1043 {
1044 auto_init();
1045 selected_fig()->plot_tube(x,style);
1046 }
1047
1057 {
1058 auto_init();
1059 selected_fig()->plot_tube(x,v,style);
1060 }
1061
1062 // Robots
1063
1071 static void draw_tank(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1072 {
1073 auto_init();
1074 selected_fig()->draw_tank(x,size,style);
1075 }
1076
1084 static void draw_AUV(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1085 {
1086 auto_init();
1087 selected_fig()->draw_AUV(x,size,style);
1088 }
1089
1097 static void draw_motor_boat(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1098 {
1099 auto_init();
1100 selected_fig()->draw_motor_boat(x,size,style);
1101 }
1102
1103 // Miscellaneous
1104
1113 static void draw_text(const std::string& text, const Vector& ul, double scale, const StyleProperties& style = StyleProperties())
1114 {
1115 auto_init();
1116 selected_fig()->draw_text(text,ul,scale,style);
1117 }
1118
1126 static void draw_raster(const std::string& filename, const IntervalVector& bbox, const StyleProperties& style = StyleProperties())
1127 {
1128 auto_init();
1129 selected_fig()->draw_raster(filename,bbox,style);
1130 }
1131
1132 // Pavings
1133
1134 protected:
1135
1136 static void init_axes_paving(const IntervalVector& x)
1137 {
1138 _default_fig->set_window_properties({100,100}, {800,800});
1139 _default_fig->set_axes(axis(0,x[0],"x_1"), axis(1,x[1],"x_2"));
1140 _default_fig->auto_scale();
1141 }
1142
1143 public:
1144
1151 static void draw_paving(const PavingOut& p,
1152 const PavingStyle& style = PavingStyle::default_style())
1153 {
1154 if(auto_init())
1155 init_axes_paving(p.tree()->hull());
1156 selected_fig()->draw_paving(p, style);
1157 }
1158
1166 static void draw_paving(const PavingOut& p,
1167 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1168 const PavingStyle& style = PavingStyle::default_style())
1169 {
1170 if(auto_init())
1171 init_axes_paving(p.tree()->hull());
1172 selected_fig()->draw_paving(p, draw_box, style);
1173 }
1174
1181 static void draw_paving(const PavingInOut& p,
1182 const PavingStyle& style = PavingStyle::default_style())
1183 {
1184 if(auto_init())
1185 init_axes_paving(p.tree()->hull());
1186 selected_fig()->draw_paving(p, style);
1187 }
1188
1196 static void draw_paving(const PavingInOut& p,
1197 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1198 const PavingStyle& style = PavingStyle::default_style())
1199 {
1200 if(auto_init())
1201 init_axes_paving(p.tree()->hull());
1202 selected_fig()->draw_paving(p, draw_box, style);
1203 }
1204
1213 template<typename C>
1214 requires IsCtcBaseOrPtr<C,IntervalVector>
1215 static void pave(const IntervalVector& x0, const C& c, double eps,
1216 const PavingStyle& style = PavingStyle::default_style())
1217 {
1218 if(auto_init())
1219 init_axes_paving(x0);
1220 selected_fig()->pave(x0, c, eps, style);
1221 }
1222
1232 template<typename C>
1233 requires IsCtcBaseOrPtr<C,IntervalVector>
1234 static void pave(const IntervalVector& x0, const C& c, double eps,
1235 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1236 const PavingStyle& style = PavingStyle::default_style())
1237 {
1238 if(auto_init())
1239 init_axes_paving(x0);
1240 selected_fig()->pave(x0, c, eps, draw_box, style);
1241 }
1242
1251 template<typename S>
1252 requires IsSepBaseOrPtr<S>
1253 static void pave(const IntervalVector& x0, const S& s, double eps,
1254 const PavingStyle& style = PavingStyle::default_style())
1255 {
1256 if(auto_init())
1257 init_axes_paving(x0);
1258 selected_fig()->pave(x0, s, eps, style);
1259 }
1260
1270 template<typename S>
1271 requires IsSepBaseOrPtr<S>
1272 static void pave(const IntervalVector& x0, const S& s, double eps,
1273 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1274 const PavingStyle& style = PavingStyle::default_style())
1275 {
1276 if(auto_init())
1277 init_axes_paving(x0);
1278 selected_fig()->pave(x0, s, eps, draw_box, style);
1279 }
1280
1287 template<typename P>
1288 static void draw_subpaving(const Subpaving<P>& p, const StyleProperties& style = StyleProperties())
1289 {
1290 auto_init();
1291 selected_fig()->draw_subpaving(p, style);
1292 }
1293
1294
1295 protected:
1296
1297 static bool auto_init()
1298 {
1299 if(!_default_fig && !_selected_fig)
1300 {
1301 _default_fig = std::make_shared<Figure2D>(DEFAULT_FIG_NAME, GraphicOutput::VIBES);
1302 _default_fig->set_window_properties({20.,20.}, {800.,800.});
1303 _default_fig->set_axes(axis(0,{-10,10}),axis(1,{-10,10}));
1304 _selected_fig = _default_fig;
1305 return true;
1306 }
1307
1308 return false;
1309 }
1310
1311 friend Figure2D;
1312
1313 static std::shared_ptr<Figure2D> _default_fig;
1314 static std::shared_ptr<Figure2D> _selected_fig;
1315 };
1316}
1317
1318#include "codac2_Figure2D_pave.h"
Default view class, used to manage the default figure.
Definition codac2_Figure2D.h:647
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:934
static void draw_box(const IntervalVector &x, const StyleProperties &style=StyleProperties())
Draws a box on the figure.
Definition codac2_Figure2D.h:756
static void draw_ring(const Vector &c, const Interval &r, const StyleProperties &style=StyleProperties())
Draws a ring on the figure.
Definition codac2_Figure2D.h:782
static void draw_line(const Segment &e, const StyleProperties &style=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:807
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:1196
static void draw_circle(const Vector &c, double r, const StyleProperties &style=StyleProperties())
Draws a circle on the figure.
Definition codac2_Figure2D.h:769
static void draw_AUV(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws an AUV on the figure.
Definition codac2_Figure2D.h:1084
static void draw_polygon(const Polygon &x, const StyleProperties &style=StyleProperties())
Draws a Polygon object on the figure.
Definition codac2_Figure2D.h:858
static void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &style=StyleProperties())
Draws an ellipsoid on the figure.
Definition codac2_Figure2D.h:922
static void draw_point(const Vector &c, const StyleProperties &style=StyleProperties())
Draws a point on the figure.
Definition codac2_Figure2D.h:744
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:1056
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:1097
static void auto_scale()
VIBes only: auto scale the figure.
Definition codac2_Figure2D.h:710
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:846
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:1253
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:1126
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:1166
static void set(std::shared_ptr< Figure2D > fig)
Setter for the default figure.
Definition codac2_Figure2D.h:667
static void clear()
Clear the figure.
Definition codac2_Figure2D.h:719
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:870
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:982
static void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &style)
Draws a tube of IntervalVector on the figure.
Definition codac2_Figure2D.h:1018
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:821
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:1181
static void draw_zonotope(const Zonotope &c, const StyleProperties &style=StyleProperties())
Draws a zonotope c+sum_i [-1,1] A_i on the figure.
Definition codac2_Figure2D.h:882
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:1042
static void draw_subpaving(const Subpaving< P > &p, const StyleProperties &style=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:1288
static Figure2D & set_axes(const FigureAxis &axis1, const FigureAxis &axis2)
Setter for the axes of the figure.
Definition codac2_Figure2D.h:678
static void draw_tube(const SlicedTube< IntervalVector > &x, const StyleGradientProperties &style=StyleGradientProperties(ColorMap::blue_tube(), "z:-1"))
Draws a tube of IntervalVector on the figure with a colormap.
Definition codac2_Figure2D.h:1030
static void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &style=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:795
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:970
static void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
Definition codac2_Figure2D.h:701
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:896
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:1006
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:958
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:910
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:1215
static Figure2D & set_axes(const IntervalVector &bbox)
Setter for the axes of the figure.
Definition codac2_Figure2D.h:689
static std::shared_ptr< Figure2D > selected_fig()
Getter for the default figure.
Definition codac2_Figure2D.h:655
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:1234
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:1272
static void plot_trajectory(const AnalyticTraj< ScalarType > &x, const StyleProperties &style=StyleProperties())
Plots a trajectory on the figure (x-axis is the time).
Definition codac2_Figure2D.h:994
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:946
static void save(const std::string &filename)
Saves the figure to a file.
Definition codac2_Figure2D.h:730
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:1151
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:1113
static void draw_polyline(const std::vector< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:833
static void draw_tank(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws a tank on the figure.
Definition codac2_Figure2D.h:1071
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.
Figure2D(const std::string &name, GraphicOutput o)
Creates a new Figure2D object, with a given name and output.
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 plot_trajectory(const AnalyticTraj< ScalarType > &x, const StyleProperties &style=StyleProperties())
Plots a trajectory on the figure (x-axis is the time).
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 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 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_tube(const SlicedTube< IntervalVector > &x, const StyleGradientProperties &style=StyleGradientProperties(ColorMap::blue_tube(), "z:-1"), int max_nb_slices_to_display=5000)
Draws a tube of IntervalVector on the figure with a colormap.
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:621
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 c+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_paving(const PavingOut &p, const PavingStyle &style=PavingStyle::default_style())
Draws a previously computed paving (outer approximation) on the figure.
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 & set_axes(const IntervalVector &bbox)
Setter for the axes of the figure.
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 save(const std::string &filename)
Saves the figure to a file.
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:50
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
Tube represented over a sliced temporal domain.
Definition codac2_SlicedTube.h:38
Class representing a zonotope .
Definition codac2_Zonotope.h:28
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
CtcInterType< typenameC1::ContractedTypes >::Ctc operator&(const C1 &c1, const C2 &c2)
Builds an intersection contractor from two contractors.
Definition codac2_CtcInter.h:229
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