X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=include%2Fir.h;fp=include%2Fir.h;h=cae88b6f645ec42aa40ed0e5f53aef31b82e4d3c;hb=2f71224f911d19adaa941d7553a9462a1aef7293;hp=cd801f3f8ff921472a5fa64398eadbb42bd16699;hpb=e5900ffc67707d6a27ec198ed6c1628e7331d2f5;p=ctsim.git diff --git a/include/ir.h b/include/ir.h index cd801f3..cae88b6 100644 --- a/include/ir.h +++ b/include/ir.h @@ -2,8 +2,11 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ir.h,v 1.9 2000/05/04 04:29:18 kevin Exp $ +** $Id: ir.h,v 1.10 2000/05/04 18:16:34 kevin Exp $ ** $Log: ir.h,v $ +** Revision 1.10 2000/05/04 18:16:34 kevin +** renamed filter definitions +** ** Revision 1.9 2000/05/04 04:29:18 kevin ** *** empty log message *** ** @@ -103,30 +106,30 @@ struct image_st { }; struct phmelm_st { - int type; /* phmelm type (box, ellipse, etc) */ - double atten; /* X-ray attenuation coefficient */ - double cx,cy; /* center of phmelm */ - double u,v; /* size of phmelm */ - double rot; /* phmelm rotation angle (in radians) */ - double *x, *y; /* ptr to array of points in obj world coord */ - int pts; /* number of points in outline arrays */ + int type; /* phmelm type (box, ellipse, etc) */ + double atten; /* X-ray attenuation coefficient */ + double cx,cy; /* center of phmelm */ + double u,v; /* size of phmelm */ + double rot; /* phmelm rotation angle (in radians) */ + double *x, *y; /* ptr to array of points in obj world coord */ + int pts; /* number of points in outline arrays */ double xmin, xmax, ymin, ymax; /* phmelm limits */ - double radius; /* " */ - struct { /* transform matrices */ - GRFMTX_2D p_to_o; /* map from phantom to standard phmelm coords */ - GRFMTX_2D o_to_p; /* map from std phmelm coords to phantom coords */ + double radius; /* " */ + struct { /* transform matrices */ + GRFMTX_2D p_to_o; /* map from phantom to standard phmelm coords */ + GRFMTX_2D o_to_p; /* map from std phmelm coords to phantom coords */ } xform; - struct phmelm_st *next; /* pointer to next phmelm in phantom */ + struct phmelm_st *next; /* pointer to next phmelm in phantom */ }; typedef struct phmelm_st PHMELM; -struct phm_st { /* Phantom structure */ - PHMELM *phmelm_list; /* phmelm linked-list */ +struct phm_st { /* Phantom structure */ + PHMELM *phmelm_list; /* phmelm linked-list */ int type; - int n_pelm; /* number of phmelms in phantom */ + int n_pelm; /* number of phmelms in phantom */ double xmin, xmax, ymin, ymax; /* extent of phmelms in phmelm coordinates */ - double radius; /* " " */ + double radius; /* " " */ }; typedef struct image_st IMAGE; @@ -156,7 +159,7 @@ struct detarray_st { #define DETECTOR_EQUIANGLE 2 #define DETECTOR_EQUILINEAR 3 -struct detect_st { +struct detector_st { int geometry; /* Geometry of detectory */ int ndet; /* Number of detectors in array */ int nview; /* Number of rotated views */ @@ -179,6 +182,7 @@ struct raysum_st { int fd; int file_mode; int header_size; + int geometry; struct detarray_st **view; /* Pointer to array of detarray_st pointers */ char remark[LENREMARK]; /* description of raysum data */ @@ -195,7 +199,7 @@ struct raysum_st { }; typedef struct detarray_st DETARRAY; -typedef struct detect_st DETECTOR; +typedef struct detector_st DETECTOR; typedef struct raysum_st RAYSUM; /*----------------------------------------------------------------------*/ @@ -218,18 +222,16 @@ typedef struct raysum_st RAYSUM; /* Codes for Filter types */ -#define W_BANDLIMIT 1 /* filter types for genfilter() */ -#define W_SINC 2 -#define W_G_HAMMING 3 -#define W_COSINE 4 -#define W_TRIANGLE 5 - -#define W_A_BANDLIMIT 11 /* filters times abs() of function */ -#define W_A_SINC 12 -#define W_AG_HAMMING 13 -#define W_A_COSINE 14 - -#define W_SHEPP 21 +#define FILTER_BANDLIMIT 1 /* filter types for genfilter() */ +#define FILTER_SINC 2 +#define FILTER_G_HAMMING 3 +#define FILTER_COSINE 4 +#define FILTER_TRIANGLE 5 +#define FILTER_ABS_BANDLIMIT 11 /* filters times abs() of function */ +#define FILTER_ABS_SINC 12 +#define FILTER_ABS_G_HAMMING 13 +#define FILTER_ABS_COSINE 14 +#define FILTER_SHEPP 21 /* function domains */ @@ -400,10 +402,6 @@ int bspline(int samples, int zoom_factor, int spline_order, double input[], doub /* convolve.c */ double convolve(const double f1[], const double f2[], const double dx, const int n, const int np, const int func_type); double convolve_both(const double f1[], const double f2[], const double dx, const int n, const int np); -void rotate2d(double x[], double y[], int pts, double angle); -void xlat2d(double x[], double y[], int pts, double xoffset, double yoffset); -void scale2d(double x[], double y[], int pts, double xfact, double yfact); -int circle_pts(double theta); /* dialogs.c */ int phm_add_pelm_kb(PHANTOM *phm); @@ -452,6 +450,7 @@ PHMELM *pelm_alloc(void); void calc_arc(double x[], double y[], const int pts, const double xcent, const double ycent, const double r, const double start, const double stop); void calc_ellipse(double x[], double y[], const int pts, const double u, const double v); +int circle_pts(double theta); void phm_print(PHANTOM *phm); #if HAVE_INTERACTIVE_GRAPHICS void phm_show(const PHANTOM *phm); @@ -477,8 +476,8 @@ int pelm_clip_line (const PHMELM *obj, double *x1, double *y1, double *x2, doubl void raysum_trace_show_param (const char *label, const char *fmt, int row, int color, ...); /* scanner.c */ -DETECTOR *detect_create(const PHANTOM *phm, int ndet, int nview, int nsample, const double rot_anglen); -void detect_free(DETECTOR *det); +DETECTOR *detector_create(const PHANTOM *phm, int geometry, int ndet, int nview, int nsample, const double rot_anglen); +void detector_free(DETECTOR *det); /* rayio.c */ RAYSUM *raysum_create(const char *fname, const int nview, const int ndet); @@ -498,5 +497,4 @@ int detarray_read(RAYSUM *rs, DETARRAY *darray, const int view_num); int detarray_write(RAYSUM *rs, const DETARRAY *darray, const int view_num); int raysum_print(const RAYSUM *rs); - #endif