11#ifndef ORBITER_SRC_LIB_FOUNDATIONS_GLOBALS_GLOBALS_H_
12#define ORBITER_SRC_LIB_FOUNDATIONS_GLOBALS_GLOBALS_H_
18namespace layer1_foundations {
69 std::vector<std::string>
code;
94 std::vector<std::pair<std::string, double> >
Constants;
99 std::vector<function_command>
Code;
113 double *variable_values,
114 double *output_values,
137 double c2,
double *v2,
double *v3,
int len);
139 double c1,
double *v1,
140 double c2,
double *v2,
141 double c3,
double *v3,
143 void vec_add(
double *a,
double *b,
double *c,
int len);
144 void vec_subtract(
double *a,
double *b,
double *c,
int len);
147 int *base_cols,
int f_complete,
151 int *base_cols,
int nb_base_cols,
152 int &kernel_m,
int &kernel_n,
157 int Null_space(
double *M,
int m,
int n,
double *K,
164 double *abc3,
double *angles3,
double *T3,
167 double *abc3,
double *angles3,
double *T3,
169 void mult_matrix(
double *v,
double *R,
double *vR);
171 double *A,
double *B,
double *C,
int m,
int n,
int o);
174 void make_Rz(
double *R,
double phi);
175 void make_Ry(
double *R,
double psi);
176 void make_Rx(
double *R,
double chi);
177 double atan_xy(
double x,
double y);
185 int *Pt_idx,
int nb_pts,
double *c);
187 double *n,
double &d);
190 double *A,
double *Av,
int verbose_level);
196 double *A4_inv,
int verbose_level);
198 double *coeff_in,
double *coeff_out,
199 double *A4_inv,
int verbose_level);
201 double *coeff_in,
double *coeff_out,
202 double *A4_inv,
int verbose_level);
204 double *A,
double *Av,
int verbose_level);
210 double *pt1_out,
double *pt2_out,
double r,
int verbose_level);
212 double *pt1_out,
double *pt2_out,
double r,
int verbose_level);
214 void eigenvalues(
double *A,
int n,
double *lambda,
int verbose_level);
216 int n,
double *lambda,
int verbose_level);
218 void vec_copy(
double *from,
double *to,
int len);
219 void vec_swap(
double *from,
double *to,
int len);
221 void vec_scan(
const char *s,
double *&v,
int &len);
222 void vec_scan(std::string &s,
double *&v,
int &len);
231 int N,
double xmin,
double ymin,
double xmax,
double ymax,
234 double *a,
double *b,
double *c,
int l1,
int l2,
int pt);
236 double a2,
double b2,
double c2,
237 double &x,
double &y);
239 double *a,
double *b,
double *c,
240 int pt1,
int pt2,
int line_idx);
242 double pt2_x,
double pt2_y,
double &a,
double &b,
double &c);
244 double pt1_x,
double pt1_y,
245 double pt2_x,
double pt2_y,
246 double &x1,
double &y1,
double &x2,
double &y2);
248 double a,
double b,
double c,
249 double &x1,
double &y1,
double &x2,
double &y2);
251 int pt0,
int pt1,
int pt2,
double alpha,
int new_pt);
253 double angle_in_degree,
double rad);
254 void affine_pt1(
int *Px,
int *Py,
int p0,
int p1,
int p2,
256 void affine_pt2(
int *Px,
int *Py,
int p0,
int p1,
int p1b,
257 double f1,
int p2,
int p2b,
double f2,
int p3);
264 void on_circle_int(
int *Px,
int *Py,
int idx,
int angle_in_degree,
int rad);
266 double bernoulli(
double p,
int n,
int k);
268 double *triangle_points,
double &x,
double &y,
271 double *line1_pt1_coords,
double *line1_pt2_coords,
272 double *line2_pt1_coords,
double *line2_pt2_coords,
277 double *line1_pt1_coords,
double *line1_pt2_coords,
278 double *line2_pt1_coords,
double *line2_pt2_coords,
279 double *pt_in,
double *pt_out,
280 double *Cubic_coords_povray_ordering,
281 int line1_idx,
int line2_idx,
283 void project_to_disc(
int f_projection_on,
int f_transition,
int step,
int nb_steps,
284 double rad,
double height,
double x,
double y,
double &xp,
double &yp);
an individual command which is part of a function expressed in reverse polish notation
void init_with_argument(int type, int arg)
void init_push_immediate_constant(double val)
void init_simple(int type)
description of a function in reverse polish notation from the command line
function_polish_description()
~function_polish_description()
std::vector< std::string > const_names
std::vector< std::string > variable_names
std::vector< std::string > code
int read_arguments(int argc, std::string *argv, int verbose_level)
std::vector< std::string > const_values
a set of functions in reverse polish notation
function_polish_description * Descr
void print_code(int i0, int len, int verbose_level)
std::vector< std::pair< std::string, double > > Constants
std::vector< std::string > Variables
void init(function_polish_description *Descr, int verbose_level)
void evaluate(double *variable_values, double *output_values, int verbose_level)
std::vector< function_command > Code
void print_code_complete(int verbose_level)
numerical functions, mostly concerned with double
int triangular_prism(double *P1, double *P2, double *P3, double *abc3, double *angles3, double *T3, int verbose_level)
void print_matrix(double *R)
void vec_add(double *a, double *b, double *c, int len)
double atan_xy(double x, double y)
void vec_linear_combination3(double c1, double *v1, double c2, double *v2, double c3, double *v3, double *w, int len)
void orthogonal_transformation_from_point_to_basis_vector(double *from, double *A, double *Av, int verbose_level)
int intersect_line_and_line(double *line1_pt1_coords, double *line1_pt2_coords, double *line2_pt1_coords, double *line2_pt2_coords, double &lambda, double *pt_coords, int verbose_level)
double distance_euclidean(double *x, double *y, int len)
void make_Rx(double *R, double chi)
void make_Rz(double *R, double phi)
void make_Ry(double *R, double psi)
void vec_scalar_multiple(double *a, double lambda, int len)
void plane_through_three_points(double *p1, double *p2, double *p3, double *n, double &d)
void vec_linear_combination1(double c1, double *v1, double *w, int len)
int Gauss_elimination(double *A, int m, int n, int *base_cols, int f_complete, int verbose_level)
void substitute_quadric_linear(double *coeff_in, double *coeff_out, double *A4_inv, int verbose_level)
void eigenvectors(double *A, double *Basis, int n, double *lambda, int verbose_level)
void get_kernel(double *M, int m, int n, int *base_cols, int nb_base_cols, int &kernel_m, int &kernel_n, double *kernel)
void print_system(double *A, int m, int n)
void intersect_circle_line(double rad, double x0, double y0, double a, double b, double c, double &x1, double &y1, double &x2, double &y2)
void vec_linear_combination(double c1, double *v1, double c2, double *v2, double *v3, int len)
double distance_from_origin(double x1, double x2, double x3)
void affine_combination(double *X, double *Y, int pt0, int pt1, int pt2, double alpha, int new_pt)
void vec_scan_from_stream(std::istream &is, double *&v, int &len)
void vec_print(double *a, int len)
void mult_matrix(double *v, double *R, double *vR)
int general_prism(double *Pts, int nb_pts, double *Pts_xy, double *abc3, double *angles3, double *T3, int verbose_level)
void eigenvalues(double *A, int n, double *lambda, int verbose_level)
void transpose_matrix_nxn(double *A, double *At, int n)
void local_coordinates_wrt_triangle(double *pt, double *triangle_points, double &x, double &y, int verbose_level)
void vec_scan(const char *s, double *&v, int &len)
void transform_llur_double(double *in, double *out, double &x, double &y)
void project_to_disc(int f_projection_on, int f_transition, int step, int nb_steps, double rad, double height, double x, double y, double &xp, double &yp)
void on_circle_int(int *Px, int *Py, int idx, int angle_in_degree, int rad)
double bernoulli(double p, int n, int k)
void make_unit_vector(double *v, int len)
double cos_grad(double phi)
void mult_matrix_4x4(double *v, double *R, double *vR)
int Null_space(double *M, int m, int n, double *K, int verbose_level)
void cross_product(double *u, double *v, double *n)
double atan_grad(double x)
void adjust_coordinates_double(double *Px, double *Py, int *Qx, int *Qy, int N, double xmin, double ymin, double xmax, double ymax, int verbose_level)
int line_centered(double *pt1_in, double *pt2_in, double *pt1_out, double *pt2_out, double r, int verbose_level)
void output_double(double a, std::ostream &ost)
void affine_pt1(int *Px, int *Py, int p0, int p1, int p2, double f1, int p3)
void make_transform_t_varphi_u_double(int n, double *varphi, double *u, double *A, double *Av, int verbose_level)
double power_of(double x, int n)
void intersection_of_lines(double a1, double b1, double c1, double a2, double b2, double c2, double &x, double &y)
void vec_subtract(double *a, double *b, double *c, int len)
void transform_llur(int *in, int *out, int &x, int &y)
int line_centered_tolerant(double *pt1_in, double *pt2_in, double *pt1_out, double *pt2_out, double r, int verbose_level)
void center_of_mass(double *Pts, int len, int *Pt_idx, int nb_pts, double *c)
void transform_dist(int *in, int *out, int &x, int &y)
void Line_through_points(double *X, double *Y, double *a, double *b, double *c, int pt1, int pt2, int line_idx)
void affine_pt2(int *Px, int *Py, int p0, int p1, int p1b, double f1, int p2, int p2b, double f2, int p3)
void clebsch_map_up(double *line1_pt1_coords, double *line1_pt2_coords, double *line2_pt1_coords, double *line2_pt2_coords, double *pt_in, double *pt_out, double *Cubic_coords_povray_ordering, int line1_idx, int line2_idx, int verbose_level)
void substitute_quartic_linear_using_povray_ordering(double *coeff_in, double *coeff_out, double *A4_inv, int verbose_level)
double rad2deg(double phi)
void Intersection_of_lines(double *X, double *Y, double *a, double *b, double *c, int l1, int l2, int pt)
void transform_dist_x(int *in, int *out, int &x)
void intersect_circle_line_through(double rad, double x0, double y0, double pt1_x, double pt1_y, double pt2_x, double pt2_y, double &x1, double &y1, double &x2, double &y2)
void vec_print(std::ostream &ost, double *v, int len)
void transpose_matrix_4x4(double *A, double *At)
void vec_swap(double *from, double *to, int len)
void substitute_cubic_linear_using_povray_ordering(double *coeff_in, double *coeff_out, double *A4_inv, int verbose_level)
void vec_normalize_from_back(double *v, int len)
double sin_grad(double phi)
void vec_normalize_to_minus_one_from_back(double *v, int len)
double norm_of_vector_2D(int x1, int x2, int y1, int y2)
void line_through_points(double pt1_x, double pt1_y, double pt2_x, double pt2_y, double &a, double &b, double &c)
void mult_matrix_matrix(double *A, double *B, double *C, int m, int n, int o)
double dot_product(double *u, double *v, int len)
void transform_dist_y(int *in, int *out, int &y)
double tan_grad(double phi)
void vec_copy(double *from, double *to, int len)
void on_circle_double(double *Px, double *Py, int idx, double angle_in_degree, double rad)
void matrix_double_inverse(double *A, double *Av, int n, int verbose_level)
the orbiter library for the classification of combinatorial objects