Blender  V3.3
Classes | Macros | Functions | Variables
btVoronoiSimplexSolver.h File Reference
#include "btSimplexSolverInterface.h"

Go to the source code of this file.

Classes

struct  btUsageBitfield
 
struct  btSubSimplexClosestResult
 

Macros

#define VORONOI_SIMPLEX_MAX_VERTS   5
 
#define BT_USE_EQUAL_VERTEX_THRESHOLD
 disable next define, or use defaultCollisionConfiguration->getSimplexSolver()->setEqualVertexThreshold(0.f) to disable/configure More...
 
#define VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD   0.0001f
 

Functions

void removeVertex (int index)
 
void reduceVertices (const btUsageBitfield &usedVerts)
 
bool updateClosestVectorAndPoints ()
 
bool closestPtPointTetrahedron (const btVector3 &p, const btVector3 &a, const btVector3 &b, const btVector3 &c, const btVector3 &d, btSubSimplexClosestResult &finalResult)
 
int pointOutsideOfPlane (const btVector3 &p, const btVector3 &a, const btVector3 &b, const btVector3 &c, const btVector3 &d)
 Test if point p and d lie on opposite sides of plane through abc. More...
 
bool closestPtPointTriangle (const btVector3 &p, const btVector3 &a, const btVector3 &b, const btVector3 &c, btSubSimplexClosestResult &result)
 
void reset ()
 
void addVertex (const btVector3 &w, const btVector3 &p, const btVector3 &q)
 
void setEqualVertexThreshold (btScalar threshold)
 
btScalar getEqualVertexThreshold () const
 
bool closest (btVector3 &v)
 
btScalar maxVertex ()
 
bool fullSimplex () const
 
int getSimplex (btVector3 *pBuf, btVector3 *qBuf, btVector3 *yBuf) const
 
bool inSimplex (const btVector3 &w)
 
void backup_closest (btVector3 &v)
 
bool emptySimplex () const
 
void compute_points (btVector3 &p1, btVector3 &p2)
 
int numVertices () const
 

Variables

 btVoronoiSimplexSolver
 
int m_numVertices
 
btVector3 m_simplexVectorW [VORONOI_SIMPLEX_MAX_VERTS]
 
btVector3 m_simplexPointsP [VORONOI_SIMPLEX_MAX_VERTS]
 
btVector3 m_simplexPointsQ [VORONOI_SIMPLEX_MAX_VERTS]
 
btVector3 m_cachedP1
 
btVector3 m_cachedP2
 
btVector3 m_cachedV
 
btVector3 m_lastW
 
btScalar m_equalVertexThreshold
 
bool m_cachedValidClosest
 
btSubSimplexClosestResult m_cachedBC
 
bool m_needsUpdate
 

Macro Definition Documentation

◆ BT_USE_EQUAL_VERTEX_THRESHOLD

#define BT_USE_EQUAL_VERTEX_THRESHOLD

disable next define, or use defaultCollisionConfiguration->getSimplexSolver()->setEqualVertexThreshold(0.f) to disable/configure

Definition at line 24 of file btVoronoiSimplexSolver.h.

◆ VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD

#define VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD   0.0001f

Definition at line 29 of file btVoronoiSimplexSolver.h.

◆ VORONOI_SIMPLEX_MAX_VERTS

#define VORONOI_SIMPLEX_MAX_VERTS   5

Definition at line 21 of file btVoronoiSimplexSolver.h.

Function Documentation

◆ addVertex()

void btVoronoiSimplexSolver::addVertex ( const btVector3 w,
const btVector3 p,
const btVector3 q 
)

◆ backup_closest()

void btVoronoiSimplexSolver::backup_closest ( btVector3 v)

Definition at line 296 of file btVoronoiSimplexSolver.cpp.

References m_cachedV, and v.

◆ closest()

bool btVoronoiSimplexSolver::closest ( btVector3 v)

◆ closestPtPointTetrahedron()

bool btVoronoiSimplexSolver::closestPtPointTetrahedron ( const btVector3 p,
const btVector3 a,
const btVector3 b,
const btVector3 c,
const btVector3 d,
btSubSimplexClosestResult finalResult 
)

◆ closestPtPointTriangle()

bool btVoronoiSimplexSolver::closestPtPointTriangle ( const btVector3 p,
const btVector3 a,
const btVector3 b,
const btVector3 c,
btSubSimplexClosestResult result 
)

◆ compute_points()

void btVoronoiSimplexSolver::compute_points ( btVector3 p1,
btVector3 p2 
)

◆ emptySimplex()

bool btVoronoiSimplexSolver::emptySimplex ( ) const

Definition at line 301 of file btVoronoiSimplexSolver.cpp.

References numVertices().

◆ fullSimplex()

bool fullSimplex ( ) const

Definition at line 152 of file btVoronoiSimplexSolver.h.

References m_numVertices.

◆ getEqualVertexThreshold()

btScalar getEqualVertexThreshold ( ) const

Definition at line 143 of file btVoronoiSimplexSolver.h.

References m_equalVertexThreshold.

◆ getSimplex()

int btVoronoiSimplexSolver::getSimplex ( btVector3 pBuf,
btVector3 qBuf,
btVector3 yBuf 
) const

◆ inSimplex()

bool btVoronoiSimplexSolver::inSimplex ( const btVector3 w)

◆ maxVertex()

btScalar btVoronoiSimplexSolver::maxVertex ( )

Definition at line 243 of file btVoronoiSimplexSolver.cpp.

References m_simplexVectorW, and numVertices().

◆ numVertices()

int numVertices ( ) const

◆ pointOutsideOfPlane()

int btVoronoiSimplexSolver::pointOutsideOfPlane ( const btVector3 p,
const btVector3 a,
const btVector3 b,
const btVector3 c,
const btVector3 d 
)

Test if point p and d lie on opposite sides of plane through abc.

Definition at line 411 of file btVoronoiSimplexSolver.cpp.

References Freestyle::a, usdtokens::b(), btVector3, Freestyle::c, blender::math::cross(), blender::math::dot(), e, and normal.

Referenced by closestPtPointTetrahedron().

◆ reduceVertices()

void btVoronoiSimplexSolver::reduceVertices ( const btUsageBitfield usedVerts)

◆ removeVertex()

void btVoronoiSimplexSolver::removeVertex ( int  index)

◆ reset()

void reset ( )

Definition at line 517 of file kernel/device/gpu/kernel.h.

◆ setEqualVertexThreshold()

void setEqualVertexThreshold ( btScalar  threshold)

Definition at line 138 of file btVoronoiSimplexSolver.h.

References m_equalVertexThreshold, and threshold.

◆ updateClosestVectorAndPoints()

bool btVoronoiSimplexSolver::updateClosestVectorAndPoints ( )

Variable Documentation

◆ btVoronoiSimplexSolver

btVoronoiSimplexSolver
Initial value:
{
public:
#define BT_DECLARE_ALIGNED_ALLOCATOR()
Definition: btScalar.h:425

btVoronoiSimplexSolver 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.

Definition at line 94 of file btVoronoiSimplexSolver.h.

Referenced by btConvex2dConvex2dAlgorithm::calculateTimeOfImpact(), btConvexConvexAlgorithm::calculateTimeOfImpact(), btSoftBodyConcaveCollisionAlgorithm::calculateTimeOfImpact(), btCollisionWorld::objectQuerySingleInternal(), btConvexConvexAlgorithm::processCollision(), btTriangleConvexcastCallback::processTriangle(), and btCollisionWorld::rayTestSingleInternal().

◆ m_cachedBC

Definition at line 117 of file btVoronoiSimplexSolver.h.

Referenced by updateClosestVectorAndPoints().

◆ m_cachedP1

btVector3 m_cachedP1

Definition at line 109 of file btVoronoiSimplexSolver.h.

Referenced by compute_points(), and updateClosestVectorAndPoints().

◆ m_cachedP2

btVector3 m_cachedP2

Definition at line 110 of file btVoronoiSimplexSolver.h.

Referenced by compute_points(), and updateClosestVectorAndPoints().

◆ m_cachedV

btVector3 m_cachedV

Definition at line 111 of file btVoronoiSimplexSolver.h.

Referenced by backup_closest(), closest(), and updateClosestVectorAndPoints().

◆ m_cachedValidClosest

bool m_cachedValidClosest

Definition at line 115 of file btVoronoiSimplexSolver.h.

Referenced by updateClosestVectorAndPoints().

◆ m_equalVertexThreshold

btScalar m_equalVertexThreshold

◆ m_lastW

btVector3 m_lastW

Definition at line 112 of file btVoronoiSimplexSolver.h.

Referenced by addVertex(), and inSimplex().

◆ m_needsUpdate

bool m_needsUpdate

Definition at line 119 of file btVoronoiSimplexSolver.h.

Referenced by addVertex(), and updateClosestVectorAndPoints().

◆ m_numVertices

int m_numVertices

Definition at line 103 of file btVoronoiSimplexSolver.h.

Referenced by fullSimplex(), and numVertices().

◆ m_simplexPointsP

◆ m_simplexPointsQ

◆ m_simplexVectorW