00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <Tetrahedron.hpp>
00021
00022 Tetrahedron::Tetrahedron(Vertex& x0,
00023 Vertex& x1,
00024 Vertex& x2,
00025 Vertex& x3,
00026 const size_t& ref)
00027 : Cell(Tetrahedron::NumberOfVertices, ref)
00028 {
00029 __vertices[0] = &x0;
00030 __vertices[1] = &x1;
00031 __vertices[2] = &x2;
00032 __vertices[3] = &x3;
00033
00034 TinyVector<3> A = x1 - x0;
00035 TinyVector<3> B = x2 - x0;
00036 TinyVector<3> C = x3 - x0;
00037
00038 __volume = 1./6.*((A^B)*C);
00039 if (__volume < 0) {
00040 throw ErrorHandler(__FILE__,__LINE__,
00041 "negative tetrahedron volume",
00042 ErrorHandler::normal);
00043 }
00044 }
00045
00046 const size_t
00047 Tetrahedron::
00048 faces[Tetrahedron::NumberOfFaces][Tetrahedron::FaceType::NumberOfVertices]
00049 ={{1,2,3},{3,2,0},{0,1,3},{2,1,0}};
00050
00051 const size_t
00052 Tetrahedron::
00053 edges[Tetrahedron::NumberOfEdges][Edge::NumberOfVertices]
00054 = {{0,1},{0,2},{0,3},{1,2},{3,1},{2,3}};