diff options
Diffstat (limited to 'extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp')
-rw-r--r-- | extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp b/extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp new file mode 100644 index 00000000000..8a3833c20b1 --- /dev/null +++ b/extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://www.erwincoumans.com + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ +#include "Simplex1to4Shape.h" +#include "SimdMatrix3x3.h" + +BU_Simplex1to4::BU_Simplex1to4() +:m_numVertices(0) +{ +} + +BU_Simplex1to4::BU_Simplex1to4(const SimdPoint3& pt0) +:m_numVertices(0) +{ + AddVertex(pt0); +} + +BU_Simplex1to4::BU_Simplex1to4(const SimdPoint3& pt0,const SimdPoint3& pt1) +:m_numVertices(0) +{ + AddVertex(pt0); + AddVertex(pt1); +} + +BU_Simplex1to4::BU_Simplex1to4(const SimdPoint3& pt0,const SimdPoint3& pt1,const SimdPoint3& pt2) +:m_numVertices(0) +{ + AddVertex(pt0); + AddVertex(pt1); + AddVertex(pt2); +} + +BU_Simplex1to4::BU_Simplex1to4(const SimdPoint3& pt0,const SimdPoint3& pt1,const SimdPoint3& pt2,const SimdPoint3& pt3) +:m_numVertices(0) +{ + AddVertex(pt0); + AddVertex(pt1); + AddVertex(pt2); + AddVertex(pt3); +} + + + + + +void BU_Simplex1to4::AddVertex(const SimdPoint3& pt) +{ + m_vertices[m_numVertices++] = pt; +} + + +int BU_Simplex1to4::GetNumVertices() const +{ + return m_numVertices; +} + +int BU_Simplex1to4::GetNumEdges() const +{ + //euler formula, F-E+V = 2, so E = F+V-2 + + switch (m_numVertices) + { + case 0: + return 0; + case 1: return 0; + case 2: return 1; + case 3: return 3; + case 4: return 6; + + + } + + return 0; +} + +void BU_Simplex1to4::GetEdge(int i,SimdPoint3& pa,SimdPoint3& pb) const +{ + + switch (m_numVertices) + { + + case 2: + pa = m_vertices[0]; + pb = m_vertices[1]; + break; + case 3: + switch (i) + { + case 0: + pa = m_vertices[0]; + pb = m_vertices[1]; + break; + case 1: + pa = m_vertices[1]; + pb = m_vertices[2]; + break; + case 2: + pa = m_vertices[2]; + pb = m_vertices[0]; + break; + + } + break; + case 4: + switch (i) + { + case 0: + pa = m_vertices[0]; + pb = m_vertices[1]; + break; + case 1: + pa = m_vertices[1]; + pb = m_vertices[2]; + break; + case 2: + pa = m_vertices[2]; + pb = m_vertices[0]; + break; + case 3: + pa = m_vertices[0]; + pb = m_vertices[3]; + break; + case 4: + pa = m_vertices[1]; + pb = m_vertices[3]; + break; + case 5: + pa = m_vertices[2]; + pb = m_vertices[3]; + break; + } + + } + + + + +} + +void BU_Simplex1to4::GetVertex(int i,SimdPoint3& vtx) const +{ + vtx = m_vertices[i]; +} + +int BU_Simplex1to4::GetNumPlanes() const +{ + switch (m_numVertices) + { + case 0: + return 0; + case 1: + return 0; + case 2: + return 0; + case 3: + return 2; + case 4: + return 4; + default: + { + } + } + return 0; +} + + +void BU_Simplex1to4::GetPlane(SimdVector3& planeNormal,SimdPoint3& planeSupport,int i) const +{ + +} + +int BU_Simplex1to4::GetIndex(int i) const +{ + return 0; +} + +bool BU_Simplex1to4::IsInside(const SimdPoint3& pt,SimdScalar tolerance) const +{ + return false; +} + |