00001 #ifndef _MY_UnitCube_ 00002 #define _MY_UnitCube_ 00003 #include "globals.h" 00004 #include "vecdouble.h" 00005 #include "arrayofvecdouble.h" 00006 00007 /*UnitCube 00008 * Geometric domain about the unit cube 00009 used as the reference domain of 00010 all OrthoMesh finite elements 00011 */ 00012 00013 class UnitCube 00014 { 00015 private: 00016 00017 protected: 00018 VecDouble e1,e2,e3; 00019 ArrayOfVecDouble _vertices; 00020 public: 00021 UnitCube(); 00022 ~UnitCube(); 00023 00024 00025 static unsigned n_faces(){return 6;} 00026 static unsigned n_vertices(){return 8;} 00027 ArrayOfVecDouble& vertices(){return _vertices;} 00028 void project_2d_points_into_faces(const VecDouble &pt2D,VecDouble *ppt3D,FaceDirection3D dir); 00029 void face_base_vectors(Index FaceId,VecDouble *v1,VecDouble *v2); 00030 }; 00031 00032 #endif