11#ifndef ORBITER_SRC_LIB_FOUNDATIONS_GRAPHICS_GRAPHICS_H_
12#define ORBITER_SRC_LIB_FOUNDATIONS_GRAPHICS_GRAPHICS_H_
17namespace layer1_foundations {
39 int nb_frames_this_round,
int round,
60 std::string &options, std::ostream &fp);
74 double clipping_radius,
85 double clipping_radius,
90 double clipping_radius,
95 double clipping_radius,
100 double clipping_radius,
105 double clipping_radius,
110 double clipping_radius,
118 double clipping_radius,
121 double thickness_half,
double extra_spacing,
123 double off_x,
double off_y,
double off_z,
124 std::string &color_options,
129 std::ostream &ost,
int verbose_level);
131 double thickness_half,
double extra_spacing,
133 double off_x,
double off_y,
double off_z,
134 std::string &options, std::string &group_options,
135 std::ostream &ost,
int verbose_level);
183 int argc, std::string *argv,
249 int argc, std::string *argv,
293 int argc, std::string *argv,
331 int argc, std::string *argv,
379 double rad, std::string &
properties,
int verbose_level);
381 double thickness, std::string &
properties,
int verbose_level);
385 double rad, std::string &
properties,
int verbose_level);
397 double thickness_half,
double scale, std::string &
properties,
int verbose_level);
399 int f_group_is_animated,
int frame,
int verbose_level);
430 double a,
double b,
double c,
int verbose_level);
432 double desired_distance,
int N,
433 double t_min,
double t_max,
double boundary,
439 int number,
int animate_step,
int animate_nb_of_steps,
440 int f_transition,
int transition_step,
int transition_nb_steps,
441 int f_title_page,
int title_page_step,
442 int f_trailer_page,
int trailer_page_step);
504 int x_max,
int y_max,
int f_rotated,
int dx,
int dy);
507 int x_max,
int y_max,
int f_rotated,
int dx,
int dy);
510 int layer,
int node,
int x,
int y,
int dx,
int dy);
519 int argc, std::string *argv,
550 std::string fname_mp;
551 std::string fname_log;
552 std::string fname_tikz;
554 std::ofstream fp_log;
555 std::ofstream fp_tikz;
564 int x_min, x_max, y_min, y_max, f_min_max_set;
606 std::string &file_name,
609 void exit(std::ostream &ost,
int verbose_level);
610 void frame(
double move_out);
612 void finish(std::ostream &ost,
int verbose_level);
629 int nb_rays,
double x_stretch);
632 double x_min,
double x_max,
633 double y_min,
double y_max,
634 double dx,
double dy,
635 int f_x_axis_at_y_min,
int f_y_axis_at_x_min,
636 int x_mod,
int y_mod,
int x_tick_mod,
int y_tick_mod,
637 double x_labels_offset,
double y_labels_offset,
638 double x_tick_half_width,
double y_tick_half_width,
639 int f_v_lines,
int subdivide_v,
640 int f_h_lines,
int subdivide_h,
643 double *Dx,
double *Dy,
double dx,
double dy);
648 int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
650 int x1,
int y1,
int x2,
int y2,
651 int x3,
int y3,
int x4,
int y4);
652 void polygon(
int *Px,
int *Py,
int n);
653 void polygon2(
int *Px,
int *Py,
int i1,
int i2);
654 void polygon3(
int *Px,
int *Py,
int i1,
int i2,
int i3);
655 void polygon4(
int *Px,
int *Py,
int i1,
int i2,
int i3,
657 void polygon5(
int *Px,
int *Py,
int i1,
int i2,
int i3,
659 void polygon6(
int *Px,
int *Py,
int i1,
int i2,
int i3,
660 int i4,
int i5,
int i6);
661 void polygon7(
int *Px,
int *Py,
int i1,
int i2,
int i3,
662 int i4,
int i5,
int i6,
int i7);
663 void polygon8(
int *Px,
int *Py,
int i1,
int i2,
int i3,
664 int i4,
int i5,
int i6,
int i7,
int i8);
665 void polygon9(
int *Px,
int *Py,
int i1,
int i2,
int i3,
666 int i4,
int i5,
int i6,
int i7,
int i8,
int i9);
667 void polygon10(
int *Px,
int *Py,
int i1,
int i2,
int i3,
668 int i4,
int i5,
int i6,
int i7,
int i8,
int i9,
670 void polygon11(
int *Px,
int *Py,
int i1,
int i2,
int i3,
671 int i4,
int i5,
int i6,
int i7,
int i8,
int i9,
673 void polygon_idx(
int *Px,
int *Py,
int *Idx,
int n);
674 void bezier(
int *Px,
int *Py,
int n);
675 void bezier2(
int *Px,
int *Py,
int i1,
int i2);
676 void bezier3(
int *Px,
int *Py,
int i1,
int i2,
int i3);
677 void bezier4(
int *Px,
int *Py,
int i1,
int i2,
int i3,
679 void bezier5(
int *Px,
int *Py,
int i1,
int i2,
int i3,
681 void bezier6(
int *Px,
int *Py,
int i1,
int i2,
int i3,
682 int i4,
int i5,
int i6);
683 void bezier7(
int *Px,
int *Py,
int i1,
int i2,
int i3,
684 int i4,
int i5,
int i6,
int i7);
685 void bezier_idx(
int *Px,
int *Py,
int *Idx,
int n);
687 int x0,
int y0,
int x1,
int y1,
int x2,
688 int y2,
int x3,
int y3);
690 int x0,
int y0,
int x1,
int y1,
691 int x2,
int y2,
int x3,
int y3,
693 void fill_polygon3(
int *Px,
int *Py,
int i1,
int i2,
int i3);
699 int i4,
int i5,
int i6);
701 int i4,
int i5,
int i6,
int i7);
703 int i4,
int i5,
int i6,
int i7,
int i8);
705 int i4,
int i5,
int i6,
int i7,
int i8,
int i9);
707 int i4,
int i5,
int i6,
int i7,
int i8,
int i9,
int i10);
709 int i4,
int i5,
int i6,
int i7,
int i8,
710 int i9,
int i10,
int i11);
713 const char *alignment,
const char *txt);
715 const char *alignment,
const char *p);
716 void aligned_text(
int x,
int y,
const char *alignment,
const char *p);
718 const char *alignment,
const char *p);
720 const char *alignment,
const char *p);
724 void sl_ends(
int line_beg_style,
int line_end_style);
744 void text(
int x,
int y,
const char *p);
745 void circle(
int x,
int y,
int rad);
749 void bezier_idx2(
int *Px,
int *Py,
int *Idx,
int n,
751 void fill_idx(
int *Px,
int *Py,
int *Idx,
int n,
752 const char *symbol,
int f_cycle);
775 void text_log(
int x1,
int y1,
const char *p);
783 void text_mp(
int x1,
int y1,
const char *p);
789 int *Idx,
int n,
int f_cycle);
791 int *Idx,
int n,
int f_cycle);
792 void color_tikz(std::ofstream &fp,
int color);
793 void fill_idx_mp(
int *Px,
int *Py,
int *Idx,
int n,
794 const char *symbol,
int f_cycle);
806 void text_tikz(
int x1,
int y1,
const char *p);
811 int *Idx,
int n,
int f_cycle);
813 int *Idx,
int n,
int f_cycle);
815 int *Px,
int *Py,
int *Idx,
int n,
816 const char *symbol,
int f_cycle);
822 int dim,
int x0,
int y0,
int z0,
int x1,
int y1,
int z1);
824 int p1,
int p2,
int p3,
int p4,
825 const char *align,
int a);
826 void text_4pts(
int *Px,
int *Py,
int p1,
int p2,
int p3,
int p4,
827 const char *align,
const char *str);
831 int dx,
int dy,
int nb_V,
long int *Edges,
int nb_E,
int radius,
835 int dx,
int dy,
int nb_V,
long int *Edges,
int nb_E,
836 int distinguished_edge,
int verbose_level);
838 int dx,
int dy,
int nb_V,
int *Edges,
int nb_E,
int nb_circles);
840 int x,
int y,
int dx,
int dy,
int rad,
int nb_V,
841 int *Edges,
int nb_E,
int *coords_2D,
int *Base,
842 int f_point_labels,
int point_label_offset,
int f_directed);
844 int dx,
int dy,
int nb_V,
long int *Edges,
int nb_E,
848 int f_partition,
int nb_row_parts,
int *row_part_first,
849 int nb_col_parts,
int *col_part_first,
850 int f_row_grid,
int f_col_grid,
853 int f_has_labels,
int *labels);
856 int *outline_value,
int *outline_number,
int outline_sz,
857 int min_value,
int max_value,
int offset_x,
int f_switch_x,
858 int f_title,
const char *title,
860 int f_circle,
int circle_at,
int circle_rad,
861 int f_mu,
int f_sigma,
int nb_standard_deviations,
862 int f_v_grid,
int v_grid,
int f_h_grid,
int h_grid);
864 int **outline_value,
int **outline_number,
865 int *outline_sz,
int nb_curves,
866 int min_x,
int max_x,
int min_y,
int max_y,
867 int offset_x,
int f_switch_x,
868 int f_title,
const char *title,
870 int f_v_grid,
int v_grid,
int f_h_grid,
int h_grid,
871 int f_v_logarithmic,
double log_base);
876 int f_point_labels,
char **Point_labels,
int verbose_level);
878 int f_row_grid,
int f_col_grid,
879 int *Table,
int nb_colors,
881 int *color_scale,
int nb_colors_in_scale,
882 int f_has_labels,
int *labels);
884 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
886 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
888 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
890 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
892 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
894 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
896 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
898 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
900 int i,
int j,
int dx,
int dy,
int rad,
int f_horizontal);
902 int i,
int j,
int dx,
int dy,
int rad);
904 int i,
int j,
int dx,
int dy,
int rad);
909 int f_grid,
int f_gray,
int f_numbers,
int f_frame,
910 int f_cost,
int cost);
930 int nb_dimensions,
int verbose_level);
950 std::vector<parametric_curve_point>
Pts;
956 double t0,
double t1,
980 char *prefix,
int *the_set,
int set_size,
981 int f_title,
const char *title,
int out_of,
983 int f_circle,
int circle_at,
int circle_rad,
984 int f_mu,
int f_sigma,
int nb_standard_deviations,
985 int f_v_grid,
int v_grid,
int f_h_grid,
int h_grid,
987 int f_switch_x,
int no,
int f_embedded,
992 int **Data,
int *Data_size,
int nb_data_sets,
993 int f_title,
const char *title,
int out_of,
995 int f_v_grid,
int v_grid,
int f_h_grid,
int h_grid,
996 int offset_x,
int f_switch_x,
997 int f_v_logarithmic,
double log_base,
int no,
int f_embedded,
999 void get_coord(
int *Px,
int *Py,
int idx,
int x,
int y,
1000 int min_x,
int min_y,
int max_x,
int max_y,
int f_switch_x);
1002 int min_x,
int min_y,
int max_x,
int max_y,
1003 double log_base,
int f_switch_x);
1005 int *outline_value,
int *outline_number,
int outline_sz);
1008 int q,
int *Table,
int nb,
1009 int f_point_labels,
char **Point_labels,
1022 long int *Pts,
int nb_pts,
1077 int f_with_background);
1082 double angle_x_deg,
double angle_y_deg,
double angle_z_deg, std::ostream &ost);
1084 double *v,
double angle_zero_one, std::ostream &ost);
1086 void union_end(std::ostream &ost,
double scale_factor,
double clipping_radius);
1088 double box_x,
double box_y,
double box_z);
1091 void rotate_111(
int h,
int nb_frames, std::ostream &fp);
1093 void ini(std::ostream &ost,
const char *fname_pov,
int first_frame,
1124 int argc, std::string *argv,
1136#define SCENE_MAX_LINES 100000
1137#define SCENE_MAX_EDGES 100000
1138#define SCENE_MAX_POINTS 200000
1139#define SCENE_MAX_PLANES 10000
1140#define SCENE_MAX_QUADRICS 10000
1141#define SCENE_MAX_OCTICS 100
1142#define SCENE_MAX_QUARTICS 1000
1143#define SCENE_MAX_QUINTICS 500
1144#define SCENE_MAX_CUBICS 10000
1145#define SCENE_MAX_FACES 200000
1156 double *Line_coords;
1162 double *Point_coords;
1165 double *Plane_coords;
1170 double *Quadric_coords;
1173 double *Cubic_coords;
1176 double *Quartic_coords;
1179 double *Quintic_coords;
1182 double *Octic_coords;
1185 int *Nb_face_points;
1191 std::vector<std::pair<int, std::string> >
Labels;
1236 double label(
int idx, std::string &txt);
1247 void init(
int verbose_level);
1249 double rad,
int verbose_level);
1252 double rad,
int verbose_level);
1272 int line6(
double *x6);
1273 int line(
double x1,
double x2,
double x3,
1274 double y1,
double y2,
double y3);
1276 double y1,
double y2,
double y3,
double rad);
1279 int edge(
int pt1,
int pt2);
1281 int point(
double x1,
double x2,
double x3);
1285 int triangle(
int line1,
int line2,
int line3,
int verbose_level);
1288 int plane(
double x1,
double x2,
double x3,
double a);
1297 int line_idx2,
int line_idx3,
int verbose_level);
1298 int quintic(
double *coeff_56);
1299 int octic(
double *coeff_165);
1314 int cubic(
double *coeff);
1338 double angle_start,
double angle_max,
double angle_min,
1339 double *coeff1,
double *coeff2,
1343 int face(
int *pts,
int nb_pts);
1344 int face3(
int pt1,
int pt2,
int pt3);
1345 int face4(
int pt1,
int pt2,
int pt3,
int pt4);
1346 int face5(
int pt1,
int pt2,
int pt3,
int pt4,
int pt5);
1348 std::string &options, std::ostream &ost);
1350 std::string &options, std::ostream &ost);
1364 std::string &options, std::ostream &ost);
1366 double thickness_half, std::string &options, std::ostream &ost);
1367 void draw_face(
int idx,
double thickness_half, std::string &options,
1370 std::string &options, std::ostream &ost);
1371 void draw_plane(
int idx, std::string &options, std::ostream &ost);
1373 double rad, std::string &options, std::ostream &ost);
1375 std::string &options, std::ostream &ost);
1377 std::string &options, std::ostream &ost);
1379 std::string &options, std::ostream &ost);
1381 std::string &options, std::ostream &ost);
1383 std::string &options, std::ostream &ost);
1385 std::string &options, std::ostream &ost);
1387 std::string &options, std::ostream &ost);
1389 int &intersection_point_idx,
1395 double y1,
double y2,
double y3,
1398 int plane_idx,
int line_idx,
double spread,
1400 int *New_line_idx,
int &nb_new_lines,
1401 int *New_pt_idx,
int &nb_new_points,
int verbose_level);
1403 int plane_idx,
double pt_in[3],
1404 int &new_line_idx,
int &new_pt_idx,
1407 void rescale(
int first_pt_idx,
double rad_desired);
1411 void hypercube(
int n,
double rad_desired);
1455 int scan1(
int argc, std::string *argv,
int &i,
int verbose_level);
1456 int scan2(
int argc, std::string *argv,
int &i,
int verbose_level);
1458 int i0,
int verbose_level);
1488 int xmax,
int ymax,
int verbose_level);
1489 void draw(std::string &fname,
1498 int &x0,
int &y0,
int *&rad);
1526 int x,
int y,
int dx,
int dy);
1532 int argc, std::string *argv,
1579 int find_node(
int &DFS_rk,
int *path,
int sz,
int verbose_level);
1584 void place_xy(
int left,
int right,
int ymax,
int max_depth);
1593 int f_has_parent,
int parent_x,
int parent_y,
int max_depth,
1594 tree *T,
int verbose_level);
1598 int f_has_parent,
int parent_x,
int parent_y,
int max_depth,
1599 tree *T,
int verbose_level);
1601 int f_has_parent,
int parent_x,
int parent_y,
1602 int max_depth,
int f_edge_labels);
1736 int argc, std::string *argv,
matrices over GF(2) stored as bitvectors
description of a function in reverse polish notation from the command line
a set of functions in reverse polish notation
projective space PG(n,q) of dimension n over Fq
a data structure to store layered graphs or Hasse diagrams
creates 3D animations using Povray
void draw_text(std::string &text, double thickness_half, double extra_spacing, double scale, double off_x, double off_y, double off_z, std::string &color_options, int idx_point, std::ostream &ost, int verbose_level)
void draw_single_surface_with_color(int surface_idx, std::string &color, std::ostream &fp)
void draw_Hilbert_red_lines(std::ostream &fp)
void draw_single_quadric(int idx, std::string &color, std::ostream &fp)
char fname_makefile[1000]
void draw_frame_Hilbert_round_76(video_draw_options *Opt, int h, int nb_frames, int round, std::ostream &fp, int verbose_level)
void draw_Hilbert_cube_boxed(std::ostream &fp)
povray_job_description * Povray_job_description
void draw_text_with_selection(int *selection, int nb_select, double thickness_half, double extra_spacing, double scale, double off_x, double off_y, double off_z, std::string &options, std::string &group_options, std::ostream &ost, int verbose_level)
void draw_frame_five_plus_one(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp, int verbose_level)
void draw_surface_13_1(std::ostream &fp)
void union_end(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp)
void init(povray_job_description *Povray_job_description, void *extra_data, int verbose_level)
void draw_Hilbert_red_line(int idx_one_based, std::ostream &fp)
void draw_Hilbert_blue_line(int idx_one_based, std::ostream &fp)
void draw_single_surface(int surface_idx, std::ostream &fp)
void draw_frame_Eckardt_surface(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp, int verbose_level)
void draw_Hilbert_line(int line_idx, std::string &color, std::ostream &fp)
void draw_frame_twisted_cubic(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp, int verbose_level)
void draw_Hilbert_tetrahedron_faces(std::ostream &fp)
void draw_frame_triangulation_of_cube(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp, int verbose_level)
void draw_frame_windy(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp, int verbose_level)
void(* draw_frame_callback)(animate *A, int frame, int nb_frames_this_round, int round, double clipping, std::ostream &fp, int verbose_level)
void draw_Hilbert_tetrahedron_boxed(std::ostream &fp)
void draw_Hilbert_cube_extended_edges(std::ostream &fp)
void draw_Hilbert_plane(int plane_idx, std::string &color, std::ostream &fp)
void draw_Hilbert_cube_faces(std::ostream &fp)
void draw_Hilbert_blue_lines(std::ostream &fp)
void draw_Hilbert_point(int point_idx, double rad, std::string &options, std::ostream &fp)
void draw_frame_Hilbert(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp, int verbose_level)
void draw_single_line(int line_idx, std::string &color, std::ostream &fp)
void animate_one_round(int round, int verbose_level)
void rotation(int h, int nb_frames, int round, std::ostream &fp)
void draw_frame_E4_surface(int h, int nb_frames, int round, double clipping_radius, std::ostream &fp, int verbose_level)
options for drawing bitmap files
std::string input_csv_file_name
int read_arguments(int argc, std::string *argv, int verbose_level)
int f_secondary_input_csv_file
std::string secondary_input_csv_file_name
options for drawing an incidence structure
draw_incidence_structure_description()
std::string * block_labels
std::string * point_labels
std::string geo_line_width
~draw_incidence_structure_description()
int read_arguments(int argc, std::string *argv, int verbose_level)
options for drawing modulo n
int read_arguments(int argc, std::string *argv, int verbose_level)
std::string cyclotomic_sets_reps
~draw_mod_n_description()
int cyclotomic_sets_thickness
int f_cyclotomic_sets_thickness
options for drawing a projective curve
int animate_transition_nb_of_steps
~draw_projective_curve_description()
int f_animate_with_transition
int read_arguments(int argc, std::string *argv, int verbose_level)
draw_projective_curve_description()
a set of objects that should be drawn with certain povray properties
void init_cylinders(int group_idx, double rad, std::string &properties, int verbose_level)
void init_quintics(int group_idx, std::string &properties, int verbose_level)
void init_planes(int group_idx, std::string &properties, int verbose_level)
void init_cubics(int group_idx, std::string &properties, int verbose_level)
void init_octics(int group_idx, std::string &properties, int verbose_level)
void init_quartics(int group_idx, std::string &properties, int verbose_level)
~drawable_set_of_objects()
void init_labels(int group_idx, double thickness_half, double scale, std::string &properties, int verbose_level)
void init_lines(int group_idx, double rad, std::string &properties, int verbose_level)
void init_quadrics(int group_idx, std::string &properties, int verbose_level)
void init_spheres(int group_idx, double rad, std::string &properties, int verbose_level)
drawable_set_of_objects()
void draw(animate *Anim, std::ostream &ost, int f_group_is_animated, int frame, int verbose_level)
void init_prisms(int group_idx, double thickness, std::string &properties, int verbose_level)
a catch-all class for things related to 2D graphics
void animate_povray(povray_job_description *Povray_job_description, int verbose_level)
void draw_layered_graph_from_file(std::string &fname, layered_graph_draw_options *Opt, int verbose_level)
void draw_bitmap(draw_bitmap_control *C, int verbose_level)
function_polish * smooth_curve_Polish
void do_create_points_on_parabola(double desired_distance, int N, double a, double b, double c, int verbose_level)
void draw_projective(mp_graphics &G, int number, int animate_step, int animate_nb_of_steps, int f_transition, int transition_step, int transition_nb_steps, int f_title_page, int title_page_step, int f_trailer_page, int trailer_page_step)
void do_create_points_on_quartic(double desired_distance, int verbose_level)
void do_smooth_curve(std::string &curve_label, double desired_distance, int N, double t_min, double t_max, double boundary, function_polish_description *FP_descr, int verbose_level)
void draw_projective_curve(draw_projective_curve_description *Descr, layered_graph_draw_options *Opt, int verbose_level)
void tree_draw(tree_draw_options *Tree_draw_options, int verbose_level)
options for drawing an object of type layered_graph
~layered_graph_draw_options()
void(* draw_ending_callback)(graph_theory::layered_graph *LG, mp_graphics *G, int x_max, int y_max, int f_rotated, int dx, int dy)
std::string select_layers
void(* draw_begining_callback)(graph_theory::layered_graph *LG, mp_graphics *G, int x_max, int y_max, int f_rotated, int dx, int dy)
int f_has_draw_begining_callback
void(* draw_vertex_callback)(graph_theory::layered_graph *LG, mp_graphics *G, int layer, int node, int x, int y, int dx, int dy)
int f_has_draw_ending_callback
int read_arguments(int argc, std::string *argv, int verbose_level)
layered_graph_draw_options()
int f_has_draw_vertex_callback
a general 2D graphical output interface (metapost, tikz, postscript)
void st_rotate(int txt_rotate)
void circle_log(int x1, int y1, int rad)
void bezier4(int *Px, int *Py, int i1, int i2, int i3, int i4)
void bezier(int *Px, int *Py, int n)
void domino_draw2(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void domino_draw1(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void begin_figure_mp(int factor_1000)
void fill_polygon7(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7)
void polygon_idx_mp(int *Px, int *Py, int *Idx, int n, int f_cycle)
void comment_log(const char *p)
void sl_udsty(int line_dashing)
void polygon_idx(int *Px, int *Py, int *Idx, int n)
void domino_draw_assignment_South(int Ap, int Aq, int M, int i, int j, int dx, int dy, int rad)
void polygon10(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10)
void draw_density2(int no, int *outline_value, int *outline_number, int outline_sz, int min_value, int max_value, int offset_x, int f_switch_x, int f_title, const char *title, const char *label_x, int f_circle, int circle_at, int circle_rad, int f_mu, int f_sigma, int nb_standard_deviations, int f_v_grid, int v_grid, int f_h_grid, int h_grid)
void output_circle_text_tikz(int x, int y, int idx, int rad, const char *text)
void circle_tikz(int x, int y, int rad)
void comment_mp(const char *p)
void header_mp(std::string &str_date)
void fill_idx(int *Px, int *Py, int *Idx, int n, const char *symbol, int f_cycle)
void domino_draw_assignment_East(int Ap, int Aq, int M, int i, int j, int dx, int dy, int rad)
void text_mp(int x1, int y1, const char *p)
void domino_draw4(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void draw_polar_grid(double r_max, int nb_circles, int nb_rays, double x_stretch)
void aligned_text(int x, int y, const char *alignment, const char *p)
void polygon2(int *Px, int *Py, int i1, int i2)
void plot_curve(int N, int *f_DNE, double *Dx, double *Dy, double dx, double dy)
void coords_min_max(int x, int y)
void dev2user(int &x, int &y)
void frame(double move_out)
void sf_outline(int fill_outline)
void grid_fill_polygon5(grid_frame *F, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
void sl_thickness(int line_thickness)
void domino_draw8(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void grid_polygon5(grid_frame *F, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
void bezier_idx2(int *Px, int *Py, int *Idx, int n, int f_cycle)
void output_circle_text_mp(int x, int y, int idx, const char *text)
void polygon6(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6)
void bezier_idx_log(int *Px, int *Py, int *Idx, int n)
void init(std::string &file_name, layered_graph_draw_options *Draw_options, int verbose_level)
void output_xy_metapost(int x, int y)
void fill_polygon3(int *Px, int *Py, int i1, int i2, int i3)
void fill_polygon11(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11)
void draw_bitmatrix2(int f_dots, int f_partition, int nb_row_parts, int *row_part_first, int nb_col_parts, int *col_part_first, int f_row_grid, int f_col_grid, int f_bitmatrix, data_structures::bitmatrix *Bitmatrix, int *M, int m, int n, int f_has_labels, int *labels)
void polygon9(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9)
void polygon2_arrow_halfway(int *Px, int *Py, int i1, int i2)
void polygon8(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8)
void polygon11(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10, int i11)
void draw_tournament(int x, int y, int dx, int dy, int nb_V, long int *Edges, int nb_E, int radius, int verbose_level)
void integer_4pts(int *Px, int *Py, int p1, int p2, int p3, int p4, const char *align, int a)
void fill_idx_tikz(std::ofstream &fp, int *Px, int *Py, int *Idx, int n, const char *symbol, int f_cycle)
void bezier_idx(int *Px, int *Py, int *Idx, int n)
void draw_axes_and_grid(layered_graph_draw_options *O, double x_min, double x_max, double y_min, double y_max, double dx, double dy, int f_x_axis_at_y_min, int f_y_axis_at_x_min, int x_mod, int y_mod, int x_tick_mod, int y_tick_mod, double x_labels_offset, double y_labels_offset, double x_tick_half_width, double y_tick_half_width, int f_v_lines, int subdivide_v, int f_h_lines, int subdivide_h, int verbose_level)
void polygon2_arrow_halfway_and_label(int *Px, int *Py, int i1, int i2, const char *alignment, const char *txt)
void text_log(int x1, int y1, const char *p)
void domino_draw3(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void polygon7(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7)
void projective_plane_draw_grid2(layered_graph_draw_options *O, int q, int *Table, int nb, int f_point_labels, char **Point_labels, int verbose_level)
void circle_text(int x, int y, int rad, const char *text)
void draw_matrix_in_color(int f_row_grid, int f_col_grid, int *Table, int nb_colors, int m, int n, int *color_scale, int nb_colors_in_scale, int f_has_labels, int *labels)
void polygon(int *Px, int *Py, int n)
void get_alignment_mp(char *align)
void output_x_metapost(int x)
void exit(std::ostream &ost, int verbose_level)
void aligned_text_array(int *Px, int *Py, int idx, const char *alignment, const char *p)
void output_x_tikz(int x)
void sl_ends(int line_beg_style, int line_end_style)
void sf_nofill(int fill_nofill)
void comment(const char *p)
void nice_circle(int x, int y, int rad)
void st_boxed(int txt_boxed)
void domino_draw6(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void st_overwrite(int txt_overwrite)
void sf_color(int fill_color)
void comment_tikz(const char *p)
void text_tikz(int x1, int y1, const char *p)
void bezier2(int *Px, int *Py, int i1, int i2)
void draw_density2_multiple_curves(int no, int **outline_value, int **outline_number, int *outline_sz, int nb_curves, int min_x, int max_x, int min_y, int max_y, int offset_x, int f_switch_x, int f_title, const char *title, const char *label_x, int f_v_grid, int v_grid, int f_h_grid, int h_grid, int f_v_logarithmic, double log_base)
void bezier6(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6)
void grid_polygon2(grid_frame *F, int x0, int y0, int x1, int y1)
void domino_draw5(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void grid_aligned_text(grid_frame *F, int x, int y, const char *alignment, const char *p)
void polygon5(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5)
void draw_graph_on_2D_grid(int x, int y, int dx, int dy, int rad, int nb_V, int *Edges, int nb_E, int *coords_2D, int *Base, int f_point_labels, int point_label_offset, int f_directed)
void user2dev_dist_y(int &y)
void bezier_idx_tikz(int *Px, int *Py, int *Idx, int n, int f_cycle)
void polygon_log(int *Px, int *Py, int n)
void draw_graph_with_distinguished_edge(int x, int y, int dx, int dy, int nb_V, long int *Edges, int nb_E, int distinguished_edge, int verbose_level)
void bezier3(int *Px, int *Py, int i1, int i2, int i3)
void fill_polygon6(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6)
void polygon_idx_tikz(int *Px, int *Py, int *Idx, int n, int f_cycle)
void circle_mp(int x, int y, int rad)
void domino_draw9(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void aligned_text_with_offset(int x, int y, int xoffset, int yoffset, const char *alignment, const char *p)
void color_tikz(std::ofstream &fp, int color)
void output_y_tikz(int y)
void output_xy_tikz(int x, int y)
int get_label(int x, int y)
void polygon_idx_log(int *Px, int *Py, int *Idx, int n)
void fill_polygon9(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9)
void user2dev_dist_x(int &x)
void sf_shape(int fill_shape)
void bezier7(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7)
void grid_polygon4(grid_frame *F, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3)
void grid_fill_polygon4(grid_frame *F, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3)
void output_y_metapost(int y)
void polygon4(int *Px, int *Py, int i1, int i2, int i3, int i4)
void header_log(std::string &str_date)
void fill_polygon4(int *Px, int *Py, int i1, int i2, int i3, int i4)
void domino_draw7(int M, int i, int j, int dx, int dy, int rad, int f_horizontal)
void user2dev(int &x, int &y)
void circle(int x, int y, int rad)
void begin_figure(int factor_1000)
void polygon3(int *Px, int *Py, int i1, int i2, int i3)
void draw_graph_on_multiple_circles(int x, int y, int dx, int dy, int nb_V, int *Edges, int nb_E, int nb_circles)
void fill_polygon10(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10)
void domino_draw_assignment(int *A, int *matching, int *B, int M, int N, int dx, int dy, int rad, int edge, int f_grid, int f_gray, int f_numbers, int f_frame, int f_cost, int cost)
void frame_constant_aspect_ratio(double move_out)
void polygon_idx2(int *Px, int *Py, int *Idx, int n, int f_cycle)
void text_4pts(int *Px, int *Py, int p1, int p2, int p3, int p4, const char *align, const char *str)
void draw_graph(int x, int y, int dx, int dy, int nb_V, long int *Edges, int nb_E, int radius, int verbose_level)
void fill_polygon5(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5)
void fill_polygon8(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8)
void finish(std::ostream &ost, int verbose_level)
void sl_color(int line_color)
void header_tikz(std::string &str_date)
void polygon3D(int *Px, int *Py, int dim, int x0, int y0, int z0, int x1, int y1, int z1)
void fill_idx_mp(int *Px, int *Py, int *Idx, int n, const char *symbol, int f_cycle)
void st_alignment(int txt_halign, int txt_valign)
void bezier_idx_mp(int *Px, int *Py, int *Idx, int n, int f_cycle)
void text(int x, int y, const char *p)
void bezier5(int *Px, int *Py, int i1, int i2, int i3, int i4, int i5)
void sf_interior(int fill_interior)
an individual point on a continuous curve, sampled through parametric_curve
~parametric_curve_point()
std::vector< double > coords
void init(double t, int f_is_valid, double *x, int nb_dimensions, int verbose_level)
a continuous curve sampled by individual points
void init(int nb_dimensions, double desired_distance, double t0, double t1, int(*compute_point_function)(double t, double *pt, void *extra_data, int verbose_level), void *extra_data, double boundary, int N, int verbose_level)
int(* compute_point_function)(double t, double *pt, void *extra_data, int verbose_level)
std::vector< parametric_curve_point > Pts
povray interface for 3D graphics
std::string color_red_wine_transparent
void union_end(std::ostream &ost, double scale_factor, double clipping_radius)
void rotate_111(int h, int nb_frames, std::ostream &fp)
std::string color_orange_transparent
std::string color_white_simple
void beginning(std::ostream &ost, double angle, double *sky, double *location, double *look_at, int f_with_background)
std::string color_orange_no_phong
void bottom_plane(std::ostream &ost)
std::string color_gold_dode
std::string color_gold_transparent
void animation_rotate_xyz(double angle_x_deg, double angle_y_deg, double angle_z_deg, std::ostream &ost)
std::string color_yellow_lemon_transparent
void rotate_around_z_axis(int h, int nb_frames, std::ostream &fp)
void union_start(std::ostream &ost)
std::string color_scarlet
void animation_rotate_around_origin_and_1_1_1(std::ostream &ost)
std::string color_pink_transparent
void ini(std::ostream &ost, const char *fname_pov, int first_frame, int last_frame)
void animation_rotate_around_origin_and_given_vector(double *v, std::ostream &ost)
void union_end_no_clipping(std::ostream &ost, double scale_factor)
std::string color_white_very_transparent
std::string color_yellow_transparent
void union_end_box_clipping(std::ostream &ost, double scale_factor, double box_x, double box_y, double box_z)
void animation_rotate_around_origin_and_given_vector_by_a_given_angle(double *v, double angle_zero_one, std::ostream &ost)
description of a povray job
video_draw_options * Video_draw_options
~povray_job_description()
std::string rounds_as_string
int read_arguments(int argc, std::string *argv, int verbose_level)
a collection of 3D geometry objects
int line_through_two_pts(double *x6, double rad)
void draw_lines_cij(std::ostream &ost)
void draw_lines_cij_with_selection(int *selection, int nb_select, std::ostream &ost)
void clipping_by_cylinder(int line_idx, double r, std::ostream &ost)
int line_extended(double x1, double x2, double x3, double y1, double y2, double y3, double r)
void transform_quartics(scene *S, double *A4, double *A4_inv, int verbose_level)
void draw_planes_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
void draw_points_with_selection(int *selection, int nb_select, double rad, std::string &options, std::ostream &ost)
void add_a_group_of_things(int *Idx, int sz, int verbose_level)
int edge(int pt1, int pt2)
int point(double x1, double x2, double x3)
void clebsch_cubic_lines_b()
void Dodecahedron_points()
void draw_plane(int idx, std::string &options, std::ostream &ost)
double cubic_coords(int idx, int j)
void create_Hilbert_cube(int verbose_level)
int edge_points(int idx, int j)
int read_scene_objects(int argc, std::string *argv, int i0, int verbose_level)
void create_E4_surface(int N, int verbose_level)
int line_pt_and_dir_and_copy_points(double *x6, double rad, int verbose_level)
void draw_quadric_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
void transform_quadrics(scene *S, double *A4, double *A4_inv, int verbose_level)
int line_pt_and_dir(double *x6, double rad, int verbose_level)
void rescale(int first_pt_idx, double rad_desired)
int cubic_Goursat_ABC(double A, double B, double C)
int line(double x1, double x2, double x3, double y1, double y2, double y3)
void clebsch_cubic_lines_cij()
void print_a_line(int line_idx)
int scan1(int argc, std::string *argv, int &i, int verbose_level)
void clebsch_cubic_version2_lines_b()
void create_Eckardt_surface(int N, int verbose_level)
int point_center_of_mass_of_edge(int edge_idx)
int point_as_intersection_of_two_lines(int line1, int line2)
std::vector< std::vector< int > > group_of_things
void map_a_line(int line1, int line2, int plane_idx, int line_idx, double spread, int nb_pts, int *New_line_idx, int &nb_new_lines, int *New_pt_idx, int &nb_new_points, int verbose_level)
double distance_from_origin(int pt)
int plane_from_dual_coordinates(double *x4)
void create_affine_space(int q, int verbose_level)
std::vector< int > animated_groups
int scan2(int argc, std::string *argv, int &i, int verbose_level)
void clebsch_cubic_lines_a()
void create_five_plus_one()
int plane_through_three_points(int pt1, int pt2, int pt3)
int octic(double *coeff_165)
void draw_lines_cij_with_offset(int offset, int number_of_lines, std::ostream &ost)
double label(int idx, std::string &txt)
int triangle(int line1, int line2, int line3, int verbose_level)
int face3(int pt1, int pt2, int pt3)
void points(double *Coords, int nb_points)
void draw_lines_ai_with_selection(int *selection, int nb_select, std::ostream &ost)
void draw_lines_bj_with_selection(int *selection, int nb_select, std::ostream &ost)
void draw_lines_ai(std::ostream &ost)
void create_cube_and_tetrahedra(int verbose_level)
void print_a_face(int face_idx)
void create_Cayleys_nodal_cubic(int verbose_level)
void clebsch_cubic_version2_Hessian()
void draw_octic_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
int point_center_of_mass_of_face(int face_idx)
int affine_space_starting_point
void copy_edges(scene *S, double *A4, double *A4_inv, int verbose_level)
void create_cube(int verbose_level)
void draw_lines_bj_with_offset(int offset, std::ostream &ost)
void copy_faces(scene *S, double *A4, double *A4_inv, int verbose_level)
int face5(int pt1, int pt2, int pt3, int pt4, int pt5)
int line_after_recentering(double x1, double x2, double x3, double y1, double y2, double y3, double rad)
int quadric(double *coeff)
void transform_planes(scene *S, double *A4, double *A4_inv, int verbose_level)
void draw_line_clipped_by_plane(int line_idx, int plane_idx, std::string &options, std::ostream &ost)
int intersect_line_and_line(int line1_idx, int line2_idx, double &lambda, int verbose_level)
int map_a_point(int line1, int line2, int plane_idx, double pt_in[3], int &new_line_idx, int &new_pt_idx, int verbose_level)
double quadric_coords(int idx, int j)
void deformation_of_cubic_lex(int nb_frames, double angle_start, double angle_max, double angle_min, double *coeff1, double *coeff2, int verbose_level)
void transform_points(scene *S, double *A4, double *A4_inv, int verbose_level)
void clebsch_cubic_version2()
int quartic(double *coeff)
void draw_quintic_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
int intersect_line_and_plane(int line_idx, int plane_idx, int &intersection_point_idx, int verbose_level)
void clebsch_cubic_version2_lines_a()
int face4(int pt1, int pt2, int pt3, int pt4)
void draw_line_with_selection(int line_idx, std::string &options, std::ostream &ost)
void Dodecahedron_edges(int first_pt_idx)
std::vector< std::pair< int, std::string > > Labels
void fourD_cube_edges(int first_pt_idx)
double point_coords(int idx, int j)
void draw_face(int idx, double thickness_half, std::string &options, std::ostream &ost)
void transform_quintics(scene *S, double *A4, double *A4_inv, int verbose_level)
void create_twisted_cubic(int N, int verbose_level)
void read_obj_file(std::string &fname, int verbose_level)
std::vector< drawable_set_of_objects > Drawables
double distance_euclidean_point_to_point(int pt1_idx, int pt2_idx)
void create_triangulation_of_cube(int N, int verbose_level)
void draw_edges_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
void draw_quartic_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
double point_distance_from_origin(int pt_idx)
void create_Hilbert_Cohn_Vossen_surface(int verbose_level)
int quintic(double *coeff_56)
int line_through_two_points(int pt1, int pt2, double rad)
void clebsch_cubic_version2_lines_c()
void draw_faces_with_selection(int *selection, int nb_select, double thickness_half, std::string &options, std::ostream &ost)
int face(int *pts, int nb_pts)
void print_point_coords(int idx)
int point_center_of_mass(int *Pt_idx, int nb_pts)
void init(int verbose_level)
void Clebsch_Eckardt_points()
void transform_cubics(scene *S, double *A4, double *A4_inv, int verbose_level)
double line_coords(int idx, int j)
int plane(double x1, double x2, double x3, double a)
scene * transformed_copy(double *A4, double *A4_inv, double rad, int verbose_level)
void draw_cubic_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
int quadric_through_three_lines(int line_idx1, int line_idx2, int line_idx3, int verbose_level)
double distance_between_two_points(int pt1, int pt2)
void create_regulus(int idx, int nb_lines, int verbose_level)
void transform_lines(scene *S, double *A4, double *A4_inv, double rad, int verbose_level)
void draw_lines_bj(std::ostream &ost)
void draw_quadric_clipped_by_plane(int quadric_idx, int plane_idx, std::string &options, std::ostream &ost)
void draw_lines_with_selection(int *selection, int nb_select, std::string &options, std::ostream &ost)
int cubic_in_orbiter_ordering(double *coeff)
void Dodecahedron_planes(int first_pt_idx)
void create_Hilbert_model(int verbose_level)
double point_distance_euclidean(int pt_idx, double *y)
double plane_coords(int idx, int j)
void hypercube(int n, double rad_desired)
double euclidean_distance(int pt1, int pt2)
void create_Clebsch_surface(int verbose_level)
void draw_lines_ai_with_offset(int offset, std::ostream &ost)
void fourD_cube(double rad_desired)
void print_a_plane(int plane_idx)
options for drawing a tree
int read_arguments(int argc, std::string *argv, int verbose_level)
void(* draw_vertex_callback)(tree *T, mp_graphics *G, int *v, int layer, tree_node *N, int x, int y, int dx, int dy)
std::string select_path_text
int restrict_excluded_color
int f_has_draw_vertex_callback
part of the data structure tree
void draw_edges(mp_graphics &G, tree_draw_options *Tree_draw_options, layered_graph_draw_options *Opt, int f_has_parent, int parent_x, int parent_y, int max_depth, tree *T, int verbose_level)
void draw_sideways(mp_graphics &G, int f_circletext, int f_i, int f_has_parent, int parent_x, int parent_y, int max_depth, int f_edge_labels)
void get_values(int *v, int verbose_level)
int find_node(int &DFS_rk, int *path, int sz, int verbose_level)
void place_xy(int left, int right, int ymax, int max_depth)
int calc_y_coordinate(int ymax, int l, int max_depth)
void place_on_circle(int xmax, int ymax, int max_depth)
void get_coordinates_and_width(int &idx, int *coord_xyw)
void draw_vertices(mp_graphics &G, tree_draw_options *Tree_draw_options, layered_graph_draw_options *Opt, int f_has_parent, int parent_x, int parent_y, int max_depth, tree *T, int verbose_level)
void add_node(int l, int depth, int *path, int color, std::string &label, int verbose_level)
int find_node_and_path(std::vector< int > &Rk, int *path, int sz, int verbose_level)
void compute_DFS_rank(int &rk)
void init(int depth, tree_node *parent, int f_value, int value, int f_has_color, int color, std::string &label, int verbose_level)
void get_coordinates(int &idx, int *coord_xy)
a data structure for trees
void circle_center_and_radii(int xmax, int ymax, int max_depth, int &x0, int &y0, int *&rad)
void compute_DFS_ranks(int &nb_nodes, int verbose_level)
void draw(std::string &fname, graphics::tree_draw_options *Tree_draw_options, layered_graph_draw_options *Opt, int verbose_level)
void draw_preprocess(std::string &fname, graphics::tree_draw_options *Tree_draw_options, layered_graph_draw_options *Opt, int verbose_level)
void init(graphics::tree_draw_options *Tree_draw_options, int xmax, int ymax, int verbose_level)
options for povray videos
int latex_label_start[1000]
double zoom_clipping_start[1000]
int no_background_round[1000]
std::string round_text_text[1000]
int latex_label_sustain[1000]
double zoom_clipping_end[1000]
int round_text_sustain[1000]
int latex_f_label_has_been_prepared[1000]
std::string zoom_sequence_text[1000]
double camera_look_at[1000 *3]
int latex_label_round[1000]
double global_picture_scale
double picture_scale[1000]
std::string label_gravity[1000]
std::string latex_label_text[1000]
int read_arguments(int argc, std::string *argv, int verbose_level)
double camera_sky[1000 *3]
std::string latex_label_gravity[1000]
int nb_frames_value[1000]
double clipping_value[1000]
std::string latex_fname_base[1000]
int f_has_global_picture_scale
std::string picture_fname[1000]
double camera_location[1000 *3]
int zoom_sequence_round[1000]
int nb_frames_round[1000]
int round_text_round[1000]
double rotation_axis_custom[3]
std::string latex_extras_for_praeamble[1000]
double pan_center[1000 *3]
int no_bottom_plane_round[1000]
std::string label_text[1000]
std::string picture_options[1000]
the orbiter library for the classification of combinatorial objects
a class to help with drawing elements in a 2D grid fashion