00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef FORS_PATTERN_H
00029 #define FORS_PATTERN_H
00030
00031 #include <fors_point.h>
00032
00033 #include <stdbool.h>
00034
00035 typedef struct _fors_pattern fors_pattern;
00036
00037 #undef LIST_ELEM
00038 #define LIST_ELEM fors_pattern
00039 #include <list.h>
00040
00041 fors_pattern *fors_pattern_new(const fors_point *ref,
00042 const fors_point *p1,
00043 const fors_point *p2,
00044 double sigma);
00045
00046 fors_pattern_list *
00047 fors_pattern_new_from_points(struct fors_point_list *points,
00048 double tolerance,
00049 double sigma);
00050
00051 void
00052 fors_pattern_delete(fors_pattern **p);
00053
00054 void fors_pattern_print(const fors_pattern *p);
00055
00056 const fors_point *
00057 fors_pattern_get_ref(const fors_pattern *p);
00058
00059 double fors_pattern_get_scale(const fors_pattern *p,
00060 const fors_pattern *q);
00061 double fors_pattern_get_angle(const fors_pattern *p,
00062 const fors_pattern *q);
00063
00064 void fors_pattern_get_shift(const fors_pattern *p,
00065 const fors_pattern *q,
00066 double *shift_x,
00067 double *shift_y);
00068
00069 double fors_pattern_distsq(const fors_pattern *p,
00070 const fors_pattern *q);
00071
00072 double fors_pattern_dist_per_error(const fors_pattern *p,
00073 const fors_pattern *q);
00074
00075 void fors_pattern_error(const fors_pattern *p,
00076 double *dr2,
00077 double *dtheta);
00078
00079 #endif