OpenMesh
|
00001 #ifndef GENERATE_CUBE_HH 00002 #define GENERATE_CUBE_HH 00003 00004 template <typename MeshType> 00005 size_t generate_cube( MeshType& mesh ) 00006 { 00007 typedef typename MeshType::VertexHandle VertexHandle; 00008 typedef typename MeshType::Point Point; 00009 00010 typename MeshType::VertexHandle vhandle[8]; 00011 00012 vhandle[0] = mesh.add_vertex(Point(-1, -1, 1)); 00013 vhandle[1] = mesh.add_vertex(Point( 1, -1, 1)); 00014 vhandle[2] = mesh.add_vertex(Point( 1, 1, 1)); 00015 vhandle[3] = mesh.add_vertex(Point(-1, 1, 1)); 00016 vhandle[4] = mesh.add_vertex(Point(-1, -1, -1)); 00017 vhandle[5] = mesh.add_vertex(Point( 1, -1, -1)); 00018 vhandle[6] = mesh.add_vertex(Point( 1, 1, -1)); 00019 vhandle[7] = mesh.add_vertex(Point(-1, 1, -1)); 00020 00021 // generate (quadrilateral) faces 00022 00023 std::vector< VertexHandle > face_vhandles; 00024 00025 face_vhandles.clear(); 00026 face_vhandles.push_back(vhandle[0]); 00027 face_vhandles.push_back(vhandle[1]); 00028 face_vhandles.push_back(vhandle[2]); 00029 face_vhandles.push_back(vhandle[3]); 00030 mesh.add_face(face_vhandles); 00031 00032 face_vhandles.clear(); 00033 face_vhandles.push_back(vhandle[7]); 00034 face_vhandles.push_back(vhandle[6]); 00035 face_vhandles.push_back(vhandle[5]); 00036 face_vhandles.push_back(vhandle[4]); 00037 mesh.add_face(face_vhandles); 00038 00039 face_vhandles.clear(); 00040 face_vhandles.push_back(vhandle[1]); 00041 face_vhandles.push_back(vhandle[0]); 00042 face_vhandles.push_back(vhandle[4]); 00043 face_vhandles.push_back(vhandle[5]); 00044 mesh.add_face(face_vhandles); 00045 00046 face_vhandles.clear(); 00047 face_vhandles.push_back(vhandle[2]); 00048 face_vhandles.push_back(vhandle[1]); 00049 face_vhandles.push_back(vhandle[5]); 00050 face_vhandles.push_back(vhandle[6]); 00051 mesh.add_face(face_vhandles); 00052 00053 face_vhandles.clear(); 00054 face_vhandles.push_back(vhandle[3]); 00055 face_vhandles.push_back(vhandle[2]); 00056 face_vhandles.push_back(vhandle[6]); 00057 face_vhandles.push_back(vhandle[7]); 00058 mesh.add_face(face_vhandles); 00059 00060 face_vhandles.clear(); 00061 face_vhandles.push_back(vhandle[0]); 00062 face_vhandles.push_back(vhandle[3]); 00063 face_vhandles.push_back(vhandle[7]); 00064 face_vhandles.push_back(vhandle[4]); 00065 mesh.add_face(face_vhandles); 00066 00067 return mesh.n_vertices(); 00068 }; 00069 00070 #endif