Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
eepicgeom.C
Go to the documentation of this file.
1
2/*
3 Aleph_w
4
5 Data structures & Algorithms
6 version 2.0.0b
7 https://github.com/lrleon/Aleph-w
8
9 This file is part of Aleph-w library
10
11 Copyright (c) 2002-2026 Leandro Rabindranath Leon
12
13 Permission is hereby granted, free of charge, to any person obtaining a copy
14 of this software and associated documentation files (the "Software"), to deal
15 in the Software without restriction, including without limitation the rights
16 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17 copies of the Software, and to permit persons to whom the Software is
18 furnished to do so, subject to the following conditions:
19
20 The above copyright notice and this permission notice shall be included in all
21 copies or substantial portions of the Software.
22
23 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29 SOFTWARE.
30*/
31
32
33# include "eepicgeom.H"
34
35const double Eepic_Plane::default_r = 20;
36const double Eepic_Plane::normal_thickness = 20;
38const double Eepic_Plane::dotgap = 65;
39const double Eepic_Plane::arrow_width_in_mm = 0.5;
40const double Eepic_Plane::arrow_lenght_in_mm = 1.5;
41
42// Instantiations of the put_in_plane helper function for each drawable type.
63
64// with point circles at vertices
66
67// with point circles at vertices and arrows on sides
69
70// with dotted sides
72
73// with dashed sides
75
76// with dotted sides and circles at vertices
78
79// with dashed sides and circles at vertices
81
82// with dashed sides and an arrow on the last segment
84
85// with shaded (gray) interior
87
88// with shaded interior and circles at vertices
90
91// with shaded interior and arrows for sides
93
94// with shaded interior and vertex coordinate labels
96
97// with shaded interior and vertex numbers
99
100// Spline curve through polygon vertices
102
103// Dashed spline curve through polygon vertices
105
106// Spline curve with an arrow at the end
108
109// Dashed spline curve with an arrow at the end
111
112// with point circles at vertices (thick)
114
115// with point circles at vertices and arrows on sides (thick)
117
118// with dotted sides (thick)
120
121// with dashed sides (thick)
123
124// with dotted sides and circles at vertices (thick)
126
127// with dashed sides and circles at vertices (thick)
129
130// with dashed sides and arrow heads (thick)
132
133// with shaded interior (thick)
135
136// with shaded interior and circles at vertices (thick)
138
139// with shaded interior and arrows for sides (thick)
141
142// with shaded interior and vertex coordinate labels (thick)
144
145// with shaded interior and vertex numbers (thick)
147
148// Spline curve through polygon vertices (thick)
150
151// Dashed spline curve through polygon vertices (thick)
153
154// Spline curve with an arrow at the end (thick)
156
157// Dashed spline curve with an arrow at the end (thick)
159
160
171
175void Eepic_Point::draw(Eepic_Plane * plane, std::ostream & output) const
176{
177 const Point & p = static_cast<const Point&>(*geom_object_ptr);
178
179 plane->draw_point(p, output);
180}
181
185void Eepic_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
186{
187 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
188
189 plane->draw_segment(sg, output);
190}
191
195void Eepic_Thick_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
196{
197 output << "\\Thicklines" << std::endl
198 << std::endl;
199
200 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
201
202 plane->draw_segment(sg, output);
203}
204
209 std::ostream & output) const
210{
211 output << "\\Thicklines" << std::endl
212 << std::endl;
213
214 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
215
216 plane->draw_dash_segment(sg, output);
217}
218
222void Eepic_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
223{
224 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
225
226 plane->draw_arrow(sg, output);
227}
228
243
247void Eepic_Thick_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
248{
249 output << "\\Thicklines" << std::endl
250 << std::endl;
251
252 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
253
254 plane->draw_arrow(sg, output);
255}
256
260void Eepic_Dotted_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
261{
262 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
263
264 plane->draw_dotted_segment(sg, output);
265}
266
270void Eepic_Dash_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
271{
272 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
273
274 plane->draw_dash_segment(sg, output);
275}
276
280void Eepic_Dotted_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
281{
282 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
283
285}
286
290void Eepic_Dash_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
291{
292 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
293
295}
296
301 std::ostream & output) const
302{
303 output << "\\Thicklines" << std::endl
304 << std::endl;
305
306 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
307
309}
310
314void Eepic_Triangle::draw(Eepic_Plane * plane, std::ostream & output) const
315{
316 const Triangle & t = static_cast<const Triangle&>(*geom_object_ptr);
317
318 const double p1_x = plane->x_geom_number_to_eepic(t.get_p1().get_x());
319 const double p1_y = plane->y_geom_number_to_eepic(t.get_p1().get_y());
320 const double p2_x = plane->x_geom_number_to_eepic(t.get_p2().get_x());
321 const double p2_y = plane->y_geom_number_to_eepic(t.get_p2().get_y());
322 const double p3_x = plane->x_geom_number_to_eepic(t.get_p3().get_x());
323 const double p3_y = plane->y_geom_number_to_eepic(t.get_p3().get_y());
324
325 output << " %% Triangle from " << t.get_p1().to_string()
326 << " to " << t.get_p2().to_string()
327 << " to " << t.get_p3().to_string() << std::endl
328 << " %% mapped in this plane to (" << p1_x << "," << p1_y
329 << ") to (" << p2_x << "," << p2_y << ") to ("
330 << p3_x << "," << p3_y << ")" << std::endl
331 << "\\path(" << p1_x << "," << p1_y
332 << ")(" << p2_x << "," << p2_y << ")("
333 << p3_x << "," << p3_y << ")("
334 << p1_x << "," << p1_y << ")" << std::endl
335 << std::endl;
336}
337
341void Eepic_Ellipse::draw(Eepic_Plane * plane, std::ostream & output) const
342{
343 const Ellipse & e = static_cast<const Ellipse&>(*geom_object_ptr);
344
345 plane->draw_ellipse(e, output);
346}
347
351void Eepic_Shade_Ellipse::draw(Eepic_Plane * plane, std::ostream & output) const
352{
353 const Ellipse & e = static_cast<const Ellipse&>(*geom_object_ptr);
354
355 output << "\\shade" << std::endl;
356
357 plane->draw_ellipse(e, output);
358}
359
363void Eepic_Thick_Ellipse::draw(Eepic_Plane * plane, std::ostream & output) const
364{
365 const Ellipse & e = static_cast<const Ellipse&>(*geom_object_ptr);
366
367 output << "\\Thicklines" << std::endl;
368
369 plane->draw_ellipse(e, output);
370}
371
375void Eepic_Text::draw(Eepic_Plane * plane, std::ostream & output) const
376{
377 const Text & t = static_cast<const Text &>(*geom_object_ptr);
378
379 plane->draw_text(t, output, 0, 0.5);
380}
381
385void Eepic_Left_Text::draw(Eepic_Plane * plane, std::ostream & output) const
386{
387 const Text & t = static_cast<const Text &>(*geom_object_ptr);
388
389 plane->draw_text(t, output, 0, 0.5);
390}
391
395void Eepic_Right_Text::draw(Eepic_Plane * plane, std::ostream & output) const
396{
397 const Text & t = static_cast<const Text &>(*geom_object_ptr);
398
399 plane->draw_text(t, output, 1.2, 0.5);
400}
401
405void Eepic_Center_Text::draw(Eepic_Plane * plane, std::ostream & output) const
406{
407 const Text & t = static_cast<const Text &>(*geom_object_ptr);
408
409 plane->draw_text(t, output, 0.5, 0.5);
410}
411
415void Eepic_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
416{
417 Polygon & poly = (Polygon&)(*geom_object_ptr);
418
420}
421
422// Implementations of how each of the styled polygons are drawn.
423
428 std::ostream & output) const
429{
430 Polygon & poly = (Polygon&)(*geom_object_ptr);
431
433 plane->draw_dots_from_polygon(poly, output);
434}
435
440 std::ostream & output) const
441{
442 Polygon & poly = (Polygon&)(*geom_object_ptr);
443
445}
446
450void Eepic_Dotted_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
451{
452 Polygon & poly = (Polygon&)(*geom_object_ptr);
453
455}
456
460void Eepic_Dash_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
461{
462 Polygon & poly = (Polygon&)(*geom_object_ptr);
463
465}
466
471 std::ostream & output) const
472{
473 Polygon & poly = (Polygon&)(*geom_object_ptr);
474
476 plane->draw_dots_from_polygon(poly, output);
477}
478
483 std::ostream & output) const
484{
485 Polygon & poly = (Polygon&)(*geom_object_ptr);
486
488 plane->draw_dots_from_polygon(poly, output);
489}
490
495 std::ostream & output) const
496{
497 Polygon & poly = (Polygon&)(*geom_object_ptr);
498
500 Segment sg = poly.get_last_segment();
501 plane->draw_arrow_extreme(sg, output);
502}
503
507void Eepic_Shade_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
508{
509 Polygon & poly = (Polygon&)(*geom_object_ptr);
510
511 plane->draw_closed_polygon(poly, output);
512}
513
518 std::ostream & output) const
519{
520 Polygon & poly = (Polygon&)(*geom_object_ptr);
521
522 plane->draw_closed_polygon(poly, output);
523 plane->draw_dots_from_polygon(poly, output);
524}
525
530 std::ostream & output) const
531{
532 Polygon & poly = (Polygon&)(*geom_object_ptr);
533
534 plane->draw_closed_polygon(poly, output);
535 plane->draw_arrows_in_polygon(poly, output);
536}
537
542 std::ostream & output) const
543{
544 Polygon & poly = (Polygon&)(*geom_object_ptr);
545
546 plane->draw_closed_polygon(poly, output);
548}
549
554 std::ostream & output) const
555{
556 Polygon & poly = (Polygon&)(*geom_object_ptr);
557
558 plane->draw_closed_polygon(poly, output);
560}
561
565void Eepic_Spline::draw(Eepic_Plane * plane, std::ostream & output) const
566{
567 Polygon & poly = (Polygon&)(*geom_object_ptr);
568
569 plane->draw_spline(poly, output);
570}
571
575void Eepic_Dash_Spline::draw(Eepic_Plane * plane, std::ostream & output) const
576{
577 Polygon & poly = (Polygon&)(*geom_object_ptr);
578
579 plane->draw_dash_spline(poly, output);
580}
581
585void Eepic_Spline_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
586{
587 Polygon & poly = (Polygon&)(*geom_object_ptr);
588
589 plane->draw_spline_arrow(poly, output);
590}
591
596 std::ostream & output) const
597{
598 Polygon & poly = (Polygon&)(*geom_object_ptr);
599
600 plane->draw_dash_spline_arrow(poly, output);
601}
602
603// Exactly the same methods as above, but with the addition of \Thicklines
604
609 std::ostream & output) const
610{
611 output << "\\Thicklines" << std::endl
612 << std::endl;
613
614 Polygon & poly = (Polygon&)(*geom_object_ptr);
616 plane->draw_dots_from_polygon(poly, output);
617}
618
623 std::ostream & output) const
624{
625 output << "\\Thicklines" << std::endl
626 << std::endl;
627
628 Polygon & poly = (Polygon&)(*geom_object_ptr);
630}
631
636 std::ostream & output) const
637{
638 output << "\\Thicklines" << std::endl
639 << std::endl;
640
641 Polygon & poly = (Polygon&)(*geom_object_ptr);
643}
644
649 std::ostream & output) const
650{
651 output << "\\Thicklines" << std::endl
652 << std::endl;
653
654 Polygon & poly = (Polygon&)(*geom_object_ptr);
656}
657
662 std::ostream & output) const
663{
664 output << "\\Thicklines" << std::endl
665 << std::endl;
666
667 Polygon & poly = (Polygon&)(*geom_object_ptr);
669 plane->draw_dots_from_polygon(poly, output);
670}
671
676 std::ostream & output) const
677{
678 output << "\\Thicklines" << std::endl
679 << std::endl;
680
681 Polygon & poly = (Polygon&)(*geom_object_ptr);
683 Segment sg = poly.get_last_segment();
684 plane->draw_arrow_extreme(sg, output);
685}
686
691 std::ostream & output) const
692{
693 output << "\\Thicklines" << std::endl
694 << std::endl;
695
696 Polygon & poly = (Polygon&)(*geom_object_ptr);
698 plane->draw_dots_from_polygon(poly, output);
699}
700
705 std::ostream & output) const
706{
707 output << "\\Thicklines" << std::endl
708 << std::endl;
709
710 Polygon & poly = (Polygon&)(*geom_object_ptr);
711 plane->draw_closed_polygon(poly, output);
712}
713
718 std::ostream & output) const
719{
720 output << "\\Thicklines" << std::endl
721 << std::endl;
722
723 Polygon & poly = (Polygon&)(*geom_object_ptr);
724 plane->draw_closed_polygon(poly, output);
725 plane->draw_dots_from_polygon(poly, output);
726}
727
732 std::ostream & output) const
733{
734 output << "\\Thicklines" << std::endl
735 << std::endl;
736
737 Polygon & poly = (Polygon&)(*geom_object_ptr);
738 plane->draw_closed_polygon(poly, output);
739 plane->draw_arrows_in_polygon(poly, output);
740}
741
746 std::ostream & output) const
747{
748 output << "\\Thicklines" << std::endl
749 << std::endl;
750
751 Polygon & poly = (Polygon&)(*geom_object_ptr);
752 plane->draw_closed_polygon(poly, output);
754}
755
760 std::ostream & output) const
761{
762 output << "\\Thicklines" << std::endl
763 << std::endl;
764
765 Polygon & poly = (Polygon&)(*geom_object_ptr);
766 plane->draw_closed_polygon(poly, output);
768}
769
773void Eepic_Thick_Spline::draw(Eepic_Plane * plane, std::ostream & output) const
774{
775 output << "\\Thicklines" << std::endl
776 << std::endl;
777
778 Polygon & poly = (Polygon&)(*geom_object_ptr);
779 plane->draw_spline(poly, output);
780}
781
786 std::ostream & output) const
787{
788 output << "\\Thicklines" << std::endl
789 << std::endl;
790
791 Polygon & poly = (Polygon&)(*geom_object_ptr);
792 plane->draw_dash_spline(poly, output);
793}
794
799 std::ostream & output) const
800{
801 output << "\\Thicklines" << std::endl
802 << std::endl;
803
804 Polygon & poly = (Polygon&)(*geom_object_ptr);
805 plane->draw_spline_arrow(poly, output);
806}
807
812 std::ostream & output) const
813{
814 output << "\\Thicklines" << std::endl
815 << std::endl;
816
817 Polygon & poly = (Polygon&)(*geom_object_ptr);
818 plane->draw_dash_spline_arrow(poly, output);
819}
820
824void Eepic_Regular_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
825{
827
829}
830
835 std::ostream & output) const
836{
839 plane->draw_dots_from_polygon(poly, output);
840}
841
851
856 std::ostream & output) const
857{
860}
861
872
883
888 std::ostream & output) const
889{
891 plane->draw_closed_polygon(poly, output);
892}
893
898 std::ostream & output) const
899{
901 plane->draw_closed_polygon(poly, output);
902 plane->draw_dots_from_polygon(poly, output);
903}
904
909 std::ostream & output) const
910{
912 plane->draw_closed_polygon(poly, output);
913 plane->draw_arrows_in_polygon(poly, output);
914}
915
920 std::ostream & output) const
921{
923 plane->draw_closed_polygon(poly, output);
925}
926
An axis-aligned ellipse.
Definition point.H:2006
Represents a point with rectangular coordinates in a 2D plane.
Definition point.H:229
const Geom_Number & get_x() const noexcept
Gets the x-coordinate value.
Definition point.H:457
std::string to_string() const
Returns a string representation of the point as "(x,y)".
Definition point.H:651
const Geom_Number & get_y() const noexcept
Gets the y-coordinate value.
Definition point.H:466
A general (irregular) 2D polygon defined by a sequence of vertices.
Definition polygon.H:246
Segment get_last_segment() const
Get the last edge (segment) of the polygon.
Definition polygon.H:639
A regular polygon defined by center, side length, and vertex count.
Definition polygon.H:1132
Represents a line segment between two points.
Definition point.H:827
Represents a text string positioned at a 2D point.
Definition point.H:2739
A non-degenerate triangle defined by three points.
Definition point.H:1478
const Point & get_p3() const
Gets the third vertex.
Definition point.H:1591
const Point & get_p2() const
Gets the second vertex.
Definition point.H:1589
const Point & get_p1() const
Gets the first vertex.
Definition point.H:1587
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as an arrow.
Definition eepicgeom.C:222
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object, center-aligned.
Definition eepicgeom.C:405
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dashed arrow.
Definition eepicgeom.C:290
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dashed edges and an arrow on the last segment.
Definition eepicgeom.C:494
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dashed edges and circles at its vertices.
Definition eepicgeom.C:482
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dashed edges.
Definition eepicgeom.C:460
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dashed edges and circles at its vertices.
Definition eepicgeom.C:876
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dashed edges.
Definition eepicgeom.C:855
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dashed line.
Definition eepicgeom.C:270
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a dashed spline curve with an arrow at the end.
Definition eepicgeom.C:595
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a dashed spline curve through the polygon's vertices.
Definition eepicgeom.C:575
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dotted arrow.
Definition eepicgeom.C:280
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dotted edges and circles at its vertices.
Definition eepicgeom.C:470
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with dotted edges.
Definition eepicgeom.C:450
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dotted edges and circles at its vertices.
Definition eepicgeom.C:865
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with dotted edges.
Definition eepicgeom.C:845
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a dotted line.
Definition eepicgeom.C:260
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Ellipse object.
Definition eepicgeom.C:341
const Geom_Object *const geom_object_ptr
Pointer to the wrapped geometric object.
Definition eepicgeom.H:119
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object, left-aligned.
Definition eepicgeom.C:385
2D canvas for generating EEPIC/LaTeX picture environments.
Definition eepicgeom.H:250
static const double dotgap
Gap between dots in dotted lines.
Definition eepicgeom.H:299
void draw_dotted_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dotted segment sg.
Definition eepicgeom.H:758
void draw_arrow_dash_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dashed segment sg with arrow head.
Definition eepicgeom.H:814
Point __lowest
Point with minimum y-coordinate.
Definition eepicgeom.H:279
Point __leftmost
Point with minimum x-coordinate.
Definition eepicgeom.H:276
void draw_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw segment sg.
Definition eepicgeom.H:688
double y_geom_number_to_eepic(const Geom_Number &y) const
Convert a geometric y coordinate into plane y coordinate.
Definition eepicgeom.H:356
void draw_dash_spline(Poly &poly, std::ostream &output)
Definition eepicgeom.H:996
Point __rightmost
Point with maximum x-coordinate.
Definition eepicgeom.H:277
bool with_cartesian_axis
Flag to draw Cartesian axes.
Definition eepicgeom.H:281
static const double arrow_lenght_in_mm
Definition eepicgeom.H:695
Point __highest
Point with maximum y-coordinate.
Definition eepicgeom.H:278
static const double normal_thickness
Default line thickness.
Definition eepicgeom.H:294
static const double default_r
Default radius for drawing points (also used for text height)
Definition eepicgeom.H:284
void draw_ellipse(const Ellipse &e, std::ostream &output)
Emit EEPIC code to draw ellipse e.
Definition eepicgeom.H:820
void draw_arrow_extreme(const Segment &sg, std::ostream &output)
Definition eepicgeom.H:904
static const double default_shade_thickness
Default shading thickness.
Definition eepicgeom.H:295
void draw_text(const Text &t, std::ostream &output, const double &hfactor, const double &vfactor)
Definition eepicgeom.H:1031
void draw_dots_from_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:893
void draw_points_text_in_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:949
void draw_dash_spline_arrow(Poly &poly, std::ostream &output)
Definition eepicgeom.H:1022
void draw_closed_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:864
void draw_polygon(Poly &poly, std::ostream &output, Draw_Segment_Fct draw_sg_fct)
Definition eepicgeom.H:853
void draw_closed_polygon_with_arrows(Poly &poly, std::ostream &output)
Definition eepicgeom.H:923
double x_geom_number_to_eepic(const Geom_Number &x) const
Convert a geometric x coordinate into plane x coordinate.
Definition eepicgeom.H:350
void draw_arrow(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw segment sg with an arrow head.
Definition eepicgeom.H:740
void draw_vertex_numbers_in_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:958
void draw_arrows_in_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:912
static const double arrow_width_in_mm
Definition eepicgeom.H:693
void draw_spline(Poly &poly, std::ostream &output)
Definition eepicgeom.H:981
void draw_point(const Point &p, std::ostream &output)
EEPIC "primitive drawing" methods.
Definition eepicgeom.H:653
void draw_arrow_dotted_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dotted segment sg with arrow head.
Definition eepicgeom.H:795
void draw_dash_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dashed segment sg.
Definition eepicgeom.H:776
void draw_spline_arrow(Poly &poly, std::ostream &output)
Definition eepicgeom.H:1011
void draw_cartesian_axis(std::ostream &output)
Draws the Cartesian axes on the plane, if enabled.
Definition eepicgeom.C:232
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Point object.
Definition eepicgeom.C:175
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and arrows on its edges.
Definition eepicgeom.C:439
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon's edges and adds circles at its vertices.
Definition eepicgeom.C:427
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Polygon object.
Definition eepicgeom.C:415
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon's edges and adds circles at its vertices.
Definition eepicgeom.C:834
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Regular_Polygon object.
Definition eepicgeom.C:824
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object, right-aligned.
Definition eepicgeom.C:395
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object.
Definition eepicgeom.C:185
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Ellipse object with a shaded interior.
Definition eepicgeom.C:351
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and arrows on its edges.
Definition eepicgeom.C:529
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and circles at its vertices.
Definition eepicgeom.C:517
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and text labels for its vertices.
Definition eepicgeom.C:541
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior and index numbers for its vertices.
Definition eepicgeom.C:553
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a shaded interior.
Definition eepicgeom.C:507
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and arrows on its edges.
Definition eepicgeom.C:908
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and circles at its vertices.
Definition eepicgeom.C:897
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and text labels for its vertices.
Definition eepicgeom.C:919
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior and index numbers for its vertices.
Definition eepicgeom.C:931
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the regular polygon with a shaded interior.
Definition eepicgeom.C:887
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a spline curve with an arrow at the end.
Definition eepicgeom.C:585
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a spline curve through the polygon's vertices.
Definition eepicgeom.C:565
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Text object.
Definition eepicgeom.C:375
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a thick arrow.
Definition eepicgeom.C:247
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a thick, dashed arrow.
Definition eepicgeom.C:300
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dashed edges and an arrow on the last segment.
Definition eepicgeom.C:675
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dashed edges and circles at its vertices.
Definition eepicgeom.C:690
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dashed edges.
Definition eepicgeom.C:648
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object as a thick, dashed line.
Definition eepicgeom.C:208
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick, dashed spline curve with an arrow at the end.
Definition eepicgeom.C:811
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick, dashed spline curve through the polygon's vertices.
Definition eepicgeom.C:785
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dotted edges and circles at its vertices.
Definition eepicgeom.C:661
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick, dotted edges.
Definition eepicgeom.C:635
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Ellipse object with thick lines.
Definition eepicgeom.C:363
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick shaded interior and arrows on its edges.
Definition eepicgeom.C:622
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with thick edges and circles at its vertices.
Definition eepicgeom.C:608
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Segment object with thick lines.
Definition eepicgeom.C:195
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and arrows on its edges.
Definition eepicgeom.C:731
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and circles at its vertices.
Definition eepicgeom.C:717
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and text labels for its vertices.
Definition eepicgeom.C:745
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior and index numbers for its vertices.
Definition eepicgeom.C:759
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the polygon with a thick, shaded interior.
Definition eepicgeom.C:704
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick spline curve with an arrow at the end.
Definition eepicgeom.C:798
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws a thick spline curve through the polygon's vertices.
Definition eepicgeom.C:773
void draw(Eepic_Plane *plane, std::ostream &output) const override
Draws the wrapped Triangle object.
Definition eepicgeom.C:314
EEPIC/LaTeX geometric drawing utilities.
#define IMPL_PUT_IN_PLANE(Type)
Definition eepicgeom.H:1118
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).
Definition eepicgeom.H:1214
ofstream output
Definition writeHeap.C:215