Package org.jbox2d.common
Class Settings
java.lang.Object
org.jbox2d.common.Settings
public class Settings
extends java.lang.Object
Global tuning constants based on MKS units and various integer maximums (vertices per shape,
pairs, etc.).
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final float
This is used to fatten AABBs in the dynamic tree.static final float
This is used to fatten AABBs in the dynamic tree.static final float
A body cannot sleep if its angular velocity is above this tolerance.static final float
A small angle used as a collision and constraint tolerance.static final float
This scale factor controls how fast overlap is resolved.static int
static final float
A "close to zero" float epsilon value for usestatic boolean
static boolean
static boolean
static boolean
static boolean
static final float
A body cannot sleep if its linear velocity is above this tolerance.static final float
A small length used as a collision and constraint tolerance.static final float
The maximum angular position correction used when solving constraints.static final float
The maximum linear position correction used when solving constraints.static final int
The maximum number of contact points between two convex shapes.static final int
The maximum number of vertices on a convex polygon.static final float
The maximum angular velocity of a body.static float
static final int
Maximum number of sub-steps per contact in continuous physics simulation.static final int
Maximum number of contacts to be handled to solve a TOI island.static final float
The maximum linear velocity of a body.static final float
static final float
Pi.static final float
The radius of the polygon/edge shape skin.static boolean
static final int
static boolean
Use if the table's precision is large (eg .006 or greater).static final float
smaller the precision, the larger the table.static final float
The time that a body must be still before it will go to sleep.static final float
static final float
A velocity threshold for elastic collisions. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic final float
mixFriction
(float friction1, float friction2) Friction mixing law.static final float
mixRestitution
(float restitution1, float restitution2) Restitution mixing law.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
EPSILON
public static final float EPSILONA "close to zero" float epsilon value for use- See Also:
-
PI
public static final float PIPi.- See Also:
-
FAST_ABS
public static boolean FAST_ABS -
FAST_FLOOR
public static boolean FAST_FLOOR -
FAST_CEIL
public static boolean FAST_CEIL -
FAST_ROUND
public static boolean FAST_ROUND -
FAST_ATAN2
public static boolean FAST_ATAN2 -
CONTACT_STACK_INIT_SIZE
public static int CONTACT_STACK_INIT_SIZE -
SINCOS_LUT_ENABLED
public static boolean SINCOS_LUT_ENABLED -
SINCOS_LUT_PRECISION
public static final float SINCOS_LUT_PRECISIONsmaller the precision, the larger the table. If a small table is used (eg, precision is .006 or greater), make sure you set the table to lerp it's results. Accuracy chart is in the MathUtils source. Or, run the tests yourself ininvalid reference
SinCosTest
- .0092
- .008201
- .005904
- .005204
- .004305
- .002807
- .001508
- 9.32500E-4
- 7.48000E-4
- 8.47000E-4
- .0005095
- .0001098
- 9.50499E-5
- 6.08500E-5
- 3.07000E-5
- 1.53999E-5
- See Also:
-
SINCOS_LUT_LENGTH
public static final int SINCOS_LUT_LENGTH -
SINCOS_LUT_LERP
public static boolean SINCOS_LUT_LERPUse if the table's precision is large (eg .006 or greater). Although it is more expensive, it greatly increases accuracy. Look in the MathUtils source for some test results on the accuracy and speed of lerp vs non lerp. Or, run the tests yourself ininvalid reference
SinCosTest
-
maxManifoldPoints
public static final int maxManifoldPointsThe maximum number of contact points between two convex shapes.- See Also:
-
maxPolygonVertices
public static final int maxPolygonVerticesThe maximum number of vertices on a convex polygon.- See Also:
-
aabbExtension
public static final float aabbExtensionThis is used to fatten AABBs in the dynamic tree. This allows proxies to move by a small amount without triggering a tree adjustment. This is in meters.- See Also:
-
aabbMultiplier
public static final float aabbMultiplierThis is used to fatten AABBs in the dynamic tree. This is used to predict the future position based on the current displacement. This is a dimensionless multiplier.- See Also:
-
linearSlop
public static final float linearSlopA small length used as a collision and constraint tolerance. Usually it is chosen to be numerically significant, but visually insignificant.- See Also:
-
angularSlop
public static final float angularSlopA small angle used as a collision and constraint tolerance. Usually it is chosen to be numerically significant, but visually insignificant.- See Also:
-
polygonRadius
public static final float polygonRadiusThe radius of the polygon/edge shape skin. This should not be modified. Making this smaller means polygons will have and insufficient for continuous collision. Making it larger may create artifacts for vertex collision.- See Also:
-
maxSubSteps
public static final int maxSubStepsMaximum number of sub-steps per contact in continuous physics simulation.- See Also:
-
maxTOIContacts
public static final int maxTOIContactsMaximum number of contacts to be handled to solve a TOI island.- See Also:
-
velocityThreshold
public static final float velocityThresholdA velocity threshold for elastic collisions. Any collision with a relative linear velocity below this threshold will be treated as inelastic.- See Also:
-
maxLinearCorrection
public static final float maxLinearCorrectionThe maximum linear position correction used when solving constraints. This helps to prevent overshoot.- See Also:
-
maxAngularCorrection
public static final float maxAngularCorrectionThe maximum angular position correction used when solving constraints. This helps to prevent overshoot.- See Also:
-
maxTranslation
public static final float maxTranslationThe maximum linear velocity of a body. This limit is very large and is used to prevent numerical problems. You shouldn't need to adjust this.- See Also:
-
maxTranslationSquared
public static final float maxTranslationSquared- See Also:
-
maxRotation
public static final float maxRotationThe maximum angular velocity of a body. This limit is very large and is used to prevent numerical problems. You shouldn't need to adjust this.- See Also:
-
maxRotationSquared
public static float maxRotationSquared -
baumgarte
public static final float baumgarteThis scale factor controls how fast overlap is resolved. Ideally this would be 1 so that overlap is removed in one time step. However using values close to 1 often lead to overshoot.- See Also:
-
toiBaugarte
public static final float toiBaugarte- See Also:
-
timeToSleep
public static final float timeToSleepThe time that a body must be still before it will go to sleep.- See Also:
-
linearSleepTolerance
public static final float linearSleepToleranceA body cannot sleep if its linear velocity is above this tolerance.- See Also:
-
angularSleepTolerance
public static final float angularSleepToleranceA body cannot sleep if its angular velocity is above this tolerance.- See Also:
-
-
Constructor Details
-
Settings
public Settings()
-
-
Method Details
-
mixFriction
public static final float mixFriction(float friction1, float friction2) Friction mixing law. Feel free to customize this. TODO djm: add customization- Parameters:
friction1
-friction2
-- Returns:
-
mixRestitution
public static final float mixRestitution(float restitution1, float restitution2) Restitution mixing law. Feel free to customize this. TODO djm: add customization- Parameters:
restitution1
-restitution2
-- Returns:
-