|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.bulletphysics.dynamics.constraintsolver.ConstraintSolver
com.bulletphysics.dynamics.constraintsolver.SequentialImpulseConstraintSolver
public class SequentialImpulseConstraintSolver
SequentialImpulseConstraintSolver uses a Propagation Method and Sequentially applies impulses. The approach is the 3D version of Erin Catto's GDC 2006 tutorial. See http://www.gphysics.com
Although Sequential Impulse is more intuitive, it is mathematically equivalent to Projected Successive Overrelaxation (iterative LCP). Applies impulses for combined restitution and penetration recovery and to simulate friction.
Field Summary | |
---|---|
protected long |
btSeed2
|
protected ContactSolverFunc[][] |
contactDispatch
|
protected ContactSolverFunc[][] |
frictionDispatch
|
Constructor Summary | |
---|---|
SequentialImpulseConstraintSolver()
|
Method Summary | |
---|---|
protected void |
addFrictionConstraint(javax.vecmath.Vector3f normalAxis,
int solverBodyIdA,
int solverBodyIdB,
int frictionIndex,
ManifoldPoint cp,
javax.vecmath.Vector3f rel_pos1,
javax.vecmath.Vector3f rel_pos2,
CollisionObject colObj0,
CollisionObject colObj1,
float relaxation)
|
long |
getRandSeed()
|
protected void |
prepareConstraints(PersistentManifold manifoldPtr,
ContactSolverInfo info,
IDebugDraw debugDrawer)
|
long |
rand2()
|
int |
randInt2(int n)
|
void |
reset()
Clear internal cached data and reset random seed. |
void |
setContactSolverFunc(ContactSolverFunc func,
int type0,
int type1)
Advanced: Override the default contact solving function for contacts, for certain types of rigidbody See RigidBody.contactSolverType and RigidBody.frictionSolverType |
void |
setFrictionSolverFunc(ContactSolverFunc func,
int type0,
int type1)
Advanced: Override the default friction solving function for contacts, for certain types of rigidbody See RigidBody.contactSolverType and RigidBody.frictionSolverType |
void |
setRandSeed(long seed)
|
protected float |
solve(RigidBody body0,
RigidBody body1,
ManifoldPoint cp,
ContactSolverInfo info,
int iter,
IDebugDraw debugDrawer)
|
float |
solveCombinedContactFriction(RigidBody body0,
RigidBody body1,
ManifoldPoint cp,
ContactSolverInfo info,
int iter,
IDebugDraw debugDrawer)
|
protected float |
solveFriction(RigidBody body0,
RigidBody body1,
ManifoldPoint cp,
ContactSolverInfo info,
int iter,
IDebugDraw debugDrawer)
|
float |
solveGroup(java.util.List<CollisionObject> bodies,
int numBodies,
java.util.List<PersistentManifold> manifoldPtr,
int manifold_offset,
int numManifolds,
java.util.List<TypedConstraint> constraints,
int constraints_offset,
int numConstraints,
ContactSolverInfo infoGlobal,
IDebugDraw debugDrawer,
Dispatcher dispatcher)
Sequentially applies impulses. |
float |
solveGroupCacheFriendly(java.util.List<CollisionObject> bodies,
int numBodies,
java.util.List<PersistentManifold> manifoldPtr,
int manifold_offset,
int numManifolds,
java.util.List<TypedConstraint> constraints,
int constraints_offset,
int numConstraints,
ContactSolverInfo infoGlobal,
IDebugDraw debugDrawer)
|
float |
solveGroupCacheFriendlyIterations(java.util.List<CollisionObject> bodies,
int numBodies,
java.util.List<PersistentManifold> manifoldPtr,
int manifold_offset,
int numManifolds,
java.util.List<TypedConstraint> constraints,
int constraints_offset,
int numConstraints,
ContactSolverInfo infoGlobal,
IDebugDraw debugDrawer)
|
float |
solveGroupCacheFriendlySetup(java.util.List<CollisionObject> bodies,
int numBodies,
java.util.List<PersistentManifold> manifoldPtr,
int manifold_offset,
int numManifolds,
java.util.List<TypedConstraint> constraints,
int constraints_offset,
int numConstraints,
ContactSolverInfo infoGlobal,
IDebugDraw debugDrawer)
|
Methods inherited from class com.bulletphysics.dynamics.constraintsolver.ConstraintSolver |
---|
allSolved, prepareSolve |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final ContactSolverFunc[][] contactDispatch
protected final ContactSolverFunc[][] frictionDispatch
protected long btSeed2
Constructor Detail |
---|
public SequentialImpulseConstraintSolver()
Method Detail |
---|
public long rand2()
public int randInt2(int n)
protected void addFrictionConstraint(javax.vecmath.Vector3f normalAxis, int solverBodyIdA, int solverBodyIdB, int frictionIndex, ManifoldPoint cp, javax.vecmath.Vector3f rel_pos1, javax.vecmath.Vector3f rel_pos2, CollisionObject colObj0, CollisionObject colObj1, float relaxation)
public float solveGroupCacheFriendlySetup(java.util.List<CollisionObject> bodies, int numBodies, java.util.List<PersistentManifold> manifoldPtr, int manifold_offset, int numManifolds, java.util.List<TypedConstraint> constraints, int constraints_offset, int numConstraints, ContactSolverInfo infoGlobal, IDebugDraw debugDrawer)
public float solveGroupCacheFriendlyIterations(java.util.List<CollisionObject> bodies, int numBodies, java.util.List<PersistentManifold> manifoldPtr, int manifold_offset, int numManifolds, java.util.List<TypedConstraint> constraints, int constraints_offset, int numConstraints, ContactSolverInfo infoGlobal, IDebugDraw debugDrawer)
public float solveGroupCacheFriendly(java.util.List<CollisionObject> bodies, int numBodies, java.util.List<PersistentManifold> manifoldPtr, int manifold_offset, int numManifolds, java.util.List<TypedConstraint> constraints, int constraints_offset, int numConstraints, ContactSolverInfo infoGlobal, IDebugDraw debugDrawer)
public float solveGroup(java.util.List<CollisionObject> bodies, int numBodies, java.util.List<PersistentManifold> manifoldPtr, int manifold_offset, int numManifolds, java.util.List<TypedConstraint> constraints, int constraints_offset, int numConstraints, ContactSolverInfo infoGlobal, IDebugDraw debugDrawer, Dispatcher dispatcher)
solveGroup
in class ConstraintSolver
protected void prepareConstraints(PersistentManifold manifoldPtr, ContactSolverInfo info, IDebugDraw debugDrawer)
public float solveCombinedContactFriction(RigidBody body0, RigidBody body1, ManifoldPoint cp, ContactSolverInfo info, int iter, IDebugDraw debugDrawer)
protected float solve(RigidBody body0, RigidBody body1, ManifoldPoint cp, ContactSolverInfo info, int iter, IDebugDraw debugDrawer)
protected float solveFriction(RigidBody body0, RigidBody body1, ManifoldPoint cp, ContactSolverInfo info, int iter, IDebugDraw debugDrawer)
public void reset()
ConstraintSolver
reset
in class ConstraintSolver
public void setContactSolverFunc(ContactSolverFunc func, int type0, int type1)
public void setFrictionSolverFunc(ContactSolverFunc func, int type0, int type1)
public void setRandSeed(long seed)
public long getRandSeed()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |