OSDN Git Service

Merge commit 'a3763d7aec1c84428f4148f2d073975274477858'
[eos/base.git] / src / Objects / DataManip / mrcImage / src / lmrcImageSamplingUnitChange.c
1 /*
2 # lmrcImageSamplingUnitChange.c  1.2
3 # The latest update : 01/23/97 at 10:39:10
4 #
5 #@(#) lmrcImageSamplingUnitChange ver 1.2
6 #@(#) Created by 
7 #@(#)
8 #@(#) Usage : lmrcImageSamplingUnitChange 
9 #@(#) Attention
10 #@(#)
11 */
12
13 static char __sccs_id[] = "@(#)lmrcImageSamplingUnitChange ver1.2; Date:97/01/23 @(#)";
14
15 #include "lmrcImageSamplingUnitChange.h"
16
17 void 
18 lmrcImageSamplingUnitChange(mrcImage* out, mrcImage* in, lmrcImageSamplingUnitChangeInfo info, long mode)
19 {
20     mrcImageParaTypeReal x, y, z;
21     mrcImageParaTypeReal kx, ky, kz;
22     double data;
23
24     out->Header = in->Header;
25     if(0.0 !=  info.L.x) {
26         out->HeaderLength.x = info.L.x;
27     }
28     if(0.0 !=  info.L.y) {
29         out->HeaderLength.y = info.L.y;
30     }
31     if(0.0 !=  info.L.z) {
32         out->HeaderLength.z = info.L.z;
33     }
34     kx = in->HeaderLength.x/out->HeaderLength.x;
35     ky = in->HeaderLength.y/out->HeaderLength.y;
36     kz = in->HeaderLength.z/out->HeaderLength.z;
37
38     out->HeaderN.x = in->HeaderN.x*kx;
39     out->HeaderN.y = in->HeaderN.y*ky;
40     out->HeaderN.z = in->HeaderN.z*kz;
41
42         out->HeaderStartN.x = in->HeaderStartN.x*in->HeaderLength.x/out->HeaderLength.x;
43         out->HeaderStartN.y = in->HeaderStartN.y*in->HeaderLength.y/out->HeaderLength.y;
44         out->HeaderStartN.z = in->HeaderStartN.z*in->HeaderLength.z/out->HeaderLength.z;
45     mrcInit(out, NULL);
46
47     for(x=0; x<out->HeaderN.x; x++) {
48         for(y=0; y<out->HeaderN.y; y++) {
49             for(z=0; z<out->HeaderN.z; z++) {
50                 mrcPixelDataGet(in, x/kx, y/ky, z/kz, &data, mrcPixelRePart, info.SamplingMethodMode);
51                 mrcPixelDataSet(out, x, y, z, data, mrcPixelRePart);
52             }
53         }   
54     }
55 }