Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp')
-rw-r--r--extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp188
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;
+}
+