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/NarrowPhaseCollision/SimplexSolverInterface.h')
-rw-r--r--extern/bullet/Bullet/NarrowPhaseCollision/SimplexSolverInterface.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/extern/bullet/Bullet/NarrowPhaseCollision/SimplexSolverInterface.h b/extern/bullet/Bullet/NarrowPhaseCollision/SimplexSolverInterface.h
new file mode 100644
index 00000000000..9fe58385904
--- /dev/null
+++ b/extern/bullet/Bullet/NarrowPhaseCollision/SimplexSolverInterface.h
@@ -0,0 +1,58 @@
+/*
+ * 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.
+*/
+
+
+#ifndef SIMPLEX_SOLVER_INTERFACE_H
+#define SIMPLEX_SOLVER_INTERFACE_H
+
+#include "SimdVector3.h"
+#include "SimdPoint3.h"
+
+#define NO_VIRTUAL_INTERFACE
+#ifdef NO_VIRTUAL_INTERFACE
+#include "VoronoiSimplexSolver.h"
+#define SimplexSolverInterface VoronoiSimplexSolver
+#else
+/// for simplices from 1 to 4 vertices
+/// for example Johnson-algorithm or alternative approaches based on
+/// voronoi regions or barycentric coordinates
+class SimplexSolverInterface
+{
+ public:
+ virtual ~SimplexSolverInterface() {};
+
+ virtual void reset() = 0;
+
+ virtual void addVertex(const SimdVector3& w, const SimdPoint3& p, const SimdPoint3& q) = 0;
+
+ virtual bool closest(SimdVector3& v) = 0;
+
+ virtual SimdScalar maxVertex() = 0;
+
+ virtual bool fullSimplex() const = 0;
+
+ virtual int getSimplex(SimdPoint3 *pBuf, SimdPoint3 *qBuf, SimdVector3 *yBuf) const = 0;
+
+ virtual bool inSimplex(const SimdVector3& w) = 0;
+
+ virtual void backup_closest(SimdVector3& v) = 0;
+
+ virtual bool emptySimplex() const = 0;
+
+ virtual void compute_points(SimdPoint3& p1, SimdPoint3& p2) = 0;
+
+ virtual int numVertices() const =0;
+
+
+};
+#endif
+#endif //SIMPLEX_SOLVER_INTERFACE_H
+