#define MAX(a,b) ( (a)>(b)? (a) : (b) ) #define MAX_LEN 1048576 #define d2r (double)(M_PI/180) typedef int bool; #define TRUE 1 #define FALSE 0 #define max 100000 typedef struct { double x,y,z; } point; typedef struct { double x,y,z, c; } halfspace; typedef struct { halfspace* halfspacelist; int nh; } convex; typedef struct { convex* convexlist; int nc; } region; typedef struct mask { int nbr_convex; int *nbr_halfspaces; region* regions; } Mask; /* coord conversion */ void radec2xyz(double ra, double dec, double *x, double *y, double *z); /* methods */ point* point_new(double ra, double dec); point* point_set(point *p, double ra, double dec); void fprint_point(FILE *stream, point *p); halfspace* halfspace_new(double x, double y, double z, bool norm, double c); void halfspace_set(halfspace *h, double x, double y, double z, bool norm, double c); void fprint_halfspace(FILE *stream, halfspace *h); bool halfspace_covers(halfspace* h, point* p, double tol); convex* convex_new(int num); void convex_set(convex *c, int num); void convex_free(convex *c); bool convex_covers(convex* c, point* p, double tol); region* region_new(int num); void region_free(region *r); Mask read_mask(char *mask_name); void flag_objects(char *file, Mask mask, int ra_col, int dec_col); void delete_mask(Mask mask);