com.bulletphysics.collision.narrowphase
Class VoronoiSimplexSolver
java.lang.Object
com.bulletphysics.collision.narrowphase.SimplexSolverInterface
com.bulletphysics.collision.narrowphase.VoronoiSimplexSolver
public class VoronoiSimplexSolver
- extends SimplexSolverInterface
VoronoiSimplexSolver is an implementation of the closest point distance algorithm
from a 1-4 points simplex to the origin. Can be used with GJK, as an alternative
to Johnson distance algorithm.
Method Summary |
void |
addVertex(Vector3f w,
Vector3f p,
Vector3f q)
|
void |
backup_closest(Vector3f v)
|
boolean |
closest(Vector3f v)
Return/calculate the closest vertex. |
boolean |
closestPtPointTetrahedron(Vector3f p,
Vector3f a,
Vector3f b,
Vector3f c,
Vector3f d,
VoronoiSimplexSolver.SubSimplexClosestResult finalResult)
|
boolean |
closestPtPointTriangle(Vector3f p,
Vector3f a,
Vector3f b,
Vector3f c,
VoronoiSimplexSolver.SubSimplexClosestResult result)
|
void |
compute_points(Vector3f p1,
Vector3f p2)
|
boolean |
emptySimplex()
|
boolean |
fullSimplex()
|
int |
getSimplex(Vector3f[] pBuf,
Vector3f[] qBuf,
Vector3f[] yBuf)
|
boolean |
inSimplex(Vector3f w)
|
float |
maxVertex()
|
int |
numVertices()
|
static int |
pointOutsideOfPlane(Vector3f p,
Vector3f a,
Vector3f b,
Vector3f c,
Vector3f d)
|
void |
reduceVertices(VoronoiSimplexSolver.UsageBitfield usedVerts)
|
void |
removeVertex(int index)
|
void |
reset()
Clear the simplex, remove all the vertices. |
boolean |
updateClosestVectorAndPoints()
|
numVertices
public int numVertices
simplexVectorW
public final Vector3f[] simplexVectorW
simplexPointsP
public final Vector3f[] simplexPointsP
simplexPointsQ
public final Vector3f[] simplexPointsQ
cachedP1
public final Vector3f cachedP1
cachedP2
public final Vector3f cachedP2
cachedV
public final Vector3f cachedV
lastW
public final Vector3f lastW
cachedValidClosest
public boolean cachedValidClosest
cachedBC
public final VoronoiSimplexSolver.SubSimplexClosestResult cachedBC
needsUpdate
public boolean needsUpdate
VoronoiSimplexSolver
public VoronoiSimplexSolver()
removeVertex
public void removeVertex(int index)
reduceVertices
public void reduceVertices(VoronoiSimplexSolver.UsageBitfield usedVerts)
updateClosestVectorAndPoints
public boolean updateClosestVectorAndPoints()
closestPtPointTriangle
public boolean closestPtPointTriangle(Vector3f p,
Vector3f a,
Vector3f b,
Vector3f c,
VoronoiSimplexSolver.SubSimplexClosestResult result)
pointOutsideOfPlane
public static int pointOutsideOfPlane(Vector3f p,
Vector3f a,
Vector3f b,
Vector3f c,
Vector3f d)
closestPtPointTetrahedron
public boolean closestPtPointTetrahedron(Vector3f p,
Vector3f a,
Vector3f b,
Vector3f c,
Vector3f d,
VoronoiSimplexSolver.SubSimplexClosestResult finalResult)
reset
public void reset()
- Clear the simplex, remove all the vertices.
- Specified by:
reset
in class SimplexSolverInterface
addVertex
public void addVertex(Vector3f w,
Vector3f p,
Vector3f q)
- Specified by:
addVertex
in class SimplexSolverInterface
closest
public boolean closest(Vector3f v)
- Return/calculate the closest vertex.
- Specified by:
closest
in class SimplexSolverInterface
maxVertex
public float maxVertex()
- Specified by:
maxVertex
in class SimplexSolverInterface
fullSimplex
public boolean fullSimplex()
- Specified by:
fullSimplex
in class SimplexSolverInterface
getSimplex
public int getSimplex(Vector3f[] pBuf,
Vector3f[] qBuf,
Vector3f[] yBuf)
- Specified by:
getSimplex
in class SimplexSolverInterface
inSimplex
public boolean inSimplex(Vector3f w)
- Specified by:
inSimplex
in class SimplexSolverInterface
backup_closest
public void backup_closest(Vector3f v)
- Specified by:
backup_closest
in class SimplexSolverInterface
emptySimplex
public boolean emptySimplex()
- Specified by:
emptySimplex
in class SimplexSolverInterface
compute_points
public void compute_points(Vector3f p1,
Vector3f p2)
- Specified by:
compute_points
in class SimplexSolverInterface
numVertices
public int numVertices()
- Specified by:
numVertices
in class SimplexSolverInterface