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;
36
37const double Eepic_Plane::normal_thickness = 20;
38
39
41
42const double Eepic_Plane::dotgap = 65;
43
44
45const double Eepic_Plane::arrow_width_in_mm = 0.5;
46
47const double Eepic_Plane::arrow_lenght_in_mm = 1.5;
48
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
80
84
86
87
88 // con círculos punto en los vértices
90
91 // con círculos punto en los vértices
93
94 // lados puntillados
96
97 // lados línea partida
99
100 // lados puntillados y círculos en los vértices
102
103 // lados líneas partidas con círculos en los vértices
105
106 // lados líneas partidas con punta d eflecha en último segmento
108
109 // el interior del polígono es sobreado (gris)
111
112 // el interior del polígono es sobreado (gris) con círculos en los vértices
114
115 // el interior del polígono es sobreado (gris) y lados son flechas
117
118 // interior sobreado (gris) y con coordenadas de los vértices
120
121 // interior sobreado (gris) y con números de los vértices
123
124 // Curva spline construida según los puntos del polígono
126
127 // Curva spline a línea partida construida según los puntos del polígono
129
130 // Curva spline construida según los puntos del polígono con flecha
132
133 // Curva spline a línea partida construida según los puntos del
134 // polígono con flecha
136
137 // con círculos punto en los vértices
139
140 // con círculos punto en los vértices
142
143 // lados puntillados
145
146 // lados línea partida
148
149 // lados puntillados y círculos en los vértices
151
152 // lados líneas partidas con círculos en los vértices
154
155 // lados líneas partidas con puntas de flechas
157
158 // el interior del polígono es sobreado (gris)
160
161 // el interior del polígono es sobreado (gris) con círculos en los vértices
163
164 // el interior del polígono es sobreado (gris) y lados son flechas
166
167 // interior sobreado (gris) y con coordenadas de los vértices
169
170 // interior sobreado (gris) y con números de los vértices
172
173 // Curva spline construida según los puntos del polígono
175
176 // Curva spline a línea partida construida según los puntos del polígono
178
179 // Curva spline construida según los puntos del polígono con flecha
181
182 // Curva spline a línea partida construida según los puntos del
183 // polígono con flecha
185
186
197
198void Eepic_Point::draw(Eepic_Plane * plane, std::ostream & output) const
199{
200 const Point & p = static_cast<const Point&>(*geom_object_ptr);
201
202 plane->draw_point(p, output);
203}
204
205void Eepic_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
206{
207 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
208
209 plane->draw_segment(sg, output);
210}
211
212
213void Eepic_Thick_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
214{
215 output << "\\Thicklines" << std::endl
216 << std::endl;
217
218 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
219
220 plane->draw_segment(sg, output);
221}
222
223
225 std::ostream & output) const
226{
227 output << "\\Thicklines" << std::endl
228 << std::endl;
229
230 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
231
232 plane->draw_dash_segment(sg, output);
233}
234
235void Eepic_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
236{
237 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
238
239 plane->draw_arrow(sg, output);
240}
241
242
244{
246 return;
247
248 Segment x_axis(Point(__leftmost.get_x(), 0), Point(__rightmost.get_x(), 0));
250
251 Segment y_axis(Point(0, __lowest.get_y()), Point(0, __highest.get_y()));
253}
254
255
256void Eepic_Thick_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
257{
258 output << "\\Thicklines" << std::endl
259 << std::endl;
260
261 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
262
263 plane->draw_arrow(sg, output);
264}
265
266
267void Eepic_Dotted_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
268{
269 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
270
271 plane->draw_dotted_segment(sg, output);
272}
273
274
275void Eepic_Dash_Segment::draw(Eepic_Plane * plane, std::ostream & output) const
276{
277 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
278
279 plane->draw_dash_segment(sg, output);
280}
281
282
283void Eepic_Dotted_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
284{
285 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
286
288}
289
290
291void Eepic_Dash_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
292{
293 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
294
296}
297
298
300 std::ostream & output) const
301{
302 output << "\\Thicklines" << std::endl
303 << std::endl;
304
305 const Segment & sg = static_cast<const Segment&>(*geom_object_ptr);
306
308}
309
310void Eepic_Triangle::draw(Eepic_Plane * plane, std::ostream & output) const
311{
312 const Triangle & t = static_cast<const Triangle&>(*geom_object_ptr);
313
314 const double p1_x = plane->x_geom_number_to_eepic(t.get_p1().get_x());
315
316 const double p1_y = plane->y_geom_number_to_eepic(t.get_p1().get_y());
317
318 const double p2_x = plane->x_geom_number_to_eepic(t.get_p2().get_x());
319
320 const double p2_y = plane->y_geom_number_to_eepic(t.get_p2().get_y());
321
322 const double p3_x = plane->x_geom_number_to_eepic(t.get_p3().get_x());
323
324 const double p3_y = plane->y_geom_number_to_eepic(t.get_p3().get_y());
325
326 output << " %% Triange from " << t.get_p1().to_string()
327 << " to " << t.get_p2().to_string()
328 << " to " << t.get_p2().to_string() << std::endl
329 << " %% mapped in this plane to (" << p1_x << "," << p1_y
330 << ") to (" << p2_x << "," << p2_y << ") to ("
331 << p3_x << "," << p2_y << ")" << std::endl
332 << "\\path(" << p1_x << "," << p1_y
333 << ")(" << p2_x << "," << p2_y << ")("
334 << p3_x << "," << p3_y << ")("
335 << p1_x << "," << p1_y << ")" << std::endl
336 << std::endl;
337}
338
339void Eepic_Ellipse::draw(Eepic_Plane * plane, std::ostream & output) const
340{
341 const Ellipse & e = static_cast<const Ellipse&>(*geom_object_ptr);
342
343 plane->draw_ellipse(e, output);
344}
345
346
347void Eepic_Shade_Ellipse::draw(Eepic_Plane * plane, std::ostream & output) const
348{
349 const Ellipse & e = static_cast<const Ellipse&>(*geom_object_ptr);
350
351 output << "\\shade" << std::endl;
352
353 plane->draw_ellipse(e, output);
354}
355
356
357void Eepic_Thick_Ellipse::draw(Eepic_Plane * plane, std::ostream & output) const
358{
359 const Ellipse & e = static_cast<const Ellipse&>(*geom_object_ptr);
360
361 output << "\\Thicklines" << std::endl;
362
363 plane->draw_ellipse(e, output);
364}
365
366
367void Eepic_Text::draw(Eepic_Plane * plane, std::ostream & output) const
368{
369 const Text & t = static_cast<const Text &>(*geom_object_ptr);
370
371 plane->draw_text(t, output, 0, 0.5);
372}
373
374
375void Eepic_Left_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
382
383void Eepic_Right_Text::draw(Eepic_Plane * plane, std::ostream & output) const
384{
385 const Text & t = static_cast<const Text &>(*geom_object_ptr);
386
387 plane->draw_text(t, output, 1.2, 0.5);
388}
389
390
391void Eepic_Center_Text::draw(Eepic_Plane * plane, std::ostream & output) const
392{
393 const Text & t = static_cast<const Text &>(*geom_object_ptr);
394
395 plane->draw_text(t, output, 0.5, 0.5);
396}
397
398void Eepic_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
399{
400 Polygon & poly = (Polygon&)(*geom_object_ptr);
401
403}
404
405 // ahora vienen las implantaciones de cómo se dibuja
406 // cada uno de los polinomios
407
409 std::ostream & output) const
410{
411 Polygon & poly = (Polygon&)(*geom_object_ptr);
412
414
415 plane->draw_dots_from_polygon(poly, output);
416}
417
418
420 std::ostream & output) const
421{
422 Polygon & poly = (Polygon&)(*geom_object_ptr);
423
425}
426
427
428void Eepic_Dotted_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
429{
430 Polygon & poly = (Polygon&)(*geom_object_ptr);
431
433}
434
435
436void Eepic_Dash_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
437{
438 Polygon & poly = (Polygon&)(*geom_object_ptr);
439
441}
442
444 std::ostream & output) const
445{
446 Polygon & poly = (Polygon&)(*geom_object_ptr);
447
449
450 plane->draw_dots_from_polygon(poly, output);
451}
452
453
455 std::ostream & output) const
456{
457 Polygon & poly = (Polygon&)(*geom_object_ptr);
458
460
461 plane->draw_dots_from_polygon(poly, output);
462}
463
465 std::ostream & output) const
466{
467 Polygon & poly = (Polygon&)(*geom_object_ptr);
468
470
471 Segment sg = poly.get_last_segment();
472
473 plane->draw_arrow_extreme(sg, output);
474}
475
476
477
478void Eepic_Shade_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
479{
480 Polygon & poly = (Polygon&)(*geom_object_ptr);
481
482 plane->draw_closed_polygon(poly, output);
483}
484
485
487 std::ostream & output) const
488{
489 Polygon & poly = (Polygon&)(*geom_object_ptr);
490
491 plane->draw_closed_polygon(poly, output);
492
493 plane->draw_dots_from_polygon(poly, output);
494}
495
496
498 std::ostream & output) const
499{
500 Polygon & poly = (Polygon&)(*geom_object_ptr);
501
502 plane->draw_closed_polygon(poly, output);
503
504 plane->draw_arrows_in_polygon(poly, output);
505}
506
507
509 std::ostream & output) const
510{
511 Polygon & poly = (Polygon&)(*geom_object_ptr);
512
513 plane->draw_closed_polygon(poly, output);
514
516}
517
518
520 std::ostream & output) const
521{
522 Polygon & poly = (Polygon&)(*geom_object_ptr);
523
524 plane->draw_closed_polygon(poly, output);
525
527}
528
529
530void Eepic_Spline::draw(Eepic_Plane * plane, std::ostream & output) const
531{
532 Polygon & poly = (Polygon&)(*geom_object_ptr);
533
534 plane->draw_spline(poly, output);
535}
536
537
538void Eepic_Dash_Spline::draw(Eepic_Plane * plane, std::ostream & output) const
539{
540 Polygon & poly = (Polygon&)(*geom_object_ptr);
541
542 plane->draw_dash_spline(poly, output);
543}
544
545
546void Eepic_Spline_Arrow::draw(Eepic_Plane * plane, std::ostream & output) const
547{
548 Polygon & poly = (Polygon&)(*geom_object_ptr);
549
550 plane->draw_spline_arrow(poly, output);
551}
552
553
555 std::ostream & output) const
556{
557 Polygon & poly = (Polygon&)(*geom_object_ptr);
558
559 plane->draw_dash_spline_arrow(poly, output);
560}
561
562
563// Exactamente los mismo métodos pero con la adición de Thicklines
564
566 std::ostream & output) const
567{
568 output << "\\Thicklines" << std::endl
569 << std::endl;
570
571 Polygon & poly = (Polygon&)(*geom_object_ptr);
572
574
575 plane->draw_dots_from_polygon(poly, output);
576}
577
578
580 std::ostream & output) const
581{
582 output << "\\Thicklines" << std::endl
583 << std::endl;
584
585 Polygon & poly = (Polygon&)(*geom_object_ptr);
586
588}
589
590
592 std::ostream & output) const
593{
594 output << "\\Thicklines" << std::endl
595 << std::endl;
596
597 Polygon & poly = (Polygon&)(*geom_object_ptr);
598
600}
601
602
604 std::ostream & output) const
605{
606 output << "\\Thicklines" << std::endl
607 << std::endl;
608
609 Polygon & poly = (Polygon&)(*geom_object_ptr);
610
612}
613
615 std::ostream & output) const
616{
617 output << "\\Thicklines" << std::endl
618 << std::endl;
619
620 Polygon & poly = (Polygon&)(*geom_object_ptr);
621
623
624 plane->draw_dots_from_polygon(poly, output);
625}
626
627
629 std::ostream & output) const
630{
631 output << "\\Thicklines" << std::endl
632 << std::endl;
633
634 Polygon & poly = (Polygon&)(*geom_object_ptr);
635
637
638 Segment sg = poly.get_last_segment();
639
640 plane->draw_arrow_extreme(sg, output);
641}
642
643
645 std::ostream & output) const
646{
647 output << "\\Thicklines" << std::endl
648 << std::endl;
649
650 Polygon & poly = (Polygon&)(*geom_object_ptr);
651
653
654 plane->draw_dots_from_polygon(poly, output);
655}
656
657
659 std::ostream & output) const
660{
661 output << "\\Thicklines" << std::endl
662 << std::endl;
663
664 Polygon & poly = (Polygon&)(*geom_object_ptr);
665
666 plane->draw_closed_polygon(poly, output);
667}
668
669
671 std::ostream & output) const
672{
673 output << "\\Thicklines" << std::endl
674 << std::endl;
675
676 Polygon & poly = (Polygon&)(*geom_object_ptr);
677
678 plane->draw_closed_polygon(poly, output);
679
680 plane->draw_dots_from_polygon(poly, output);
681}
682
683
685 std::ostream & output) const
686{
687 output << "\\Thicklines" << std::endl
688 << std::endl;
689
690 Polygon & poly = (Polygon&)(*geom_object_ptr);
691
692 plane->draw_closed_polygon(poly, output);
693
694 plane->draw_arrows_in_polygon(poly, output);
695}
696
697
698 void
700 std::ostream & output) const
701{
702 output << "\\Thicklines" << std::endl
703 << std::endl;
704
705 Polygon & poly = (Polygon&)(*geom_object_ptr);
706
707 plane->draw_closed_polygon(poly, output);
708
710}
711
712
713 void
715 std::ostream & output) const
716{
717 output << "\\Thicklines" << std::endl
718 << std::endl;
719
720 Polygon & poly = (Polygon&)(*geom_object_ptr);
721
722 plane->draw_closed_polygon(poly, output);
723
725}
726
727
728void Eepic_Thick_Spline::draw(Eepic_Plane * plane, std::ostream & output) const
729{
730 output << "\\Thicklines" << std::endl
731 << std::endl;
732
733 Polygon & poly = (Polygon&)(*geom_object_ptr);
734
735 plane->draw_spline(poly, output);
736}
737
738
740 std::ostream & output) const
741{
742 output << "\\Thicklines" << std::endl
743 << std::endl;
744
745 Polygon & poly = (Polygon&)(*geom_object_ptr);
746
747 plane->draw_dash_spline(poly, output);
748}
749
750
752 std::ostream & output) const
753{
754 output << "\\Thicklines" << std::endl
755 << std::endl;
756
757 Polygon & poly = (Polygon&)(*geom_object_ptr);
758
759 plane->draw_spline_arrow(poly, output);
760}
761
762
764 std::ostream & output) const
765{
766 output << "\\Thicklines" << std::endl
767 << std::endl;
768
769 Polygon & poly = (Polygon&)(*geom_object_ptr);
770
771 plane->draw_dash_spline_arrow(poly, output);
772}
773
774
775void Eepic_Regular_Polygon::draw(Eepic_Plane * plane, std::ostream & output) const
776{
778
780}
781
782
784 std::ostream & output) const
785{
787
789
790 plane->draw_dots_from_polygon(poly, output);
791}
792
793
795 std::ostream & output) const
796{
798
800}
801
802
804 std::ostream & output) const
805{
807
809}
810
812 std::ostream & output) const
813{
815
817
818 plane->draw_dots_from_polygon(poly, output);
819}
820
821
823 std::ostream & output) const
824{
826
828
829 plane->draw_dots_from_polygon(poly, output);
830}
831
832
834 std::ostream & output) const
835{
837
838 plane->draw_closed_polygon(poly, output);
839}
840
841
843 std::ostream & output) const
844{
846
847 plane->draw_closed_polygon(poly, output);
848
849 plane->draw_dots_from_polygon(poly, output);
850}
851
852
854 std::ostream & output) const
855{
857
858 plane->draw_closed_polygon(poly, output);
859
860 plane->draw_arrows_in_polygon(poly, output);
861}
862
863
864 void
866 std::ostream & output) const
867{
869
870 plane->draw_closed_polygon(poly, output);
871
873}
874
875
876 void
878 (Eepic_Plane * plane, std::ostream & output) const
879{
881
882 plane->draw_closed_polygon(poly, output);
883
885}
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:235
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:391
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:291
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:464
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:454
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:436
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:822
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:803
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:275
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:554
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:538
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:283
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:443
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:428
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:811
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:794
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:267
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:339
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
Generate EEPIC code for this object.
Definition eepicgeom.C:375
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:749
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:805
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:679
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:987
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:686
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:811
void draw_arrow_extreme(const Segment &sg, std::ostream &output)
Definition eepicgeom.H:895
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:1022
void draw_dots_from_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:884
void draw_points_text_in_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:940
void draw_dash_spline_arrow(Poly &poly, std::ostream &output)
Definition eepicgeom.H:1013
void draw_closed_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:855
void draw_polygon(Poly &poly, std::ostream &output, Draw_Segment_Fct draw_sg_fct)
Definition eepicgeom.H:844
void draw_closed_polygon_with_arrows(Poly &poly, std::ostream &output)
Definition eepicgeom.H:914
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:731
void draw_vertex_numbers_in_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:949
void draw_arrows_in_polygon(Poly &poly, std::ostream &output)
Definition eepicgeom.H:903
static const double arrow_width_in_mm
Definition eepicgeom.H:684
void draw_spline(Poly &poly, std::ostream &output)
Definition eepicgeom.H:972
void draw_point(const Point &p, std::ostream &output)
EEPIC "primitive drawing" methods.
Definition eepicgeom.H:644
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:786
void draw_dash_segment(const Segment &sg, std::ostream &output)
Emit EEPIC code to draw dashed segment sg.
Definition eepicgeom.H:767
void draw_spline_arrow(Poly &poly, std::ostream &output)
Definition eepicgeom.H:1002
void draw_cartesian_axis(std::ostream &output)
Definition eepicgeom.C:243
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:198
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:419
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:408
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:398
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:783
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:775
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:383
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:205
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:347
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:497
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:486
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:508
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:519
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:478
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:853
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:842
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:865
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:878
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:833
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:546
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:530
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:367
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:256
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:299
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:628
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:644
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:603
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:224
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:763
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:739
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:614
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:591
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:357
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:579
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:565
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:213
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:684
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:670
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:699
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:714
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:658
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:751
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:728
void draw(Eepic_Plane *plane, std::ostream &output) const override
Generate EEPIC code for this object.
Definition eepicgeom.C:310
A general (irregular) 2D polygon defined by a sequence of vertices.
Definition polygon.H:233
Segment get_last_segment()
Get the last edge (segment) of the polygon.
Definition polygon.H:569
A regular polygon defined by center, side length, and vertex count.
Definition polygon.H:829
Fundamental segment defined by two points.
Definition point.H:417
Definition point.H:1524
const Point & get_p1() const
Definition point.H:970
const Point & get_p3() const
Definition point.H:974
const Point & get_p2() const
Definition point.H:972
EEPIC/LaTeX geometric drawing utilities.
#define IMPL_PUT_IN_PLANE(Type)
Definition eepicgeom.H:1109
DynList< T > maps(const C &c, Op op)
Classic map operation.
Segment-drawing variants (types).
Definition eepicgeom.H:1205
ofstream output
Definition writeHeap.C:213