00001 #ifndef _VUVOLUMEFOURIERUNIMODAL3D_H_
00002 #define _VUVOLUMEFOURIERUNIMODAL3D_H_
00003
00004 #include "../unimodal.h"
00005
00007
00008 template <int SIZE>
00009 class vu1712 : public vu171
00010 {
00011 public:
00013 vu1712();
00015 vu1712(const vu1712<SIZE>& inst);
00016
00018 vu1712<SIZE>& operator=(const vu1712<SIZE>& rhs);
00019
00021 dword getDim1Size(void) const;
00023 dword getDim2Size(void) const;
00025 dword getDim3Size(void) const;
00026
00028
00031 dword getSpacing(void) const;
00032
00034 int getDim1Origin(void) const;
00036 int getDim2Origin(void) const;
00038 int getDim3Origin(void) const;
00039
00041 vuVector getCenter() const {
00042 return vuVector((float)m_Dim1Size/2,(float)m_Dim2Size/2,(float)m_Dim3Size/2);
00043 }
00044
00045 protected:
00046 virtual bool readHeader(FILE *file);
00047 virtual bool writeHeader(FILE *file);
00048
00049 public:
00050 static bool readData(FILE *file, float* vol,
00051 dword XX, dword YY, dword ZZ,
00052 dword XXsmall, dword YYsmall, dword ZZsmall);
00053
00054
00055 static bool writeData(FILE *file, float* vol,
00056 dword XX, dword YY, dword ZZ,
00057 dword XXsmall, dword YYsmall, dword ZZsmall);
00058
00059 static float* pad(float* v, dword n);
00060
00061 static bool writeHeader(FILE *file, dword XSize, dword YSize, dword ZSize);
00062 static bool readHeader(FILE *file,dword &XSize,dword &YSize,dword &ZSize);
00063
00064 protected:
00066 dword m_Dim1Size;
00068 dword m_Dim2Size;
00070 dword m_Dim3Size;
00071
00073 dword m_Spacing;
00074
00076 int m_Dim1Origin;
00078 int m_Dim2Origin;
00080 int m_Dim3Origin;
00081 };
00082
00083
00084 template class vu1712<1>;
00085 template class vu1712<2>;
00086 template class vu1712<3>;
00087
00088 typedef vu1712<1> vu1712A;
00089 typedef vu1712<2> vu1712B;
00090 typedef vu1712<3> vu1712C;
00091
00092 typedef vu1712A vuVolumeFourierUnimodal3dA;
00093 typedef vu1712B vuVolumeFourierUnimodal3dB;
00094 typedef vu1712C vuVolumeFourierUnimodal3dC;
00095
00096 #endif