177 const Point & p =
static_cast<const Point&
>(*geom_object_ptr);
187 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
197 output <<
"\\Thicklines" << std::endl
200 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
209 std::ostream &
output)
const
211 output <<
"\\Thicklines" << std::endl
214 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
224 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
249 output <<
"\\Thicklines" << std::endl
252 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
262 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
272 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
282 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
292 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
301 std::ostream &
output)
const
303 output <<
"\\Thicklines" << std::endl
306 const Segment & sg =
static_cast<const Segment&
>(*geom_object_ptr);
328 <<
" %% mapped in this plane to (" <<
p1_x <<
"," <<
p1_y
329 <<
") to (" <<
p2_x <<
"," <<
p2_y <<
") to ("
330 <<
p3_x <<
"," <<
p3_y <<
")" << std::endl
332 <<
")(" <<
p2_x <<
"," <<
p2_y <<
")("
334 <<
p1_x <<
"," <<
p1_y <<
")" << std::endl
343 const Ellipse & e =
static_cast<const Ellipse&
>(*geom_object_ptr);
353 const Ellipse & e =
static_cast<const Ellipse&
>(*geom_object_ptr);
355 output <<
"\\shade" << std::endl;
365 const Ellipse & e =
static_cast<const Ellipse&
>(*geom_object_ptr);
367 output <<
"\\Thicklines" << std::endl;
377 const Text & t =
static_cast<const Text &
>(*geom_object_ptr);
387 const Text & t =
static_cast<const Text &
>(*geom_object_ptr);
397 const Text & t =
static_cast<const Text &
>(*geom_object_ptr);
407 const Text & t =
static_cast<const Text &
>(*geom_object_ptr);
428 std::ostream &
output)
const
440 std::ostream &
output)
const
471 std::ostream &
output)
const
483 std::ostream &
output)
const
495 std::ostream &
output)
const
518 std::ostream &
output)
const
530 std::ostream &
output)
const
542 std::ostream &
output)
const
554 std::ostream &
output)
const
596 std::ostream &
output)
const
609 std::ostream &
output)
const
611 output <<
"\\Thicklines" << std::endl
623 std::ostream &
output)
const
625 output <<
"\\Thicklines" << std::endl
636 std::ostream &
output)
const
638 output <<
"\\Thicklines" << std::endl
649 std::ostream &
output)
const
651 output <<
"\\Thicklines" << std::endl
662 std::ostream &
output)
const
664 output <<
"\\Thicklines" << std::endl
676 std::ostream &
output)
const
678 output <<
"\\Thicklines" << std::endl
691 std::ostream &
output)
const
693 output <<
"\\Thicklines" << std::endl
705 std::ostream &
output)
const
707 output <<
"\\Thicklines" << std::endl
718 std::ostream &
output)
const
720 output <<
"\\Thicklines" << std::endl
732 std::ostream &
output)
const
734 output <<
"\\Thicklines" << std::endl
746 std::ostream &
output)
const
748 output <<
"\\Thicklines" << std::endl
760 std::ostream &
output)
const
762 output <<
"\\Thicklines" << std::endl
775 output <<
"\\Thicklines" << std::endl
786 std::ostream &
output)
const
788 output <<
"\\Thicklines" << std::endl
799 std::ostream &
output)
const
801 output <<
"\\Thicklines" << std::endl
812 std::ostream &
output)
const
814 output <<
"\\Thicklines" << std::endl
835 std::ostream &
output)
const
846 std::ostream &
output)
const
856 std::ostream &
output)
const
866 std::ostream &
output)
const
877 std::ostream &
output)
const
888 std::ostream &
output)
const
898 std::ostream &
output)
const
909 std::ostream &
output)
const
920 std::ostream &
output)
const
Represents a point with rectangular coordinates in a 2D plane.
const Geom_Number & get_x() const noexcept
Gets the x-coordinate value.
std::string to_string() const
Returns a string representation of the point as "(x,y)".
const Geom_Number & get_y() const noexcept
Gets the y-coordinate value.
A general (irregular) 2D polygon defined by a sequence of vertices.
Segment get_last_segment() const
Get the last edge (segment) of the polygon.
A regular polygon defined by center, side length, and vertex count.
Represents a line segment between two points.
Represents a text string positioned at a 2D point.
A non-degenerate triangle defined by three points.
const Point & get_p3() const
Gets the third vertex.
const Point & get_p2() const
Gets the second vertex.
const Point & get_p1() const
Gets the first vertex.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as an arrow.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object, center-aligned.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dashed arrow.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dashed edges and an arrow on the last segment.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dashed edges and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dashed edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dashed edges and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dashed edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dashed line.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a dashed spline curve with an arrow at the end.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a dashed spline curve through the polygon's vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dotted arrow.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dotted edges and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dotted edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dotted edges and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dotted edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dotted line.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Ellipse object.
const Geom_Object *const geom_object_ptr
Pointer to the wrapped geometric object.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object, left-aligned.
2D canvas for generating EEPIC/LaTeX picture environments.
static const double dotgap
Gap between dots in dotted lines.
void draw_dotted_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dotted segment sg.
void draw_arrow_dash_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dashed segment sg with arrow head.
Point __lowest
Point with minimum y-coordinate.
Point __leftmost
Point with minimum x-coordinate.
void draw_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw segment sg.
double y_geom_number_to_eepic(const Geom_Number &y) const
Convert a geometric y coordinate into plane y coordinate.
void draw_dash_spline(Poly &poly, std::ostream &output)
Point __rightmost
Point with maximum x-coordinate.
bool with_cartesian_axis
Flag to draw Cartesian axes.
static const double arrow_lenght_in_mm
Point __highest
Point with maximum y-coordinate.
static const double normal_thickness
Default line thickness.
static const double default_r
Default radius for drawing points (also used for text height)
void draw_ellipse(const Ellipse &e, std::ostream &output)
Emit EEPIC code to draw ellipse e.
void draw_arrow_extreme(const Segment &sg, std::ostream &output)
static const double default_shade_thickness
Default shading thickness.
void draw_text(const Text &t, std::ostream &output, const double &hfactor, const double &vfactor)
void draw_dots_from_polygon(Poly &poly, std::ostream &output)
void draw_points_text_in_polygon(Poly &poly, std::ostream &output)
void draw_dash_spline_arrow(Poly &poly, std::ostream &output)
void draw_closed_polygon(Poly &poly, std::ostream &output)
void draw_polygon(Poly &poly, std::ostream &output, Draw_Segment_Fct draw_sg_fct)
void draw_closed_polygon_with_arrows(Poly &poly, std::ostream &output)
double x_geom_number_to_eepic(const Geom_Number &x) const
Convert a geometric x coordinate into plane x coordinate.
void draw_arrow(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw segment sg with an arrow head.
void draw_vertex_numbers_in_polygon(Poly &poly, std::ostream &output)
void draw_arrows_in_polygon(Poly &poly, std::ostream &output)
static const double arrow_width_in_mm
void draw_spline(Poly &poly, std::ostream &output)
void draw_point(const Point &p, std::ostream &output)
EEPIC "primitive drawing" methods.
void draw_arrow_dotted_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dotted segment sg with arrow head.
void draw_dash_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dashed segment sg.
void draw_spline_arrow(Poly &poly, std::ostream &output)
void draw_cartesian_axis(std::ostream &output)
Draws the Cartesian axes on the plane, if enabled.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Point object.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and arrows on its edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon's edges and adds circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Polygon object.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon's edges and adds circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Regular_Polygon object.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object, right-aligned.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Ellipse object with a shaded interior.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and arrows on its edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and text labels for its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and index numbers for its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and arrows on its edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and text labels for its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and index numbers for its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a spline curve with an arrow at the end.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a spline curve through the polygon's vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a thick arrow.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a thick, dashed arrow.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dashed edges and an arrow on the last segment.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dashed edges and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dashed edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a thick, dashed line.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick, dashed spline curve with an arrow at the end.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick, dashed spline curve through the polygon's vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dotted edges and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dotted edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Ellipse object with thick lines.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick shaded interior and arrows on its edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick edges and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object with thick lines.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and arrows on its edges.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and circles at its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and text labels for its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and index numbers for its vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick spline curve with an arrow at the end.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick spline curve through the polygon's vertices.
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Triangle object.
EEPIC/LaTeX geometric drawing utilities.
#define IMPL_PUT_IN_PLANE(Type)
Divide_Conquer_DP_Result< Cost > divide_and_conquer_partition_dp(const size_t groups, const size_t n, Transition_Cost_Fn transition_cost, const Cost inf=dp_optimization_detail::default_inf< Cost >())
Optimize partition DP using divide-and-conquer optimization.
Segment-drawing variants (types).