2 # mrcImageSiemensStar : $Revision$
5 # Usage : mrcImageSiemensStar
15 #define GLOBAL_DECLARATION
16 #include "../inc/config.h"
22 typedef struct lmrcImageSiemensStarInfo {
28 } lmrcImageSiemensStarInfo;
30 typedef enum lmrcImageSiemensStarMode {
33 } lmrcImageSiemensStarMode;
37 lmrcImageSiemensStarCreate(mrcImage* out, lmrcImageSiemensStarInfo linfo, int mode);
40 main(int argc, char* argv[])
42 mrcImageSiemensStarInfo info;
43 lmrcImageSiemensStarInfo linfo;
46 argCheck(&info, argc, argv);
49 DEBUGPRINT("Program Start\n");
53 linfo.nOfRadial = info.nRadial;
54 linfo.delta = info.Delta;
56 lmrcImageSiemensStarCreate(&out, linfo, info.mode);
58 mrcFileWrite(&out, info.Out, "in main", 0);
65 fprintf(stderr, "----- Additional Usage -----\n");
66 fprintf(stderr, "-mode : mrcImageHeaderMode: 2 float");
71 lmrcImageSiemensStarCreate(mrcImage* out, lmrcImageSiemensStarInfo linfo, int mode)
73 mrcImageParaTypeReal x, y;
74 mrcImageParaTypeReal gx, gy;
80 mrcDefaultHeaderValueSet(out);
81 out->HeaderN.x = linfo.Nx;
82 out->HeaderN.y = linfo.Ny;
84 out->HeaderMode = mode;
85 out->HeaderLength.x = out->HeaderLength.y = out->HeaderLength.z = linfo.delta;
89 dTheta = 2*M_PI/linfo.nOfRadial;
90 gx = (linfo.Nx-1)/2.0;
91 gy = (linfo.Ny-1)/2.0;
92 for(x=0; x<out->HeaderN.x; x++) {
93 for(y=0; y<out->HeaderN.y; y++) {
94 r = sqrt(SQR(x-gx)+SQR(y-gy));
95 theta = atan2(y-gy, x-gx);
97 flagTheta = (int)(( theta - ((int)(theta/dTheta))*dTheta)/(dTheta/2.0));
99 flagTheta = 1 - (int)((-theta + ((int)(theta/dTheta))*dTheta)/(dTheta/2.0));
101 if(flagTheta==1 && r<=linfo.R) {
106 mrcPixelDataSet(out, x, y, 0, data, mrcPixelRePart);