newimage
 
All Classes Pages
Loading...
Searching...
No Matches
complexvolume.h
1/* Copyright (C) 2000 University of Oxford */
2
3/* CCOPYRIGHT */
4
5#if !defined(__complexvolume_h)
6#define __complexvolume_h
7
8#include "newimage.h"
9
10
11namespace NEWIMAGE {
12
13 class complexpoint;
14
15 class complexref {
16 private:
17 float *m_real;
18 float *m_imag;
19 public:
20 complexref(float* r, float* i) : m_real(r), m_imag(i){}
21 ~complexref(){}
22 inline float* re_pointer() const { return m_real; }
23 inline float* im_pointer() const { return m_imag; }
24 const complexpoint& operator=(const complexpoint& val);
25 };
26
28
29 private:
30 float m_real;
31 float m_imag;
32
33 public:
34
35 complexpoint(){}
36 complexpoint(float r, float i){m_real=r; m_imag=i;}
37 complexpoint(float r){m_real=r; m_imag=0;}
38 complexpoint(const complexref& source){
39 m_real = *(source.re_pointer());
40 m_imag = *(source.im_pointer());
41 }
43 float operator=(const float val);
44 complexpoint& operator=(const complexpoint& source);
45 complexpoint& operator=(const complexref& source);
46 inline float re() const { return m_real; }
47 inline float im() const { return m_imag; }
48
49 const complexpoint& operator+=(const complexpoint& val);
50 const complexpoint& operator-=(const complexpoint& val);
51 const complexpoint& operator*=(const complexpoint& val);
52 const complexpoint& operator/=(const complexpoint& val);
53 complexpoint operator+(const complexpoint& val) const;
54 complexpoint operator-(const complexpoint& val) const;
55 complexpoint operator*(const complexpoint& val) const;
56 complexpoint operator/(const complexpoint& val) const;
57
58 //ostream& operator<<(ostream& s, const complexpoint& val);
59
60 float abs() const;
61 float phase() const;
62 };
63
65
66 private:
67 volume<float> real;
68 volume<float> imag;
69
70 public:
72 complexvolume(int xsize, int ysize, int zsize);
73 complexvolume(const complexvolume& source);
74 complexvolume(const volume<float>& r, const volume<float>& i);
77 float operator=(const float val);
78 complexvolume& operator=(const complexvolume& source);
79 void destroy();
80 int copyproperties(const complexvolume& source);
81 int copydata(const complexvolume& source);
82
83 const float& re(int x,int y, int z) const { return real(x,y,z); }
84 const float& im(int x,int y, int z) const { return imag(x,y,z); }
85 float& re(int x,int y, int z) { return real(x,y,z); }
86 float& im(int x,int y, int z) { return imag(x,y,z); }
87
88 inline int xsize() const { return real.xsize(); }
89 inline int ysize() const { return real.ysize(); }
90 inline int zsize() const { return real.zsize(); }
91 inline float xdim() const { return real.xdim(); }
92 inline float ydim() const { return real.ydim(); }
93 inline float zdim() const { return real.zdim(); }
94 void setxdim(float x) { real.setxdim(x); imag.setxdim(x); }
95 void setydim(float y) { real.setydim(y); imag.setydim(y); }
96 void setzdim(float z) { real.setzdim(z); imag.setzdim(z); }
97 void setdims(float x, float y, float z){ setxdim(x); setydim(y); setzdim(z); }
98 int nvoxels() const { return real.nvoxels(); }
99
100 const complexvolume& operator+=(const complexpoint& val);
101 const complexvolume& operator-=(const complexpoint& val);
102 const complexvolume& operator*=(const complexpoint& val);
103 const complexvolume& operator/=(const complexpoint& val);
104 const complexvolume& operator+=(const complexvolume& source);
105 const complexvolume& operator-=(const complexvolume& source);
106 const complexvolume& operator*=(const complexvolume& source);
107 const complexvolume& operator/=(const complexvolume& source);
108 complexvolume operator+(const complexpoint& val) const;
109 complexvolume operator-(const complexpoint& val) const;
110 complexvolume operator*(const complexpoint& val) const;
111 complexvolume operator/(const complexpoint& val) const;
112 complexvolume operator+(const complexvolume& vol) const;
113 complexvolume operator-(const complexvolume& vol) const;
114 complexvolume operator*(const complexvolume& vol) const;
115 complexvolume operator/(const complexvolume& vol) const;
116
117 volume<float> abs() const;
118 volume<float> phase() const;
119 volume<float>& re();
120 volume<float>& im();
121 const volume<float>& re() const;
122 const volume<float>& im() const;
123
124 complexref operator()(int x,int y, int z)
125 { return(complexref(&real(x,y,z),&imag(x,y,z))); }
126
127
128 complexvolume extract_slice(int slice) const;
129 void overwrite_slice(const complexvolume& data,int slice);
130
131 };
132}
133#endif
Definition: complexvolume.h:27
Definition: complexvolume.h:15
Definition: complexvolume.h:64
Definition: newimage.h:100