34#include <casu_utils.h>
38 int status,retval,i,nm;
39 cpl_table *progtab,*temptab,*outtab;
40 float *xptr,*yptr,xoff,yoff;
41 float offx[20] = {0.10,-0.07,0.03,0.21,-0.15,-0.02,-0.08,0.11,0.13,-0.16,
42 0.01,-0.18,0.20,-0.14,-0.10,0.08,0.12,-0.05,0.04,-0.06};
43 float offy[20] = {0.01,-0.18,0.20,-0.14,-0.10,0.08,0.12,-0.05,0.04,-0.06,
44 0.10,-0.07,0.03,0.21,-0.15,-0.02,-0.08,0.11,0.13,-0.16};
47 cpl_test_init(PACKAGE_BUGREPORT,CPL_MSG_WARNING);
51 progtab = cpl_table_new(20);
52 cpl_table_new_column(progtab,
"X_coordinate",CPL_TYPE_FLOAT);
53 cpl_table_new_column(progtab,
"Y_coordinate",CPL_TYPE_FLOAT);
54 xptr = cpl_table_get_data_float(progtab,
"X_coordinate");
55 yptr = cpl_table_get_data_float(progtab,
"Y_coordinate");
56 for (i = 0; i < 20; i++) {
57 xptr[i] = (float)(i*(i+1));
58 yptr[i] = (float)(i*(i-1));
60 temptab = cpl_table_new(20);
61 cpl_table_new_column(temptab,
"X_coordinate",CPL_TYPE_FLOAT);
62 cpl_table_new_column(temptab,
"Y_coordinate",CPL_TYPE_FLOAT);
63 xptr = cpl_table_get_data_float(temptab,
"X_coordinate");
64 yptr = cpl_table_get_data_float(temptab,
"Y_coordinate");
65 for (i = 0; i < 20; i++) {
66 xptr[i] = (float)(i*(i+1)) + 50.0 + offx[i];
67 yptr[i] = (float)(i*(i-1)) - 40.0 + offy[i];
73 retval =
casu_matchxy(progtab,temptab,10,&xoff,&yoff,&nm,&outtab,&status);
74 cpl_test_eq(status,CASU_FATAL);
75 cpl_test_eq(status,retval);
76 cpl_test_eq(xoff,0.0);
77 cpl_test_eq(yoff,0.0);
79 cpl_test_null(outtab);
84 retval =
casu_matchxy(progtab,temptab,20,&xoff,&yoff,&nm,&outtab,&status);
85 cpl_test_eq(status,CASU_OK);
86 cpl_test_eq(status,retval);
87 cpl_test_rel(xoff,50.0,0.01);
88 cpl_test_rel(yoff,-40.0,0.01);
90 cpl_test_nonnull(outtab);
91 cpl_test_eq(cpl_table_get_ncol(outtab),4);
92 cpl_table_delete(outtab);
97 cpl_table_new_column(progtab,
"RA",CPL_TYPE_FLOAT);
98 cpl_table_new_column(progtab,
"DEC",CPL_TYPE_FLOAT);
99 cpl_table_new_column(progtab,
"FLUX1",CPL_TYPE_FLOAT);
100 cpl_table_new_column(progtab,
"FLUX2",CPL_TYPE_FLOAT);
101 cpl_table_name_column(temptab,
"X_coordinate",
"xpredict");
102 cpl_table_name_column(temptab,
"Y_coordinate",
"ypredict");
105 cpl_test_eq(status,CASU_FATAL);
106 cpl_test_eq(status,retval);
107 cpl_test_null(outtab);
110 cpl_test_eq(status,CASU_OK);
111 cpl_test_eq(status,retval);
112 cpl_test_nonnull(outtab);
113 cpl_test_eq(cpl_table_get_ncol(outtab),6);
117 cpl_table_delete(progtab);
118 cpl_table_delete(temptab);
119 cpl_table_delete(outtab);
120 return(cpl_test_end(0));
int casu_matchstds(cpl_table *objtab, cpl_table *stdstab, float srad, cpl_table **outtab, int *status)
Match object and standard star tables by their xy coordinates.
int casu_matchxy(cpl_table *progtab, cpl_table *template, float srad, float *xoffset, float *yoffset, int *nm, cpl_table **outtab, int *status)
Match two lists of x,y coordinates from two tables to find the cartesian offset between them.