Blender V4.3
btSoftBodyInternals.h File Reference

Go to the source code of this file.

Classes

struct  btSymMatrix< T >
 
class  btSoftBodyCollisionShape
 
class  btSoftClusterCollisionShape
 
struct  btEigen
 
struct  btSoftColliders
 
struct  btSoftColliders::ClusterBase
 
struct  btSoftColliders::CollideCL_RS
 
struct  btSoftColliders::CollideCL_SS
 
struct  btSoftColliders::CollideSDF_RS
 
struct  btSoftColliders::CollideSDF_RD
 
struct  btSoftColliders::CollideSDF_RDF
 
struct  btSoftColliders::CollideVF_SS
 
struct  btSoftColliders::CollideVF_DD
 
struct  btSoftColliders::CollideFF_DD
 
struct  btSoftColliders::CollideCCD
 

Functions

static SIMD_FORCE_INLINE void findJacobian (const btMultiBodyLinkCollider *multibodyLinkCol, btMultiBodyJacobianData &jacobianData, const btVector3 &contact_point, const btVector3 &dir)
 btSoftBody implementation by Nathanael Presson
 
static SIMD_FORCE_INLINE btVector3 generateUnitOrthogonalVector (const btVector3 &u)
 
static SIMD_FORCE_INLINE bool proximityTest (const btVector3 &x1, const btVector3 &x2, const btVector3 &x3, const btVector3 &x4, const btVector3 &normal, const btScalar &mrg, btVector3 &bary)
 
static int getSign (const btVector3 &n, const btVector3 &x)
 
static SIMD_FORCE_INLINE bool hasSeparatingPlane (const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt)
 
static SIMD_FORCE_INLINE bool nearZero (const btScalar &a)
 
static SIMD_FORCE_INLINE bool sameSign (const btScalar &a, const btScalar &b)
 
static SIMD_FORCE_INLINE bool diffSign (const btScalar &a, const btScalar &b)
 
btScalar evaluateBezier2 (const btScalar &p0, const btScalar &p1, const btScalar &p2, const btScalar &t, const btScalar &s)
 
btScalar evaluateBezier (const btScalar &p0, const btScalar &p1, const btScalar &p2, const btScalar &p3, const btScalar &t, const btScalar &s)
 
static SIMD_FORCE_INLINE bool getSigns (bool type_c, const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btScalar &t0, const btScalar &t1, btScalar &lt0, btScalar &lt1)
 
static SIMD_FORCE_INLINE void getBernsteinCoeff (const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt, btScalar &k0, btScalar &k1, btScalar &k2, btScalar &k3)
 
static SIMD_FORCE_INLINE void polyDecomposition (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btScalar &j0, const btScalar &j1, const btScalar &j2, btScalar &u0, btScalar &u1, btScalar &v0, btScalar &v1)
 
static SIMD_FORCE_INLINE bool rootFindingLemma (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3)
 
static SIMD_FORCE_INLINE void getJs (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btSoftBody::Node *a, const btSoftBody::Node *b, const btSoftBody::Node *c, const btSoftBody::Node *p, const btScalar &dt, btScalar &j0, btScalar &j1, btScalar &j2)
 
static SIMD_FORCE_INLINE bool signDetermination1Internal (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btScalar &u0, const btScalar &u1, const btScalar &v0, const btScalar &v1)
 
static SIMD_FORCE_INLINE bool signDetermination2Internal (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btScalar &j0, const btScalar &j1, const btScalar &j2, const btScalar &u0, const btScalar &u1, const btScalar &v0, const btScalar &v1)
 
static SIMD_FORCE_INLINE bool signDetermination1 (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt)
 
static SIMD_FORCE_INLINE bool signDetermination2 (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt)
 
static SIMD_FORCE_INLINE bool coplanarAndInsideTest (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt)
 
static SIMD_FORCE_INLINE bool conservativeCulling (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btScalar &mrg)
 
static SIMD_FORCE_INLINE bool bernsteinVFTest (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btScalar &mrg, const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt)
 
static SIMD_FORCE_INLINE void deCasteljau (const btScalar &k0, const btScalar &k1, const btScalar &k2, const btScalar &k3, const btScalar &t0, btScalar &k10, btScalar &k20, btScalar &k30, btScalar &k21, btScalar &k12)
 
static SIMD_FORCE_INLINE bool bernsteinVFTest (const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt, const btScalar &mrg)
 
static SIMD_FORCE_INLINE bool continuousCollisionDetection (const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt, const btScalar &mrg, btVector3 &bary)
 
static SIMD_FORCE_INLINE bool bernsteinCCD (const btSoftBody::Face *face, const btSoftBody::Node *node, const btScalar &dt, const btScalar &mrg, btVector3 &bary)
 
template<typename T >
static void ZeroInitialize (T &value)
 
template<typename T >
static bool CompLess (const T &a, const T &b)
 
template<typename T >
static bool CompGreater (const T &a, const T &b)
 
template<typename T >
static T Lerp (const T &a, const T &b, btScalar t)
 
template<typename T >
static T InvLerp (const T &a, const T &b, btScalar t)
 
static btMatrix3x3 Lerp (const btMatrix3x3 &a, const btMatrix3x3 &b, btScalar t)
 
static btVector3 Clamp (const btVector3 &v, btScalar maxlength)
 
template<typename T >
static T Clamp (const T &x, const T &l, const T &h)
 
template<typename T >
static T Sq (const T &x)
 
template<typename T >
static T Cube (const T &x)
 
template<typename T >
static T Sign (const T &x)
 
template<typename T >
static bool SameSign (const T &x, const T &y)
 
static btScalar ClusterMetric (const btVector3 &x, const btVector3 &y)
 
static btMatrix3x3 ScaleAlongAxis (const btVector3 &a, btScalar s)
 
static btMatrix3x3 Cross (const btVector3 &v)
 
static btMatrix3x3 Diagonal (btScalar x)
 
static btMatrix3x3 Diagonal (const btVector3 &v)
 
static btScalar Dot (const btScalar *a, const btScalar *b, int ndof)
 
static btMatrix3x3 OuterProduct (const btScalar *v1, const btScalar *v2, const btScalar *v3, const btScalar *u1, const btScalar *u2, const btScalar *u3, int ndof)
 
static btMatrix3x3 OuterProduct (const btVector3 &v1, const btVector3 &v2)
 
static btMatrix3x3 Add (const btMatrix3x3 &a, const btMatrix3x3 &b)
 
static btMatrix3x3 Sub (const btMatrix3x3 &a, const btMatrix3x3 &b)
 
static btMatrix3x3 Mul (const btMatrix3x3 &a, btScalar b)
 
static void Orthogonalize (btMatrix3x3 &m)
 
static btMatrix3x3 MassMatrix (btScalar im, const btMatrix3x3 &iwi, const btVector3 &r)
 
static btMatrix3x3 ImpulseMatrix (btScalar dt, btScalar ima, btScalar imb, const btMatrix3x3 &iwi, const btVector3 &r)
 
static btMatrix3x3 ImpulseMatrix (btScalar dt, const btMatrix3x3 &effective_mass_inv, btScalar imb, const btMatrix3x3 &iwi, const btVector3 &r)
 
static btMatrix3x3 ImpulseMatrix (btScalar ima, const btMatrix3x3 &iia, const btVector3 &ra, btScalar imb, const btMatrix3x3 &iib, const btVector3 &rb)
 
static btMatrix3x3 AngularImpulseMatrix (const btMatrix3x3 &iia, const btMatrix3x3 &iib)
 
static btVector3 ProjectOnAxis (const btVector3 &v, const btVector3 &a)
 
static btVector3 ProjectOnPlane (const btVector3 &v, const btVector3 &a)
 
static void ProjectOrigin (const btVector3 &a, const btVector3 &b, btVector3 &prj, btScalar &sqd)
 
static void ProjectOrigin (const btVector3 &a, const btVector3 &b, const btVector3 &c, btVector3 &prj, btScalar &sqd)
 
static bool rayIntersectsTriangle (const btVector3 &origin, const btVector3 &dir, const btVector3 &v0, const btVector3 &v1, const btVector3 &v2, btScalar &t)
 
static bool lineIntersectsTriangle (const btVector3 &rayStart, const btVector3 &rayEnd, const btVector3 &p1, const btVector3 &p2, const btVector3 &p3, btVector3 &sect, btVector3 &normal)
 
template<typename T >
static T BaryEval (const T &a, const T &b, const T &c, const btVector3 &coord)
 
static btVector3 BaryCoord (const btVector3 &a, const btVector3 &b, const btVector3 &c, const btVector3 &p)
 
static btScalar ImplicitSolve (btSoftBody::ImplicitFn *fn, const btVector3 &a, const btVector3 &b, const btScalar accuracy, const int maxiterations=256)
 
static void EvaluateMedium (const btSoftBodyWorldInfo *wfi, const btVector3 &x, btSoftBody::sMedium &medium)
 
static btVector3 NormalizeAny (const btVector3 &v)
 
static btDbvtVolume VolumeOf (const btSoftBody::Face &f, btScalar margin)
 
static btVector3 CenterOf (const btSoftBody::Face &f)
 
static btScalar AreaOf (const btVector3 &x0, const btVector3 &x1, const btVector3 &x2)
 
static btScalar VolumeOf (const btVector3 &x0, const btVector3 &x1, const btVector3 &x2, const btVector3 &x3)
 
static void ApplyClampedForce (btSoftBody::Node &n, const btVector3 &f, btScalar dt)
 
static int MatchEdge (const btSoftBody::Node *a, const btSoftBody::Node *b, const btSoftBody::Node *ma, const btSoftBody::Node *mb)
 
static int PolarDecompose (const btMatrix3x3 &m, btMatrix3x3 &q, btMatrix3x3 &s)
 

Variables

static const int KDOP_COUNT = 13
 
static btVector3 dop [KDOP_COUNT]
 

Function Documentation

◆ Add()

static btMatrix3x3 Add ( const btMatrix3x3 & a,
const btMatrix3x3 & b )
inlinestatic

Definition at line 966 of file btSoftBodyInternals.h.

References b, and btMatrix3x3.

Referenced by AngularImpulseMatrix(), ImpulseMatrix(), ImpulseMatrix(), and ImpulseMatrix().

◆ AngularImpulseMatrix()

static btMatrix3x3 AngularImpulseMatrix ( const btMatrix3x3 & iia,
const btMatrix3x3 & iib )
inlinestatic

Definition at line 1035 of file btSoftBodyInternals.h.

References Add(), and inverse().

Referenced by btSoftBody::AJoint::Prepare().

◆ ApplyClampedForce()

static void ApplyClampedForce ( btSoftBody::Node & n,
const btVector3 & f,
btScalar dt )
inlinestatic

◆ AreaOf()

static btScalar AreaOf ( const btVector3 & x0,
const btVector3 & x1,
const btVector3 & x2 )
inlinestatic

Definition at line 1281 of file btSoftBodyInternals.h.

References b, and btCross().

Referenced by btSoftBody::appendFace(), btSoftBody::setTotalMass(), and btSoftBody::updateArea().

◆ BaryCoord()

static btVector3 BaryCoord ( const btVector3 & a,
const btVector3 & b,
const btVector3 & c,
const btVector3 & p )
inlinestatic

Definition at line 1186 of file btSoftBodyInternals.h.

References b, btCross(), btVector3, and w().

Referenced by btSoftColliders::CollideVF_SS::Process().

◆ BaryEval()

template<typename T >
static T BaryEval ( const T & a,
const T & b,
const T & c,
const btVector3 & coord )
inlinestatic

◆ bernsteinCCD()

static SIMD_FORCE_INLINE bool bernsteinCCD ( const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt,
const btScalar & mrg,
btVector3 & bary )
static

◆ bernsteinVFTest() [1/2]

static SIMD_FORCE_INLINE bool bernsteinVFTest ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btScalar & mrg,
const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt )
static

Definition at line 510 of file btSoftBodyInternals.h.

References conservativeCulling(), and coplanarAndInsideTest().

Referenced by bernsteinCCD(), and bernsteinVFTest().

◆ bernsteinVFTest() [2/2]

static SIMD_FORCE_INLINE bool bernsteinVFTest ( const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt,
const btScalar & mrg )
static

◆ CenterOf()

static btVector3 CenterOf ( const btSoftBody::Face & f)
inlinestatic

Definition at line 1275 of file btSoftBodyInternals.h.

References btSoftBody::Face::m_n, and btSoftBody::Node::m_x.

◆ Clamp() [1/2]

static btVector3 Clamp ( const btVector3 & v,
btScalar maxlength )
inlinestatic

Definition at line 829 of file btSoftBodyInternals.h.

References btSqrt(), and v.

◆ Clamp() [2/2]

template<typename T >
static T Clamp ( const T & x,
const T & l,
const T & h )
inlinestatic

Definition at line 839 of file btSoftBodyInternals.h.

References x.

◆ ClusterMetric()

static btScalar ClusterMetric ( const btVector3 & x,
const btVector3 & y )
inlinestatic

Definition at line 868 of file btSoftBodyInternals.h.

References btFabs(), and y.

Referenced by btSoftBody::generateClusters().

◆ CompGreater()

template<typename T >
static bool CompGreater ( const T & a,
const T & b )
inlinestatic

Definition at line 801 of file btSoftBodyInternals.h.

References b.

◆ CompLess()

template<typename T >
static bool CompLess ( const T & a,
const T & b )
inlinestatic

Definition at line 795 of file btSoftBodyInternals.h.

References b.

◆ conservativeCulling()

static SIMD_FORCE_INLINE bool conservativeCulling ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btScalar & mrg )
static

Definition at line 501 of file btSoftBodyInternals.h.

Referenced by bernsteinVFTest(), and bernsteinVFTest().

◆ continuousCollisionDetection()

static SIMD_FORCE_INLINE bool continuousCollisionDetection ( const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt,
const btScalar & mrg,
btVector3 & bary )
static

◆ coplanarAndInsideTest()

static SIMD_FORCE_INLINE bool coplanarAndInsideTest ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt )
static

◆ Cross()

static btMatrix3x3 Cross ( const btVector3 & v)
inlinestatic

Definition at line 889 of file btSoftBodyInternals.h.

References btMatrix3x3, btVector3, and v.

Referenced by btPolyhedralContactClipping::findSeparatingAxis(), and MassMatrix().

◆ Cube()

template<typename T >
static T Cube ( const T & x)
inlinestatic

Definition at line 851 of file btSoftBodyInternals.h.

◆ deCasteljau()

static SIMD_FORCE_INLINE void deCasteljau ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btScalar & t0,
btScalar & k10,
btScalar & k20,
btScalar & k30,
btScalar & k21,
btScalar & k12 )
static

Definition at line 517 of file btSoftBodyInternals.h.

Referenced by bernsteinVFTest().

◆ Diagonal() [1/2]

◆ Diagonal() [2/2]

static btMatrix3x3 Diagonal ( const btVector3 & v)
inlinestatic

Definition at line 907 of file btSoftBodyInternals.h.

References btMatrix3x3, btVector3, and v.

◆ diffSign()

static SIMD_FORCE_INLINE bool diffSign ( const btScalar & a,
const btScalar & b )
static

◆ Dot()

static btScalar Dot ( const btScalar * a,
const btScalar * b,
int ndof )
inlinestatic

Definition at line 916 of file btSoftBodyInternals.h.

References b, and result.

Referenced by OuterProduct().

◆ evaluateBezier()

btScalar evaluateBezier ( const btScalar & p0,
const btScalar & p1,
const btScalar & p2,
const btScalar & p3,
const btScalar & t,
const btScalar & s )
inline

Definition at line 161 of file btSoftBodyInternals.h.

Referenced by getSigns().

◆ evaluateBezier2()

btScalar evaluateBezier2 ( const btScalar & p0,
const btScalar & p1,
const btScalar & p2,
const btScalar & t,
const btScalar & s )
inline

Definition at line 154 of file btSoftBodyInternals.h.

Referenced by getSigns().

◆ EvaluateMedium()

◆ findJacobian()

◆ generateUnitOrthogonalVector()

◆ getBernsteinCoeff()

static SIMD_FORCE_INLINE void getBernsteinCoeff ( const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt,
btScalar & k0,
btScalar & k1,
btScalar & k2,
btScalar & k3 )
static

Definition at line 223 of file btSoftBodyInternals.h.

References dot().

Referenced by bernsteinVFTest().

◆ getJs()

static SIMD_FORCE_INLINE void getJs ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btSoftBody::Node * a,
const btSoftBody::Node * b,
const btSoftBody::Node * c,
const btSoftBody::Node * p,
const btScalar & dt,
btScalar & j0,
btScalar & j1,
btScalar & j2 )
static

Definition at line 263 of file btSoftBodyInternals.h.

References b, cross(), btSoftBody::Node::m_v, and btSoftBody::Node::m_x.

Referenced by signDetermination1(), and signDetermination2().

◆ getSign()

static int getSign ( const btVector3 & n,
const btVector3 & x )
inlinestatic

Definition at line 108 of file btSoftBodyInternals.h.

References SIMD_EPSILON.

Referenced by hasSeparatingPlane().

◆ getSigns()

static SIMD_FORCE_INLINE bool getSigns ( bool type_c,
const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btScalar & t0,
const btScalar & t1,
btScalar & lt0,
btScalar & lt1 )
static

◆ hasSeparatingPlane()

static SIMD_FORCE_INLINE bool hasSeparatingPlane ( const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt )
static

Definition at line 118 of file btSoftBodyInternals.h.

References dop, getSign(), hex, and KDOP_COUNT.

Referenced by continuousCollisionDetection().

◆ ImplicitSolve()

static btScalar ImplicitSolve ( btSoftBody::ImplicitFn * fn,
const btVector3 & a,
const btVector3 & b,
const btScalar accuracy,
const int maxiterations = 256 )
inlinestatic

Definition at line 1199 of file btSoftBodyInternals.h.

References b, btFabs(), btSwap(), btSoftBody::ImplicitFn::Eval(), Lerp(), and v.

Referenced by btSoftBody::refine().

◆ ImpulseMatrix() [1/3]

◆ ImpulseMatrix() [2/3]

static btMatrix3x3 ImpulseMatrix ( btScalar dt,
const btMatrix3x3 & effective_mass_inv,
btScalar imb,
const btMatrix3x3 & iwi,
const btVector3 & r )
inlinestatic

Definition at line 1014 of file btSoftBodyInternals.h.

References Add(), Diagonal(), inverse(), and MassMatrix().

◆ ImpulseMatrix() [3/3]

static btMatrix3x3 ImpulseMatrix ( btScalar ima,
const btMatrix3x3 & iia,
const btVector3 & ra,
btScalar imb,
const btMatrix3x3 & iib,
const btVector3 & rb )
inlinestatic

Definition at line 1028 of file btSoftBodyInternals.h.

References Add(), inverse(), and MassMatrix().

◆ InvLerp()

template<typename T >
static T InvLerp ( const T & a,
const T & b,
btScalar t )
inlinestatic

Definition at line 813 of file btSoftBodyInternals.h.

References b.

◆ Lerp() [1/2]

static btMatrix3x3 Lerp ( const btMatrix3x3 & a,
const btMatrix3x3 & b,
btScalar t )
inlinestatic

Definition at line 818 of file btSoftBodyInternals.h.

References b, btMatrix3x3, and Lerp().

◆ Lerp() [2/2]

template<typename T >
static T Lerp ( const T & a,
const T & b,
btScalar t )
inlinestatic

◆ lineIntersectsTriangle()

static bool lineIntersectsTriangle ( const btVector3 & rayStart,
const btVector3 & rayEnd,
const btVector3 & p1,
const btVector3 & p2,
const btVector3 & p3,
btVector3 & sect,
btVector3 & normal )
inlinestatic

Definition at line 1142 of file btSoftBodyInternals.h.

References cross(), rayIntersectsTriangle(), ret, and SIMD_EPSILON.

◆ MassMatrix()

static btMatrix3x3 MassMatrix ( btScalar im,
const btMatrix3x3 & iwi,
const btVector3 & r )
inlinestatic

Definition at line 997 of file btSoftBodyInternals.h.

References btMatrix3x3, Cross(), Diagonal(), and Sub().

Referenced by ImpulseMatrix(), ImpulseMatrix(), and ImpulseMatrix().

◆ MatchEdge()

static int MatchEdge ( const btSoftBody::Node * a,
const btSoftBody::Node * b,
const btSoftBody::Node * ma,
const btSoftBody::Node * mb )
inlinestatic

Definition at line 1323 of file btSoftBodyInternals.h.

References b.

Referenced by btSoftBody::cutLink().

◆ Mul()

static btMatrix3x3 Mul ( const btMatrix3x3 & a,
btScalar b )
inlinestatic

Definition at line 982 of file btSoftBodyInternals.h.

References b, and btMatrix3x3.

Referenced by btSoftBody::updatePose().

◆ nearZero()

static SIMD_FORCE_INLINE bool nearZero ( const btScalar & a)
static

Definition at line 142 of file btSoftBodyInternals.h.

References SAFE_EPSILON.

Referenced by sameSign(), signDetermination1(), and signDetermination2().

◆ NormalizeAny()

static btVector3 NormalizeAny ( const btVector3 & v)
inlinestatic

Definition at line 1253 of file btSoftBodyInternals.h.

References btVector3, l, SIMD_EPSILON, and v.

Referenced by btSoftBody::AJoint::Prepare().

◆ Orthogonalize()

static void Orthogonalize ( btMatrix3x3 & m)
inlinestatic

Definition at line 990 of file btSoftBodyInternals.h.

References btCross().

◆ OuterProduct() [1/2]

◆ OuterProduct() [2/2]

static btMatrix3x3 OuterProduct ( const btVector3 & v1,
const btVector3 & v2 )
inlinestatic

Definition at line 945 of file btSoftBodyInternals.h.

References btMatrix3x3, btVector3, and v2.

◆ PolarDecompose()

static int PolarDecompose ( const btMatrix3x3 & m,
btMatrix3x3 & q,
btMatrix3x3 & s )
inlinestatic

◆ polyDecomposition()

static SIMD_FORCE_INLINE void polyDecomposition ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btScalar & j0,
const btScalar & j1,
const btScalar & j2,
btScalar & u0,
btScalar & u1,
btScalar & v0,
btScalar & v1 )
static

Definition at line 236 of file btSoftBodyInternals.h.

Referenced by rootFindingLemma(), signDetermination1(), and signDetermination2().

◆ ProjectOnAxis()

static btVector3 ProjectOnAxis ( const btVector3 & v,
const btVector3 & a )
inlinestatic

Definition at line 1042 of file btSoftBodyInternals.h.

References btDot(), and v.

Referenced by ApplyClampedForce(), and ProjectOnPlane().

◆ ProjectOnPlane()

static btVector3 ProjectOnPlane ( const btVector3 & v,
const btVector3 & a )
inlinestatic

Definition at line 1048 of file btSoftBodyInternals.h.

References ProjectOnAxis(), and v.

Referenced by btSoftBody::PSolve_SContacts().

◆ ProjectOrigin() [1/2]

static void ProjectOrigin ( const btVector3 & a,
const btVector3 & b,
btVector3 & prj,
btScalar & sqd )
inlinestatic

Definition at line 1055 of file btSoftBodyInternals.h.

References b, btDot(), Clamp, and SIMD_EPSILON.

Referenced by btSoftColliders::CollideVF_SS::Process(), and ProjectOrigin().

◆ ProjectOrigin() [2/2]

static void ProjectOrigin ( const btVector3 & a,
const btVector3 & b,
const btVector3 & c,
btVector3 & prj,
btScalar & sqd )
inlinestatic

Definition at line 1075 of file btSoftBodyInternals.h.

References b, btCross(), btDot(), btSqrt(), ProjectOrigin(), and SIMD_EPSILON.

◆ proximityTest()

static SIMD_FORCE_INLINE bool proximityTest ( const btVector3 & x1,
const btVector3 & x2,
const btVector3 & x3,
const btVector3 & x4,
const btVector3 & normal,
const btScalar & mrg,
btVector3 & bary )
static

◆ rayIntersectsTriangle()

static bool rayIntersectsTriangle ( const btVector3 & origin,
const btVector3 & dir,
const btVector3 & v0,
const btVector3 & v1,
const btVector3 & v2,
btScalar & t )
inlinestatic

Definition at line 1109 of file btSoftBodyInternals.h.

References v, and v2.

Referenced by lineIntersectsTriangle().

◆ rootFindingLemma()

static SIMD_FORCE_INLINE bool rootFindingLemma ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3 )
static

Definition at line 245 of file btSoftBodyInternals.h.

References diffSign(), polyDecomposition(), and sameSign().

Referenced by coplanarAndInsideTest().

◆ SameSign()

template<typename T >
static bool SameSign ( const T & x,
const T & y )
inlinestatic

Definition at line 863 of file btSoftBodyInternals.h.

Referenced by btSoftBody::refine().

◆ sameSign()

static SIMD_FORCE_INLINE bool sameSign ( const btScalar & a,
const btScalar & b )
static

◆ ScaleAlongAxis()

static btMatrix3x3 ScaleAlongAxis ( const btVector3 & a,
btScalar s )
inlinestatic

Definition at line 874 of file btSoftBodyInternals.h.

References btMatrix3x3, btVector3, and xy.

◆ Sign()

template<typename T >
static T Sign ( const T & x)
inlinestatic

Definition at line 857 of file btSoftBodyInternals.h.

Referenced by KDL::abs(), and KDL::abs().

◆ signDetermination1()

static SIMD_FORCE_INLINE bool signDetermination1 ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt )
static

◆ signDetermination1Internal()

static SIMD_FORCE_INLINE bool signDetermination1Internal ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btScalar & u0,
const btScalar & u1,
const btScalar & v0,
const btScalar & v1 )
static

Definition at line 303 of file btSoftBodyInternals.h.

References diffSign(), K, L, and sameSign().

Referenced by signDetermination1().

◆ signDetermination2()

static SIMD_FORCE_INLINE bool signDetermination2 ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btSoftBody::Face * face,
const btSoftBody::Node * node,
const btScalar & dt )
static

◆ signDetermination2Internal()

static SIMD_FORCE_INLINE bool signDetermination2Internal ( const btScalar & k0,
const btScalar & k1,
const btScalar & k2,
const btScalar & k3,
const btScalar & j0,
const btScalar & j1,
const btScalar & j2,
const btScalar & u0,
const btScalar & u1,
const btScalar & v0,
const btScalar & v1 )
static

Definition at line 315 of file btSoftBodyInternals.h.

References diffSign(), and sameSign().

Referenced by signDetermination2().

◆ Sq()

template<typename T >
static T Sq ( const T & x)
inlinestatic

Definition at line 845 of file btSoftBodyInternals.h.

◆ Sub()

static btMatrix3x3 Sub ( const btMatrix3x3 & a,
const btMatrix3x3 & b )
inlinestatic

Definition at line 974 of file btSoftBodyInternals.h.

References b, and btMatrix3x3.

Referenced by MassMatrix().

◆ VolumeOf() [1/2]

◆ VolumeOf() [2/2]

static btScalar VolumeOf ( const btVector3 & x0,
const btVector3 & x1,
const btVector3 & x2,
const btVector3 & x3 )
inlinestatic

Definition at line 1293 of file btSoftBodyInternals.h.

References b, btCross(), and btDot().

◆ ZeroInitialize()

template<typename T >
static void ZeroInitialize ( T & value)
inlinestatic

Variable Documentation

◆ dop

btVector3 dop[KDOP_COUNT]
static
Initial value:
= {btVector3(1, 0, 0),
btVector3(0, 1, 0),
btVector3(0, 0, 1),
btVector3(1, 1, 0),
btVector3(1, 0, 1),
btVector3(0, 1, 1),
btVector3(1, -1, 0),
btVector3(1, 0, -1),
btVector3(0, 1, -1),
btVector3(1, 1, 1),
btVector3(1, -1, 1),
btVector3(1, 1, -1),
btVector3(1, -1, -1)}
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
Definition btVector3.h:82

Definition at line 94 of file btSoftBodyInternals.h.

Referenced by hasSeparatingPlane().

◆ KDOP_COUNT

const int KDOP_COUNT = 13
static

Definition at line 93 of file btSoftBodyInternals.h.

Referenced by hasSeparatingPlane().