--- 1,52c1,42 ----------------------- < bool_t hr3_pmap_is_affine(hr3_pmap_t *M); < bool_t hr3_pmap_is_identity(hr3_pmap_t *M); < double hr3_dist(hr3_point_t *a, hr3_point_t *b); < double hr3_dist_sqr(hr3_point_t *a, hr3_point_t *b); < double hr3_pmap_aff_discr_sqr(hr3_pmap_t *M, hr3_pmap_t *N); < double hr3_pmap_deform_sqr(r3_t h[], hr3_pmap_t *M); < double hr3_pmap_diff_sqr(hr3_pmap_t *M, hr3_pmap_t *N); < double hr3_pmap_mismatch_sqr(hr3_pmap_t *M, int32_t np, r3_t p1[], r3_t p2[]); < double hr3_pt_pt_diff(hr3_point_t *p, hr3_point_t *q); < hr3_line_t hr3_line_from_two_planes(hr3_plane_t *P, hr3_plane_t *Q); < hr3_line_t hr3_line_from_two_points(hr3_point_t *p, hr3_point_t *q); < hr3_plane_t hr3_plane_from_line_and_point(hr3_line_t *L, hr3_point_t *r); < hr3_plane_t hr3_plane_from_three_points(hr3_point_t *p, hr3_point_t *q, hr3_point_t *r); < hr3_plane_t hr3_plane_throw(void); < hr3_plane_t hr3_pmap_inv_plane(hr3_plane_t *P, hr3_pmap_t *M); < hr3_plane_t hr3_pmap_plane(hr3_plane_t *P, hr3_pmap_t *M); < hr3_pmap_t hr3_pmap_aff_from_four_points(r3_t *o, r3_t *p, r3_t *q, r3_t *r); < hr3_pmap_t hr3_pmap_aff_from_mat_and_disp(r3x3_t *E, r3_t *d); < hr3_pmap_t hr3_pmap_compose(hr3_pmap_t *M, hr3_pmap_t *N); < hr3_pmap_t hr3_pmap_from_five_points(hr3_point_t *p, hr3_point_t *q, hr3_point_t *r, hr3_point_t *s, hr3_point_t *u); < hr3_pmap_t hr3_pmap_identity(void); < hr3_pmap_t hr3_pmap_inv(hr3_pmap_t *M); < hr3_pmap_t hr3_pmap_inv_compose(hr3_pmap_t *M, hr3_pmap_t *N); < hr3_pmap_t hr3_pmap_persp(hr3_point_t *obs, hr3_point_t *foc, double rad, hr3_point_t *upp); < hr3_pmap_t hr3_pmap_scaling(r3_t *scale); < hr3_pmap_t hr3_pmap_translation(r3_t *v); < hr3_pmap_t hr3_pmap_u_v_rotation(r3_t *u, r3_t *v); < hr3_point_t hr3_from_r3(r3_t *c); < hr3_point_t hr3_pmap_inv_point(hr3_point_t *p, hr3_pmap_t *M); < hr3_point_t hr3_pmap_point(hr3_point_t *p, hr3_pmap_t *M); < hr3_point_t hr3_point_at_infinity(r3_t *dir); < hr3_point_t hr3_point_from_line_and_plane(hr3_line_t *L, hr3_plane_t *R); < hr3_point_t hr3_point_from_three_planes(hr3_plane_t *P, hr3_plane_t *Q, hr3_plane_t *R); < hr3_point_t hr3_point_mix(double pt, hr3_point_t *p, double qt, hr3_point_t *q); < hr3_point_t hr3_point_throw(void); < r3_t hr3_line_dir(hr3_line_t *L); < r3_t hr3_plane_normal(hr3_plane_t *P); < r3_t hr3_pmap_inv_r3_point(r3_t *p, hr3_pmap_t *M); < r3_t hr3_pmap_r3_point(r3_t *p, hr3_pmap_t *M); < r3_t hr3_point_point_dir(hr3_point_t *frm, hr3_point_t *tto); < r3_t r3_from_hr3(hr3_point_t *p); < sign_t hr3_orient(hr3_point_t *p, hr3_point_t *q, hr3_point_t *r, hr3_point_t *s); < sign_t hr3_side(hr3_point_t *p, hr3_plane_t *Q); < typedef struct hr3_line_t { r6_t k; } hr3_line_t; /* {k.c[0..5]} are Plücker coords {[wx,wy,xy,wz,xz,yz]} */ < typedef struct hr3_plane_t { r4_t f; } hr3_plane_t; /* {f.c[0..3]} are plane's coeffs {}. */ < typedef struct hr3_pmap_t { r4x4_t dir; r4x4_t inv; } hr3_pmap_t; < typedef struct hr3_point_t { r4_t c; } hr3_point_t; /* {c.c[0..3]} are point's coords {[w,x,y,z]}. */ < void hr3_L_inf_normalize_line(hr3_line_t *L); < void hr3_L_inf_normalize_plane(hr3_plane_t *P); < void hr3_L_inf_normalize_point(hr3_point_t *p); < void hr3_line_print (FILE *f, char *pre, hr3_line_t *L, char *fmt, char *suf); < void hr3_plane_print (FILE *f, char *pre, hr3_plane_t *P, char *fmt, char *suf); > bool_t hr3_pmap_is_identity(hr3_pmap_t *M) > double hr3_dist(hr3_point_t *a, hr3_point_t *b) > double hr3_dist_sqr(hr3_point_t *a, hr3_point_t *b) > double hr3_pt_pt_diff(hr3_point_t *p, hr3_point_t *q) > hr3_line_t hr3_line_from_two_planes(hr3_plane_t *P, hr3_plane_t *Q) > hr3_line_t hr3_line_from_two_points(hr3_point_t *p, hr3_point_t *q) > hr3_plane_t hr3_plane_from_line_and_point(hr3_line_t *L, hr3_point_t *r) > hr3_plane_t hr3_plane_from_three_points(hr3_point_t *p, hr3_point_t *q, hr3_point_t *r) > hr3_plane_t hr3_plane_throw(void) > hr3_plane_t hr3_pmap_inv_plane(hr3_plane_t *P, hr3_pmap_t *M) > hr3_plane_t hr3_pmap_plane(hr3_plane_t *P, hr3_pmap_t *M) > hr3_pmap_t hr3_pmap_aff_from_four_points(r3_t *o, r3_t *p, r3_t *q, r3_t *r) > hr3_pmap_t hr3_pmap_aff_from_mat_and_disp(r3x3_t *E, r3_t *d) > hr3_pmap_t hr3_pmap_compose(hr3_pmap_t *M, hr3_pmap_t *N) > hr3_pmap_t hr3_pmap_from_five_points(hr3_point_t *p, hr3_point_t *q, hr3_point_t *r, hr3_point_t *s, hr3_point_t *u) > hr3_pmap_t hr3_pmap_inv(hr3_pmap_t *M) > hr3_pmap_t hr3_pmap_inv_compose(hr3_pmap_t *M, hr3_pmap_t *N) > hr3_pmap_t hr3_pmap_persp(hr3_point_t *obs, hr3_point_t *foc, double rad, hr3_point_t *upp) > hr3_pmap_t hr3_pmap_scaling(r3_t *scale) > hr3_pmap_t hr3_pmap_translation(r3_t *v) > hr3_pmap_t hr3_pmap_u_v_rotation(r3_t *u, r3_t *v) > hr3_point_t hr3_from_r3(r3_t *c) > hr3_point_t hr3_pmap_inv_point(hr3_point_t *p, hr3_pmap_t *M) > hr3_point_t hr3_pmap_point(hr3_point_t *p, hr3_pmap_t *M) > hr3_point_t hr3_point_at_infinity(r3_t *dir) > hr3_point_t hr3_point_from_line_and_plane(hr3_line_t *L, hr3_plane_t *R) > hr3_point_t hr3_point_from_three_planes(hr3_plane_t *P, hr3_plane_t *Q, hr3_plane_t *R) > hr3_point_t hr3_point_mix(double pt, hr3_point_t *p, double qt, hr3_point_t *q) > hr3_point_t hr3_point_throw(void) > r3_t hr3_line_dir(hr3_line_t *L) > r3_t hr3_plane_normal(hr3_plane_t *P) > r3_t hr3_pmap_inv_r3_point(r3_t *p, hr3_pmap_t *M) > r3_t hr3_pmap_r3_point(r3_t *p, hr3_pmap_t *M) > r3_t hr3_point_point_dir(hr3_point_t *frm, hr3_point_t *tto) > r3_t r3_from_hr3(hr3_point_t *p) > sign_t hr3_orient(hr3_point_t *p, hr3_point_t *q, hr3_point_t *r, hr3_point_t *s) > sign_t hr3_side(hr3_point_t *p, hr3_plane_t *Q) > void hr3_L_inf_normalize_line(hr3_line_t *L) > void hr3_L_inf_normalize_plane(hr3_plane_t *P) > void hr3_L_inf_normalize_point(hr3_point_t *p) > void hr3_line_print (FILE *f, char *pre, hr3_line_t *L, char *fmt, char *suf) > void hr3_plane_print (FILE *f, char *pre, hr3_plane_t *P, char *fmt, char *suf) --- 54,55c44,47 ----------------------- < void hr3_pmap_print (FILE *wr, hr3_pmap_t *M, char *pref, char *suff); < void hr3_point_print (FILE *f, char *pre, hr3_point_t *a, char *fmt, char *suf); > void hr3_pmap_print (FILE *wr, hr3_pmap_t *M, char *pref, char *suff) > void hr3_point_print (FILE *f, char *pre, hr3_point_t *p, char *fmt, char *suf) > void hr3_point_to_r3_nan(hr3_point_t *p, r3_t *c) > void hr3_point_to_r3_nan(hr3_point_t *p, r3_t *c);