00001 #ifndef FIELD3DINDEX_H 00002 #define FIELD3DINDEX_H 00003 00004 #include "Dim3D.h" 00005 00006 00007 //#define PT2IDX(pt) (pt.x + ((pt.y + (pt.z * dim.y)) * dim.x)) 00008 00009 namespace CompuCell3D{ 00010 00011 class Dim3D; 00012 class Point3D; 00013 00014 class Field3DIndex{ 00015 public: 00016 Field3DIndex(): 00017 x_size(0), 00018 y_size(0), 00019 z_size(0), 00020 xy_size(x_size*y_size) 00021 {} 00022 Field3DIndex(const Dim3D & _dim); 00023 long index(const Point3D & pt) const { 00024 00025 return (pt.x + ((pt.y + (pt.z * y_size)) * x_size)); 00026 } 00027 00028 Point3D index2Point(long _index) const{ 00029 short x,y,z,rem; 00030 z=_index / xy_size; 00031 rem=_index-z*xy_size; 00032 y=rem / x_size; 00033 x=rem-y*x_size; 00034 return Point3D(x,y,z); 00035 } 00036 long getMaxIndex() const {return maxIndex;} 00037 private: 00038 00039 int x_size; 00040 int y_size; 00041 int z_size; 00042 int xy_size; 00043 int maxIndex; 00044 00045 }; 00046 00047 }; 00048 00049 00050 #endif
1.5.6