28#define DEFAULT_FIG_NAME "Codac - default figure"
32 enum class GraphicOutput
38 constexpr int operator&(GraphicOutput a, GraphicOutput b)
39 {
return static_cast<int>(
static_cast<int>(a) &
static_cast<int>(b)); }
41 constexpr GraphicOutput operator|(GraphicOutput a, GraphicOutput b)
42 {
return static_cast<GraphicOutput
>(
static_cast<int>(a) |
static_cast<int>(b)); }
51 inline FigureAxis axis(Index dim_id,
const Interval& limits,
const std::string& label =
"")
53 assert_release(dim_id >= 0);
56 std::string axis_label = label;
57 if(axis_label.empty())
58 axis_label =
"x_" + std::to_string(dim_id);
60 return { dim_id, limits, axis_label };
81 class Figure2D :
public std::enable_shared_from_this<Figure2D>
105 const std::string&
name()
const;
119 const std::vector<FigureAxis>&
axes()
const;
141 const Index&
i()
const;
148 const Index&
j()
const;
190 void save(
const std::string& filename);
525 const PavingStyle& style = PavingStyle::default_style());
536 const PavingStyle& style = PavingStyle::default_style());
545 const PavingStyle& style = PavingStyle::default_style());
556 const PavingStyle& style = PavingStyle::default_style());
567 requires IsCtcBaseOrPtr<C,IntervalVector>
569 const PavingStyle& style = PavingStyle::default_style());
581 requires IsCtcBaseOrPtr<C,IntervalVector>
584 const PavingStyle& style = PavingStyle::default_style());
595 requires IsSepBaseOrPtr<S>
597 const PavingStyle& style = PavingStyle::default_style());
609 requires IsSepBaseOrPtr<S>
612 const PavingStyle& style = PavingStyle::default_style());
623 for(
const auto& pi : p.boxes())
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;
635 friend DefaultFigure;
657 if(_selected_fig ==
nullptr)
658 _selected_fig = _default_fig;
659 return _selected_fig;
667 static void set(std::shared_ptr<Figure2D> fig)
678 static Figure2D&
set_axes(
const FigureAxis& axis1,
const FigureAxis& axis2)
730 static void save(
const std::string& filename)
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();
1152 const PavingStyle& style = PavingStyle::default_style())
1155 init_axes_paving(p.tree()->hull());
1168 const PavingStyle& style = PavingStyle::default_style())
1171 init_axes_paving(p.tree()->hull());
1182 const PavingStyle& style = PavingStyle::default_style())
1185 init_axes_paving(p.tree()->hull());
1198 const PavingStyle& style = PavingStyle::default_style())
1201 init_axes_paving(p.tree()->hull());
1213 template<
typename C>
1214 requires IsCtcBaseOrPtr<C,IntervalVector>
1216 const PavingStyle& style = PavingStyle::default_style())
1219 init_axes_paving(x0);
1232 template<
typename C>
1233 requires IsCtcBaseOrPtr<C,IntervalVector>
1236 const PavingStyle& style = PavingStyle::default_style())
1239 init_axes_paving(x0);
1251 template<
typename S>
1252 requires IsSepBaseOrPtr<S>
1254 const PavingStyle& style = PavingStyle::default_style())
1257 init_axes_paving(x0);
1270 template<
typename S>
1271 requires IsSepBaseOrPtr<S>
1274 const PavingStyle& style = PavingStyle::default_style())
1277 init_axes_paving(x0);
1287 template<
typename P>
1297 static bool auto_init()
1299 if(!_default_fig && !_selected_fig)
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;
1313 static std::shared_ptr<Figure2D> _default_fig;
1314 static std::shared_ptr<Figure2D> _selected_fig;
Ellipsoid representation.
Definition codac2_Ellipsoid.h:43
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