3 # The latest update : %G% at %U%
5 #%Z% lmrcImageTranspose ver %I%
8 #%Z% Usage : lmrcImageTranspose
12 static char __sccs_id[] = "%Z%lmrcImageTranspose ver%I%; Date:%D% %Z%";
23 #include "mrcRefUtil.h"
24 #include "./lmrcImageTranspose.h"
28 lmrcImageTransposeUsage(FILE* fpt)
30 fprintf(stdout ,"----- mode1 -----\n");
31 fprintf(stdout ,"0:+90degree in xy plane around z-axis: x->+y\n");
32 fprintf(stdout ,"1:-90degree in xy plane around z-axis: x->-y\n");
33 fprintf(stdout ,"2:+90degree in yz plane around x-axis: y->+z\n");
34 fprintf(stdout ,"3:-90degree in yz plane around x-axis: y->-z\n");
35 fprintf(stdout ,"4:+90degree in zx plane around y-axis: z->+x\n");
36 fprintf(stdout ,"5:-90degree in zx plane around y-axis: z->-x\n");
37 fprintf(stdout ,"----- mode2 -----\n");
38 fprintf(stdout ,"0: Image\n");
39 fprintf(stdout ,"1: Ref Image(mode1 =0 or 1)\n");
42 void lmrcImageTranspose(mrcImage* out , mrcImage* in ,int mode ,int mode2)
46 int x,y,ox,oy,oz,flag,z;
51 out->Header = in->Header;
55 out->HeaderN.x = in->HeaderN.y;
56 out->HeaderN.y = in->HeaderN.x;
61 out->HeaderN.y = in->HeaderN.z;
62 out->HeaderN.z = in->HeaderN.y;
66 out->HeaderN.z = in->HeaderN.x;
67 out->HeaderN.x = in->HeaderN.z;
76 lmrcRefHeaderGet(&header ,in);
77 lmrcRefHeaderSet(out ,&header);
79 for (z=flag; z < in->HeaderN.z ;z++){
80 for (y=0; y < in->HeaderN.y ;y++){
81 for (x=0; x < in->HeaderN.x ;x++){
82 mrcPixelDataGet(in ,x ,y ,z ,&data ,mrcPixelRePart ,mrcPixelHowNearest);
85 ox = in->HeaderN.y - 1 - y;
91 oy = in->HeaderN.x - 1 - x;
96 oy = in->HeaderN.z - 1 - z;
102 oz = in->HeaderN.y - -1 - y;
107 oz = in->HeaderN.x - 1 - x;
110 ox = in->HeaderN.z - 1 - z;
116 mrcPixelDataSet(out, ox, oy, oz, data, mrcPixelRePart);
120 mrcStatDataSet(out,0);