00001 00012 #ifndef __NODE_INDEX_H__ 00013 #define __NODE_INDEX_H__ 00014 00015 #include <global.h> 00016 00020 #define BASE_NODE_HIGHT 0 00021 00025 typedef int AxIndex; 00026 00030 #define MAX_AX_INDEX INT_MAX 00031 00035 typedef int AxDirection; 00036 00040 const AxDirection BACKWARD= -1; 00041 00045 const AxDirection FORWARD= +1; 00046 00047 class NodeVec; 00048 00062 class NodeIndex { 00063 public: 00072 NodeIndex(AxIndex x, AxIndex y, AxIndex z, Hight h= BASE_NODE_HIGHT); 00073 00080 AxIndex getCoordinate(Axis axis); 00081 00086 Hight getHight(); 00087 00092 AxIndex getX(); 00093 00098 AxIndex getY(); 00099 00104 AxIndex getZ(); 00105 00109 virtual void print(); 00110 00118 void set(AxIndex x, AxIndex y, AxIndex z); 00119 00126 void setCoordinate(Axis axis, AxIndex value); 00127 00132 void setHight(Hight h); 00133 00138 void setX(AxIndex x); 00139 00144 void setY(AxIndex y); 00145 00150 void setZ(AxIndex z); 00151 00157 AxIndex operator[](Axis axis); 00158 00159 private: 00163 AxIndex indices[DIMENSIONS]; 00164 00168 Hight hight; 00169 }; 00170 00180 bool operator==(NodeIndex p1, NodeIndex p2); 00181 00191 bool operator<(NodeIndex p1, NodeIndex p2); 00192 00193 #endif // ! __NODE_INDEX_H__