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
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 double scaled_unit() const;
191
196
202 bool is_default() const;
203
208
214 void set_tdomain(const Interval& tdomain);
215
216 // Geometric shapes
217
224 void draw_point(const Vector& c, const StyleProperties& style = StyleProperties());
225
232 void draw_box(const IntervalVector& x, const StyleProperties& style = StyleProperties());
233
241 void draw_circle(const Vector& c, double r, const StyleProperties& style = StyleProperties());
242
250 void draw_ring(const Vector& c, const Interval& r, const StyleProperties& style = StyleProperties());
251
259 void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& style = StyleProperties());
260
267 void draw_line(const Segment& e, const StyleProperties& style = StyleProperties());
268
277 void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& style = StyleProperties());
278
285 void draw_polyline(const std::vector<Vector>& x, const StyleProperties& style = StyleProperties());
286
294 void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& style = StyleProperties());
295
302 void draw_polygon(const Polygon& x, const StyleProperties& style = StyleProperties());
303
311
318 void draw_zonotope(const Zonotope& z, const StyleProperties& style = StyleProperties());
319
328 void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& style = StyleProperties());
329
338 void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& style = StyleProperties());
339
346 void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& style = StyleProperties());
347
354 void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties());
355
362 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& style = StyleProperties());
363
370 void draw_trajectory(const SampledTraj<Vector>& x, const StyleGradientProperties& style);
371
378 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleGradientProperties& style);
379
386 void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& style = StyleProperties());
387
394 void plot_trajectory(const AnalyticTraj<ScalarType>& x, const StyleProperties& style = StyleProperties());
395
401 void plot_trajectories(const SampledTraj<Vector>& x);
402
409 void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& style);
410
424 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& style, int max_nb_slices_to_display = 5000);
425
439 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleGradientProperties& style = StyleGradientProperties(ColorMap::blue_tube(), "z:-1"), int max_nb_slices_to_display = 5000);
440
448
458
459 // Robots
460
468 void draw_tank(const Vector& x, float size, const StyleProperties& style = StyleProperties());
469
477 void draw_AUV(const Vector& x, float size, const StyleProperties& style = StyleProperties());
478
486 void draw_motor_boat(const Vector& x, float size, const StyleProperties& style = StyleProperties());
487
488 // Miscellaneous
489
498 void draw_text(const std::string& text, const Vector& ul, double scale, const StyleProperties& style = StyleProperties());
499
507 void draw_raster(const std::string& filename, const IntervalVector& bbox, const StyleProperties& style = StyleProperties());
508
509 // Pavings
510
517 void draw_paving(const PavingOut& p,
518 const PavingStyle& style = PavingStyle::default_style());
519
527 void draw_paving(const PavingOut& p,
528 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
529 const PavingStyle& style = PavingStyle::default_style());
530
537 void draw_paving(const PavingInOut& p,
538 const PavingStyle& style = PavingStyle::default_style());
539
547 void draw_paving(const PavingInOut& p,
548 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
549 const PavingStyle& style = PavingStyle::default_style());
550
559 template<typename C>
560 requires IsCtcBaseOrPtr<C,IntervalVector>
561 void pave(const IntervalVector& x0, const C& c, double eps,
562 const PavingStyle& style = PavingStyle::default_style());
563
573 template<typename C>
574 requires IsCtcBaseOrPtr<C,IntervalVector>
575 void pave(const IntervalVector& x0, const C& c, double eps,
576 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
577 const PavingStyle& style = PavingStyle::default_style());
578
587 template<typename S>
588 requires IsSepBaseOrPtr<S>
589 void pave(const IntervalVector& x0, const S& s, double eps,
590 const PavingStyle& style = PavingStyle::default_style());
591
601 template<typename S>
602 requires IsSepBaseOrPtr<S>
603 void pave(const IntervalVector& x0, const S& s, double eps,
604 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
605 const PavingStyle& style = PavingStyle::default_style());
606
613 template<typename P>
614 void draw_subpaving(const Subpaving<P>& p, const StyleProperties& style = StyleProperties())
615 {
616 for(const auto& pi : p.boxes())
617 draw_box(pi, style);
618 }
619
620 protected:
621
622 const std::string _name;
623 Vector _pos {50,50}, _window_size {700,700};
624 std::vector<FigureAxis> _axes { axis(0,{0,1}), axis(1,{0,1}) };
625 std::vector<std::shared_ptr<OutputFigure2D>> _output_figures;
626 Interval _tdomain;
627
628 friend DefaultFigure;
629 };
630
640 {
641 public:
642
648 static std::shared_ptr<Figure2D> selected_fig()
649 {
650 if(_selected_fig == nullptr)
651 _selected_fig = _default_fig;
652 return _selected_fig;
653 }
654
660 static void set(std::shared_ptr<Figure2D> fig)
661 {
662 _selected_fig = fig;
663 }
664
671 static Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2)
672 {
673 auto_init();
674 return selected_fig()->set_axes(axis1,axis2);
675 }
676
682 static Figure2D& set_axes(const IntervalVector& bbox)
683 {
684 auto_init();
685 return selected_fig()->set_axes(bbox);
686 }
687
694 static void set_window_properties(const Vector& pos, const Vector& size)
695 {
696 auto_init();
697 selected_fig()->set_window_properties(pos,size);
698 }
699
703 static void auto_scale()
704 {
705 auto_init();
706 selected_fig()->auto_scale();
707 }
708
712 static void clear()
713 {
714 auto_init();
715 selected_fig()->clear();
716 }
717
718 // Geometric shapes
719
726 static void draw_point(const Vector& c, const StyleProperties& style = StyleProperties())
727 {
728 auto_init();
729 selected_fig()->draw_point(c,style);
730 }
731
738 static void draw_box(const IntervalVector& x, const StyleProperties& style = StyleProperties())
739 {
740 auto_init();
741 selected_fig()->draw_box(x,style);
742 }
743
751 static void draw_circle(const Vector& c, double r, const StyleProperties& style = StyleProperties())
752 {
753 auto_init();
754 selected_fig()->draw_circle(c,r,style);
755 }
756
764 static void draw_ring(const Vector& c, const Interval& r, const StyleProperties& style = StyleProperties())
765 {
766 auto_init();
767 selected_fig()->draw_ring(c,r,style);
768 }
769
777 static void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& style = StyleProperties())
778 {
779 auto_init();
780 selected_fig()->draw_line(p1,p2,style);
781 }
782
789 static void draw_line(const Segment& e, const StyleProperties& style = StyleProperties())
790 {
791 auto_init();
792 selected_fig()->draw_line(e,style);
793 }
794
803 static void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& style = StyleProperties())
804 {
805 auto_init();
806 selected_fig()->draw_arrow(p1,p2,tip_length,style);
807 }
808
815 static void draw_polyline(const std::vector<Vector>& x, const StyleProperties& style = StyleProperties())
816 {
817 auto_init();
818 selected_fig()->draw_polyline(x,style);
819 }
820
828 static void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& style = StyleProperties())
829 {
830 auto_init();
831 selected_fig()->draw_polyline(x,tip_length,style);
832 }
833
840 static void draw_polygon(const Polygon& x, const StyleProperties& style = StyleProperties())
841 {
842 auto_init();
843 selected_fig()->draw_polygon(x,style);
844 }
845
853 {
854 auto_init();
855 selected_fig()->draw_parallelepiped(p,style);
856 }
857
864 static void draw_zonotope(const Zonotope& z, const StyleProperties& style = StyleProperties())
865 {
866 auto_init();
867 selected_fig()->draw_zonotope(z,style);
868 }
869
878 static void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& style = StyleProperties())
879 {
880 auto_init();
881 selected_fig()->draw_pie(c,r,theta,style);
882 }
883
892 static void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& style = StyleProperties())
893 {
894 auto_init();
895 selected_fig()->draw_ellipse(c,ab,theta,style);
896 }
897
904 static void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& style = StyleProperties())
905 {
906 auto_init();
907 selected_fig()->draw_ellipsoid(e,style);
908 }
909
916 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties())
917 {
918 auto_init();
919 selected_fig()->draw_trajectory(x,style);
920 }
921
928 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& style = StyleProperties())
929 {
930 auto_init();
931 selected_fig()->draw_trajectory(x,style);
932 }
933
940 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleGradientProperties& style)
941 {
942 auto_init();
943 selected_fig()->draw_trajectory(x,style);
944 }
945
952 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleGradientProperties& style)
953 {
954 auto_init();
955 selected_fig()->draw_trajectory(x,style);
956 }
957
964 static void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& style = StyleProperties())
965 {
966 auto_init();
967 selected_fig()->plot_trajectory(x,style);
968 }
969
976 static void plot_trajectory(const AnalyticTraj<ScalarType>& x, const StyleProperties& style = StyleProperties())
977 {
978 auto_init();
979 selected_fig()->plot_trajectory(x,style);
980 }
981
988 static void plot_trajectories(const SampledTraj<Vector>& x, const StyleProperties& style = StyleProperties())
989 {
990 auto_init();
991 selected_fig()->plot_trajectories(x,style);
992 }
993
1000 static void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& style)
1001 {
1002 auto_init();
1003 selected_fig()->draw_tube(x,style);
1004 }
1005
1013 {
1014 auto_init();
1015 selected_fig()->draw_tube(x,style);
1016 }
1017
1024 static void plot_tube(const SlicedTube<Interval>& x, const StyleProperties& style = StyleProperties())
1025 {
1026 auto_init();
1027 selected_fig()->plot_tube(x,style);
1028 }
1029
1039 {
1040 auto_init();
1041 selected_fig()->plot_tube(x,v,style);
1042 }
1043
1044 // Robots
1045
1053 static void draw_tank(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1054 {
1055 auto_init();
1056 selected_fig()->draw_tank(x,size,style);
1057 }
1058
1066 static void draw_AUV(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1067 {
1068 auto_init();
1069 selected_fig()->draw_AUV(x,size,style);
1070 }
1071
1079 static void draw_motor_boat(const Vector& x, float size, const StyleProperties& style = StyleProperties())
1080 {
1081 auto_init();
1082 selected_fig()->draw_motor_boat(x,size,style);
1083 }
1084
1085 // Miscellaneous
1086
1095 static void draw_text(const std::string& text, const Vector& ul, double scale, const StyleProperties& style = StyleProperties())
1096 {
1097 auto_init();
1098 selected_fig()->draw_text(text,ul,scale,style);
1099 }
1100
1108 static void draw_raster(const std::string& filename, const IntervalVector& bbox, const StyleProperties& style = StyleProperties())
1109 {
1110 auto_init();
1111 selected_fig()->draw_raster(filename,bbox,style);
1112 }
1113
1114 // Pavings
1115
1116 protected:
1117
1118 static void init_axes_paving(const IntervalVector& x)
1119 {
1120 _default_fig->set_window_properties({100,100}, {800,800});
1121 _default_fig->set_axes(axis(0,x[0],"x_1"), axis(1,x[1],"x_2"));
1122 _default_fig->auto_scale();
1123 }
1124
1125 public:
1126
1133 static void draw_paving(const PavingOut& p,
1134 const PavingStyle& style = PavingStyle::default_style())
1135 {
1136 if(auto_init())
1137 init_axes_paving(p.tree()->hull());
1138 selected_fig()->draw_paving(p, style);
1139 }
1140
1148 static void draw_paving(const PavingOut& p,
1149 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1150 const PavingStyle& style = PavingStyle::default_style())
1151 {
1152 if(auto_init())
1153 init_axes_paving(p.tree()->hull());
1154 selected_fig()->draw_paving(p, draw_box, style);
1155 }
1156
1163 static void draw_paving(const PavingInOut& p,
1164 const PavingStyle& style = PavingStyle::default_style())
1165 {
1166 if(auto_init())
1167 init_axes_paving(p.tree()->hull());
1168 selected_fig()->draw_paving(p, style);
1169 }
1170
1178 static void draw_paving(const PavingInOut& p,
1179 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1180 const PavingStyle& style = PavingStyle::default_style())
1181 {
1182 if(auto_init())
1183 init_axes_paving(p.tree()->hull());
1184 selected_fig()->draw_paving(p, draw_box, style);
1185 }
1186
1195 template<typename C>
1196 requires IsCtcBaseOrPtr<C,IntervalVector>
1197 static void pave(const IntervalVector& x0, const C& c, double eps,
1198 const PavingStyle& style = PavingStyle::default_style())
1199 {
1200 if(auto_init())
1201 init_axes_paving(x0);
1202 selected_fig()->pave(x0, c, eps, style);
1203 }
1204
1214 template<typename C>
1215 requires IsCtcBaseOrPtr<C,IntervalVector>
1216 static void pave(const IntervalVector& x0, const C& c, double eps,
1217 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1218 const PavingStyle& style = PavingStyle::default_style())
1219 {
1220 if(auto_init())
1221 init_axes_paving(x0);
1222 selected_fig()->pave(x0, c, eps, draw_box, style);
1223 }
1224
1233 template<typename S>
1234 requires IsSepBaseOrPtr<S>
1235 static void pave(const IntervalVector& x0, const S& s, double eps,
1236 const PavingStyle& style = PavingStyle::default_style())
1237 {
1238 if(auto_init())
1239 init_axes_paving(x0);
1240 selected_fig()->pave(x0, s, eps, style);
1241 }
1242
1252 template<typename S>
1253 requires IsSepBaseOrPtr<S>
1254 static void pave(const IntervalVector& x0, const S& s, double eps,
1255 const std::function<void(Figure2D&,const IntervalVector&,const StyleProperties&)>& draw_box,
1256 const PavingStyle& style = PavingStyle::default_style())
1257 {
1258 if(auto_init())
1259 init_axes_paving(x0);
1260 selected_fig()->pave(x0, s, eps, draw_box, style);
1261 }
1262
1269 template<typename P>
1270 static void draw_subpaving(const Subpaving<P>& p, const StyleProperties& style = StyleProperties())
1271 {
1272 auto_init();
1273 selected_fig()->draw_subpaving(p, style);
1274 }
1275
1276
1277 protected:
1278
1279 static bool auto_init()
1280 {
1281 if(!_default_fig && !_selected_fig)
1282 {
1283 _default_fig = std::make_shared<Figure2D>(DEFAULT_FIG_NAME, GraphicOutput::VIBES);
1284 _default_fig->set_window_properties({20.,20.}, {800.,800.});
1285 _default_fig->set_axes(axis(0,{-10,10}),axis(1,{-10,10}));
1286 _selected_fig = _default_fig;
1287 return true;
1288 }
1289
1290 return false;
1291 }
1292
1293 friend Figure2D;
1294
1295 static std::shared_ptr<Figure2D> _default_fig;
1296 static std::shared_ptr<Figure2D> _selected_fig;
1297 };
1298}
1299
1300#include "codac2_Figure2D_pave.h"
Default view class, used to manage the default figure.
Definition codac2_Figure2D.h:640
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:916
static void draw_box(const IntervalVector &x, const StyleProperties &style=StyleProperties())
Draws a box on the figure.
Definition codac2_Figure2D.h:738
static void draw_ring(const Vector &c, const Interval &r, const StyleProperties &style=StyleProperties())
Draws a ring on the figure.
Definition codac2_Figure2D.h:764
static void draw_line(const Segment &e, const StyleProperties &style=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:789
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:1178
static void draw_circle(const Vector &c, double r, const StyleProperties &style=StyleProperties())
Draws a circle on the figure.
Definition codac2_Figure2D.h:751
static void draw_AUV(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws an AUV on the figure.
Definition codac2_Figure2D.h:1066
static void draw_polygon(const Polygon &x, const StyleProperties &style=StyleProperties())
Draws a Polygon object on the figure.
Definition codac2_Figure2D.h:840
static void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &style=StyleProperties())
Draws an ellipsoid on the figure.
Definition codac2_Figure2D.h:904
static void draw_point(const Vector &c, const StyleProperties &style=StyleProperties())
Draws a point on the figure.
Definition codac2_Figure2D.h:726
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:1038
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:1079
static void auto_scale()
VIBes only: auto scale the figure.
Definition codac2_Figure2D.h:703
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:828
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:1235
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:1108
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:864
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:1148
static void set(std::shared_ptr< Figure2D > fig)
Setter for the default figure.
Definition codac2_Figure2D.h:660
static void clear()
Clear the figure.
Definition codac2_Figure2D.h:712
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:852
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:964
static void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &style)
Draws a tube of IntervalVector on the figure.
Definition codac2_Figure2D.h:1000
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:803
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:1163
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:1024
static void draw_subpaving(const Subpaving< P > &p, const StyleProperties &style=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:1270
static Figure2D & set_axes(const FigureAxis &axis1, const FigureAxis &axis2)
Setter for the axes of the figure.
Definition codac2_Figure2D.h:671
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:1012
static void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &style=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:777
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:952
static void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
Definition codac2_Figure2D.h:694
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:878
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:988
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleGradientProperties &style)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:940
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:892
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:1197
static Figure2D & set_axes(const IntervalVector &bbox)
Setter for the axes of the figure.
Definition codac2_Figure2D.h:682
static std::shared_ptr< Figure2D > selected_fig()
Getter for the default figure.
Definition codac2_Figure2D.h:648
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:1216
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:1254
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:976
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &style=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:928
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:1133
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:1095
static void draw_polyline(const std::vector< Vector > &x, const StyleProperties &style=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:815
static void draw_tank(const Vector &x, float size, const StyleProperties &style=StyleProperties())
Draws a tank on the figure.
Definition codac2_Figure2D.h:1053
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:614
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_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 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
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:216
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