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