codac 1.5.6
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"
19#include "codac2_ColorMap.h"
20#include "codac2_Ellipsoid.h"
21#include "codac2_Polygon.h"
22#include "codac2_SlicedTube.h"
23
24#define DEFAULT_FIG_NAME "Codac - default figure"
25
26namespace codac2
27{
28 enum class GraphicOutput
29 {
30 VIBES = 0x01,
31 IPE = 0x02
32 };
33
34 constexpr int operator&(GraphicOutput a, GraphicOutput b)
35 { return static_cast<int>(static_cast<int>(a) & static_cast<int>(b)); }
36
37 constexpr GraphicOutput operator|(GraphicOutput a, GraphicOutput b)
38 { return static_cast<GraphicOutput>(static_cast<int>(a) | static_cast<int>(b)); }
39
40 struct FigureAxis
41 {
42 Index dim_id;
43 Interval limits;
44 std::string label;
45 };
46
47 inline FigureAxis axis(Index dim_id, const Interval& limits, const std::string& label = "")
48 {
49 assert_release(dim_id >= 0);
50 //assert_release(!limits.is_empty());
51
52 std::string axis_label = label;
53 if(axis_label.empty())
54 axis_label = "x_" + std::to_string(dim_id);
55
56 return { dim_id, limits, axis_label };
57 }
58
59 class DefaultFigure;
60 class PavingOut;
61 class PavingInOut;
62 template<typename P>
63 class Subpaving;
64
77 class Figure2D : public std::enable_shared_from_this<Figure2D>
78 {
79 public:
80
88 Figure2D(const std::string& name, GraphicOutput o, bool set_as_default = false);
89
95 const std::string& name() const;
96
102 Index size() const;
103
109 const std::vector<FigureAxis>& axes() const;
110
117 Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2);
118
124 const Index& i() const;
125
131 const Index& j() const;
132
138 const Vector& pos() const;
139
145 const Vector& window_size() const;
146
153 void set_window_properties(const Vector& pos, const Vector& size);
154
161 void center_viewbox(const Vector& c, const Vector& r);
162
168 double scaled_unit() const;
169
174
180 bool is_default() const;
181
186
192 void set_tdomain(const Interval& tdomain);
193
194 // Geometric shapes
195
202 void draw_point(const Vector& c, const StyleProperties& s = StyleProperties());
203
210 void draw_box(const IntervalVector& x, const StyleProperties& s = StyleProperties());
211
219 void draw_circle(const Vector& c, double r, const StyleProperties& s = StyleProperties());
220
228 void draw_ring(const Vector& c, const Interval& r, const StyleProperties& s = StyleProperties());
229
237 void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& s = StyleProperties());
238
245 void draw_line(const Segment& e, const StyleProperties& s = StyleProperties());
246
255 void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& s = StyleProperties());
256
263 void draw_polyline(const std::vector<Vector>& x, const StyleProperties& s = StyleProperties());
264
272 void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& s = StyleProperties());
273
281
289 void draw_parallelepiped(const Vector& z, const Matrix& A, const StyleProperties& s = StyleProperties());
290
298 void draw_zonotope(const Vector& z, const std::vector<Vector>& A, const StyleProperties& s = StyleProperties());
299
308 void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& s = StyleProperties());
309
318 void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& s = StyleProperties());
319
327
334 void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& s = StyleProperties());
335
342 void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& s = StyleProperties());
343
350 void draw_trajectory(const SampledTraj<Vector>& x, const ColorMap& cmap);
351
358 void draw_trajectory(const AnalyticTraj<VectorType>& x, const ColorMap& cmap);
359
366 void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& s = StyleProperties());
367
374 void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& s = StyleProperties());
375
382 void draw_tube(const SlicedTube<IntervalVector>& x, const ColorMap& cmap);
383
384 // Robots
385
393 void draw_tank(const Vector& x, float size, const StyleProperties& s = StyleProperties());
394
402 void draw_AUV(const Vector& x, float size, const StyleProperties& s = StyleProperties());
403
411 void draw_motor_boat(const Vector& x, float size, const StyleProperties& s = StyleProperties());
412
413 // Pavings
414
422 void draw_paving(const PavingOut& p,
425
434 void draw_paving(const PavingInOut& p,
438
445 template<typename P>
446 void draw_subpaving(const Subpaving<P>& p, const StyleProperties& s = StyleProperties())
447 {
448 for(const auto& pi : p.boxes())
449 draw_box(pi, s);
450 }
451
452 protected:
453
454 const std::string _name;
455 Vector _pos {50,50}, _window_size {500,500};
456 std::vector<FigureAxis> _axes { axis(0,{0,1}), axis(1,{0,1}) };
457 std::vector<std::shared_ptr<OutputFigure2D>> _output_figures;
458 Interval _tdomain;
459
460 friend DefaultFigure;
461 };
462
472 {
473 public:
474
480 static std::shared_ptr<Figure2D> selected_fig()
481 {
482 if(_selected_fig == nullptr)
483 _selected_fig = _default_fig;
484 return _selected_fig;
485 }
486
492 static void set(std::shared_ptr<Figure2D> fig)
493 {
494 _selected_fig = fig;
495 }
496
503 static Figure2D& set_axes(const FigureAxis& axis1, const FigureAxis& axis2)
504 {
505 auto_init();
506 return selected_fig()->set_axes(axis1,axis2);
507 }
508
515 static void set_window_properties(const Vector& pos, const Vector& size)
516 {
517 auto_init();
518 selected_fig()->set_window_properties(pos,size);
519 }
520
524 static void auto_scale()
525 {
526 auto_init();
527 selected_fig()->auto_scale();
528 }
529
530 // Geometric shapes
531
538 static void draw_point(const Vector& c, const StyleProperties& s = StyleProperties())
539 {
540 auto_init();
541 selected_fig()->draw_point(c,s);
542 }
543
550 static void draw_box(const IntervalVector& x, const StyleProperties& s = StyleProperties())
551 {
552 auto_init();
553 selected_fig()->draw_box(x,s);
554 }
555
563 static void draw_circle(const Vector& c, double r, const StyleProperties& s = StyleProperties())
564 {
565 auto_init();
566 selected_fig()->draw_circle(c,r,s);
567 }
568
576 static void draw_ring(const Vector& c, const Interval& r, const StyleProperties& s = StyleProperties())
577 {
578 auto_init();
579 selected_fig()->draw_ring(c,r,s);
580 }
581
589 static void draw_line(const Vector& p1, const Vector& p2, const StyleProperties& s = StyleProperties())
590 {
591 auto_init();
592 selected_fig()->draw_line(p1,p2,s);
593 }
594
601 static void draw_line(const Segment& e, const StyleProperties& s = StyleProperties())
602 {
603 auto_init();
604 selected_fig()->draw_line(e,s);
605 }
606
615 static void draw_arrow(const Vector& p1, const Vector& p2, float tip_length, const StyleProperties& s = StyleProperties())
616 {
617 auto_init();
618 selected_fig()->draw_arrow(p1,p2,tip_length,s);
619 }
620
627 static void draw_polyline(const std::vector<Vector>& x, const StyleProperties& s = StyleProperties())
628 {
629 auto_init();
630 selected_fig()->draw_polyline(x,s);
631 }
632
640 static void draw_polyline(const std::vector<Vector>& x, float tip_length, const StyleProperties& s = StyleProperties())
641 {
642 auto_init();
643 selected_fig()->draw_polyline(x,tip_length,s);
644 }
645
652 static void draw_polygon(const Polygon& x, const StyleProperties& s = StyleProperties())
653 {
654 auto_init();
655 selected_fig()->draw_polygon(x,s);
656 }
657
665 static void draw_parallelepiped(const Vector& z, const Matrix& A, const StyleProperties& s = StyleProperties())
666 {
667 auto_init();
668 selected_fig()->draw_parallelepiped(z,A,s);
669 }
670
678 static void draw_zonotope(const Vector& z, const std::vector<Vector>& A, const StyleProperties& s = StyleProperties())
679 {
680 auto_init();
681 selected_fig()->draw_zonotope(z,A,s);
682 }
683
692 static void draw_pie(const Vector& c, const Interval& r, const Interval& theta, const StyleProperties& s = StyleProperties())
693 {
694 auto_init();
695 selected_fig()->draw_pie(c,r,theta,s);
696 }
697
706 static void draw_ellipse(const Vector& c, const Vector& ab, double theta, const StyleProperties& s = StyleProperties())
707 {
708 auto_init();
709 selected_fig()->draw_ellipse(c,ab,theta,s);
710 }
711
718 static void draw_ellipsoid(const Ellipsoid& e, const StyleProperties& s = StyleProperties())
719 {
720 auto_init();
721 selected_fig()->draw_ellipsoid(e,s);
722 }
723
730 static void draw_trajectory(const SampledTraj<Vector>& x, const StyleProperties& s = StyleProperties())
731 {
732 auto_init();
733 selected_fig()->draw_trajectory(x,s);
734 }
735
742 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const StyleProperties& s = StyleProperties())
743 {
744 auto_init();
745 selected_fig()->draw_trajectory(x,s);
746 }
747
754 static void draw_trajectory(const SampledTraj<Vector>& x, const ColorMap& cmap)
755 {
756 auto_init();
757 selected_fig()->draw_trajectory(x,cmap);
758 }
759
766 static void draw_trajectory(const AnalyticTraj<VectorType>& x, const ColorMap& cmap)
767 {
768 auto_init();
769 selected_fig()->draw_trajectory(x,cmap);
770 }
771
778 static void plot_trajectory(const SampledTraj<double>& x, const StyleProperties& s = StyleProperties())
779 {
780 auto_init();
781 selected_fig()->plot_trajectory(x,s);
782 }
783
790 static void draw_tube(const SlicedTube<IntervalVector>& x, const StyleProperties& s = StyleProperties())
791 {
792 auto_init();
793 selected_fig()->draw_tube(x,s);
794 }
795
802 static void draw_tube(const SlicedTube<IntervalVector>& x, const ColorMap& cmap)
803 {
804 auto_init();
805 selected_fig()->draw_tube(x,cmap);
806 }
807
808 // Robots
809
817 static void draw_tank(const Vector& x, float size, const StyleProperties& s = StyleProperties())
818 {
819 auto_init();
820 selected_fig()->draw_tank(x,size,s);
821 }
822
830 static void draw_AUV(const Vector& x, float size, const StyleProperties& s = StyleProperties())
831 {
832 auto_init();
833 selected_fig()->draw_AUV(x,size,s);
834 }
835
843 static void draw_motor_boat(const Vector& x, float size, const StyleProperties& s = StyleProperties())
844 {
845 auto_init();
846 selected_fig()->draw_motor_boat(x,size,s);
847 }
848
849 // Pavings
850
858 static void draw_paving(const PavingOut& p,
859 const StyleProperties& boundary_style = StyleProperties::boundary(),
860 const StyleProperties& outside_style = StyleProperties::outside())
861 {
862 if(auto_init())
863 {
864 double rx = p.tree()->hull()[0].diam(), ry = p.tree()->hull()[1].diam();
865 _default_fig->set_window_properties({20.,20.},
866 rx > ry ? Vector({800.,800.*ry/rx}) : Vector({800.*rx/ry,800.}));
867 _default_fig->set_axes(axis(0,p.tree()->hull()[0]),axis(1,p.tree()->hull()[1]));
868 }
869
870 selected_fig()->draw_paving(p, boundary_style, outside_style);
871 }
872
881 static void draw_paving(const PavingInOut& p,
882 const StyleProperties& boundary_style = StyleProperties::boundary(),
883 const StyleProperties& outside_style = StyleProperties::outside(),
884 const StyleProperties& inside_style = StyleProperties::inside())
885 {
886 if(auto_init())
887 {
888 double rx = p.tree()->hull()[0].diam(), ry = p.tree()->hull()[1].diam();
889 _default_fig->set_window_properties({20.,20.},
890 rx > ry ? Vector({800.,800.*ry/rx}) : Vector({800.*rx/ry,800.}));
891 _default_fig->set_axes(axis(0,p.tree()->hull()[0]),axis(1,p.tree()->hull()[1]));
892 }
893
894 selected_fig()->draw_paving(p, boundary_style, outside_style, inside_style);
895 }
896
903 template<typename P>
904 static void draw_subpaving(const Subpaving<P>& p, const StyleProperties& s = StyleProperties())
905 {
906 auto_init();
907 selected_fig()->draw_subpaving(p, s);
908 }
909
910
911 protected:
912
913 static bool auto_init()
914 {
915 if(!_default_fig && !_selected_fig)
916 {
917 _default_fig = std::make_shared<Figure2D>(DEFAULT_FIG_NAME, GraphicOutput::VIBES);
918 _default_fig->set_window_properties({20.,20.}, {800.,800.});
919 _default_fig->set_axes(axis(0,{-10,10}),axis(1,{-10,10}));
920 _selected_fig = _default_fig;
921 return true;
922 }
923
924 return false;
925 }
926
927 friend Figure2D;
928
929 static std::shared_ptr<Figure2D> _default_fig;
930 static std::shared_ptr<Figure2D> _selected_fig;
931 };
932}
Default view class, used to manage the default figure.
Definition codac2_Figure2D.h:472
static void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:730
static void draw_paving(const PavingOut &p, const StyleProperties &boundary_style=StyleProperties::boundary(), const StyleProperties &outside_style=StyleProperties::outside())
Draws a paving on the figure.
Definition codac2_Figure2D.h:858
static void draw_zonotope(const Vector &z, const std::vector< Vector > &A, const StyleProperties &s=StyleProperties())
Draws a zonotope z+sum_i [-1,1] A_i on the figure.
Definition codac2_Figure2D.h:678
static void draw_pie(const Vector &c, const Interval &r, const Interval &theta, const StyleProperties &s=StyleProperties())
Draws a pie on the figure.
Definition codac2_Figure2D.h:692
static void draw_ring(const Vector &c, const Interval &r, const StyleProperties &s=StyleProperties())
Draws a ring on the figure.
Definition codac2_Figure2D.h:576
static void plot_trajectory(const SampledTraj< double > &x, const StyleProperties &s=StyleProperties())
Plots a trajectory on the figure (x-axis is the time)
Definition codac2_Figure2D.h:778
static void draw_circle(const Vector &c, double r, const StyleProperties &s=StyleProperties())
Draws a circle on the figure.
Definition codac2_Figure2D.h:563
static void draw_arrow(const Vector &p1, const Vector &p2, float tip_length, const StyleProperties &s=StyleProperties())
Draws an arrow on the figure.
Definition codac2_Figure2D.h:615
static void auto_scale()
VIBes only: auto scale the figure.
Definition codac2_Figure2D.h:524
static void draw_line(const Segment &e, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:601
static void draw_polyline(const std::vector< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:627
static void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &s=StyleProperties())
Draws an ellipsoid on the figure.
Definition codac2_Figure2D.h:718
static void draw_AUV(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws an AUV on the figure.
Definition codac2_Figure2D.h:830
static void set(std::shared_ptr< Figure2D > fig)
Setter for the default figure.
Definition codac2_Figure2D.h:492
static void draw_polyline(const std::vector< Vector > &x, float tip_length, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
Definition codac2_Figure2D.h:640
static void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
Definition codac2_Figure2D.h:589
static void draw_tube(const SlicedTube< IntervalVector > &x, const ColorMap &cmap)
Draws a tube of IntervalVector on the figure with a colormap.
Definition codac2_Figure2D.h:802
static void draw_subpaving(const Subpaving< P > &p, const StyleProperties &s=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:904
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
Definition codac2_Figure2D.h:742
static void draw_parallelepiped(const Vector &z, const Matrix &A, const StyleProperties &s=StyleProperties())
Draws a parallelepiped z+A*[-1,1]^2 on the figure.
Definition codac2_Figure2D.h:665
static void draw_paving(const PavingInOut &p, const StyleProperties &boundary_style=StyleProperties::boundary(), const StyleProperties &outside_style=StyleProperties::outside(), const StyleProperties &inside_style=StyleProperties::inside())
Draws a paving on the figure.
Definition codac2_Figure2D.h:881
static void draw_ellipse(const Vector &c, const Vector &ab, double theta, const StyleProperties &s=StyleProperties())
Draws an ellipse on the figure.
Definition codac2_Figure2D.h:706
static Figure2D & set_axes(const FigureAxis &axis1, const FigureAxis &axis2)
Setter for the axes of the figure.
Definition codac2_Figure2D.h:503
static void draw_polygon(const Polygon &x, const StyleProperties &s=StyleProperties())
Draws a Polygon object on the figure.
Definition codac2_Figure2D.h:652
static void draw_motor_boat(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a motor boat on the figure.
Definition codac2_Figure2D.h:843
static void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &s=StyleProperties())
Draws a tube of IntervalVector on the figure.
Definition codac2_Figure2D.h:790
static void draw_box(const IntervalVector &x, const StyleProperties &s=StyleProperties())
Draws a box on the figure.
Definition codac2_Figure2D.h:550
static void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
Definition codac2_Figure2D.h:515
static void draw_trajectory(const SampledTraj< Vector > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:754
static void draw_tank(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a tank on the figure.
Definition codac2_Figure2D.h:817
static std::shared_ptr< Figure2D > selected_fig()
Getter for the default figure.
Definition codac2_Figure2D.h:480
static void draw_point(const Vector &c, const StyleProperties &s=StyleProperties())
Draws a point on the figure.
Definition codac2_Figure2D.h:538
static void draw_trajectory(const AnalyticTraj< VectorType > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
Definition codac2_Figure2D.h:766
Ellipsoid representation.
Definition codac2_Ellipsoid.h:43
const Index & j() const
Getter for the index of the vertical axis.
Figure2D & set_axes(const FigureAxis &axis1, const FigureAxis &axis2)
Setter for the axes of the figure.
const std::vector< FigureAxis > & axes() const
Getter for the axes of the figure.
void draw_trajectory(const AnalyticTraj< VectorType > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
void set_tdomain(const Interval &tdomain)
Setter for the time domain of the figure.
void draw_line(const Vector &p1, const Vector &p2, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
void draw_trajectory(const SampledTraj< Vector > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
void draw_polyline(const std::vector< Vector > &x, float tip_length, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
void draw_tank(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a tank on the figure.
void center_viewbox(const Vector &c, const Vector &r)
VIBes only: center the viewbox on a given point with a given radius.
const Vector & pos() const
Getter for the position of the figure.
void draw_box(const IntervalVector &x, const StyleProperties &s=StyleProperties())
Draws a box on the figure.
void draw_trajectory(const SampledTraj< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a trajectory on the figure.
void draw_circle(const Vector &c, double r, const StyleProperties &s=StyleProperties())
Draws a circle on the figure.
void draw_motor_boat(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws a motor boat on the figure.
void plot_trajectory(const SampledTraj< double > &x, const StyleProperties &s=StyleProperties())
Plots a trajectory on the figure (x-axis is the time)
void draw_polyline(const std::vector< Vector > &x, const StyleProperties &s=StyleProperties())
Draws a polyline on the figure.
const Vector & window_size() const
getter for the size of the window
bool is_default() const
void draw_AUV(const Vector &x, float size, const StyleProperties &s=StyleProperties())
Draws an AUV on the figure.
void set_as_default()
Sets the figure as the default view.
void draw_ring(const Vector &c, const Interval &r, const StyleProperties &s=StyleProperties())
Draws a ring on the figure.
void draw_ellipsoid(const Ellipsoid &e, const StyleProperties &s=StyleProperties())
Draws an ellipsoid on the figure.
void draw_trajectory(const AnalyticTraj< VectorType > &x, const ColorMap &cmap)
Draws a trajectory on the figure with a colormap.
void draw_pie(const Vector &c, const Interval &r, const Interval &theta, const StyleProperties &s=StyleProperties())
Draws a pie on the figure.
void draw_parallelepiped(const Vector &z, const Matrix &A, const StyleProperties &s=StyleProperties())
Draws a parallelepiped z+A*[-1,1]^2 on the figure.
double scaled_unit() const
Getter for the scaling factor of the figure.
void draw_tube(const SlicedTube< IntervalVector > &x, const ColorMap &cmap)
Draws a tube of IntervalVector on the figure with a colormap.
void draw_line(const Segment &e, const StyleProperties &s=StyleProperties())
Draws a line on the figure.
const Index & i() const
Getter for the index of the horizontal axis.
void draw_zonotope(const Vector &z, const std::vector< Vector > &A, const StyleProperties &s=StyleProperties())
Draws a zonotope z+sum_i [-1,1] A_i on the figure.
const std::string & name() const
Getter for the name of the figure.
void draw_paving(const PavingInOut &p, const StyleProperties &bound_s=StyleProperties::boundary(), const StyleProperties &out_s=StyleProperties::outside(), const StyleProperties &in_s=StyleProperties::inside())
Draws a paving on the figure.
void draw_subpaving(const Subpaving< P > &p, const StyleProperties &s=StyleProperties())
Draws a subpaving on the figure.
Definition codac2_Figure2D.h:446
void draw_ellipse(const Vector &c, const Vector &ab, double theta, const StyleProperties &s=StyleProperties())
Draws an ellipse on the figure.
Figure2D(const std::string &name, GraphicOutput o, bool set_as_default=false)
Creates a new Figure2D object, with a given name and output.
void draw_paving(const PavingOut &p, const StyleProperties &bound_s=StyleProperties::boundary(), const StyleProperties &out_s=StyleProperties::outside())
Draws a paving on the figure.
void draw_tube(const SlicedTube< IntervalVector > &x, const StyleProperties &s=StyleProperties())
Draws a tube of IntervalVector on the figure.
void draw_polygon(const Polygon &x, const StyleProperties &s=StyleProperties())
Draws a Polygon object on the figure.
void auto_scale()
VIBes only: auto scale the figure.
Index size() const
Getter for the size of the figure.
void set_window_properties(const Vector &pos, const Vector &size)
Setter for the position and size of the window.
void draw_arrow(const Vector &p1, const Vector &p2, float tip_length, const StyleProperties &s=StyleProperties())
Draws an arrow on the figure.
void draw_point(const Vector &c, const StyleProperties &s=StyleProperties())
Draws a point on the figure.
Interval class, for representing closed and connected subsets of .
Definition codac2_Interval.h:62
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
Represents a set of RGB or HSV values.
Definition codac2_ColorMap.h:29
Style properties structure, to specify the style of a shape.
Definition codac2_StyleProperties.h:26
static StyleProperties inside()
Predefined "inside" style, dark gray edge and green fill.
static StyleProperties outside()
Predefined "outside" style, dark gray edge and light blue fill.
static StyleProperties boundary()
Predefined "boundary" style, dark gray edge and yellow fill.