cannon
Version:
A lightweight 3D physics engine written in JavaScript.
1,513 lines • 349 kB
JSON
{
"project": {
"name": "cannon",
"description": "A lightweight 3D physics engine written in JavaScript.",
"version": "0.6.1"
},
"files": {
"src/collision/AABB.js": {
"name": "src/collision/AABB.js",
"modules": {},
"classes": {
"AABB": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/ArrayCollisionMatrix.js": {
"name": "src/collision/ArrayCollisionMatrix.js",
"modules": {},
"classes": {
"ArrayCollisionMatrix": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/Broadphase.js": {
"name": "src/collision/Broadphase.js",
"modules": {},
"classes": {
"Broadphase": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/GridBroadphase.js": {
"name": "src/collision/GridBroadphase.js",
"modules": {},
"classes": {
"GridBroadphase": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/NaiveBroadphase.js": {
"name": "src/collision/NaiveBroadphase.js",
"modules": {},
"classes": {
"NaiveBroadphase": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/ObjectCollisionMatrix.js": {
"name": "src/collision/ObjectCollisionMatrix.js",
"modules": {},
"classes": {
"ObjectCollisionMatrix": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/Ray.js": {
"name": "src/collision/Ray.js",
"modules": {},
"classes": {
"Ray": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/RaycastResult.js": {
"name": "src/collision/RaycastResult.js",
"modules": {},
"classes": {
"RaycastResult": 1
},
"fors": {},
"namespaces": {}
},
"src/collision/SAPBroadphase.js": {
"name": "src/collision/SAPBroadphase.js",
"modules": {},
"classes": {
"SAPBroadphase": 1
},
"fors": {},
"namespaces": {}
},
"src/constraints/ConeTwistConstraint.js": {
"name": "src/constraints/ConeTwistConstraint.js",
"modules": {},
"classes": {
"ConeTwistConstraint": 1
},
"fors": {},
"namespaces": {}
},
"src/constraints/Constraint.js": {
"name": "src/constraints/Constraint.js",
"modules": {},
"classes": {
"Constraint": 1
},
"fors": {},
"namespaces": {}
},
"src/constraints/DistanceConstraint.js": {
"name": "src/constraints/DistanceConstraint.js",
"modules": {},
"classes": {
"DistanceConstraint": 1
},
"fors": {},
"namespaces": {}
},
"src/constraints/HingeConstraint.js": {
"name": "src/constraints/HingeConstraint.js",
"modules": {},
"classes": {
"HingeConstraint": 1
},
"fors": {},
"namespaces": {}
},
"src/constraints/LockConstraint.js": {
"name": "src/constraints/LockConstraint.js",
"modules": {},
"classes": {
"LockConstraint": 1
},
"fors": {},
"namespaces": {}
},
"src/constraints/PointToPointConstraint.js": {
"name": "src/constraints/PointToPointConstraint.js",
"modules": {},
"classes": {
"PointToPointConstraint": 1
},
"fors": {},
"namespaces": {}
},
"src/demo/Demo.js": {
"name": "src/demo/Demo.js",
"modules": {},
"classes": {
"Demo": 1
},
"fors": {},
"namespaces": {}
},
"src/equations/ConeEquation.js": {
"name": "src/equations/ConeEquation.js",
"modules": {},
"classes": {
"ConeEquation": 1
},
"fors": {},
"namespaces": {}
},
"src/equations/ContactEquation.js": {
"name": "src/equations/ContactEquation.js",
"modules": {},
"classes": {
"ContactEquation": 1
},
"fors": {},
"namespaces": {}
},
"src/equations/Equation.js": {
"name": "src/equations/Equation.js",
"modules": {},
"classes": {
"Equation": 1
},
"fors": {},
"namespaces": {}
},
"src/equations/FrictionEquation.js": {
"name": "src/equations/FrictionEquation.js",
"modules": {},
"classes": {
"FrictionEquation": 1
},
"fors": {},
"namespaces": {}
},
"src/equations/RotationalEquation.js": {
"name": "src/equations/RotationalEquation.js",
"modules": {},
"classes": {
"RotationalEquation": 1
},
"fors": {},
"namespaces": {}
},
"src/equations/RotationalMotorEquation.js": {
"name": "src/equations/RotationalMotorEquation.js",
"modules": {},
"classes": {
"RotationalMotorEquation": 1
},
"fors": {},
"namespaces": {}
},
"src/material/ContactMaterial.js": {
"name": "src/material/ContactMaterial.js",
"modules": {},
"classes": {
"ContactMaterial": 1
},
"fors": {},
"namespaces": {}
},
"src/material/Material.js": {
"name": "src/material/Material.js",
"modules": {},
"classes": {
"Material": 1
},
"fors": {},
"namespaces": {}
},
"src/math/JacobianElement.js": {
"name": "src/math/JacobianElement.js",
"modules": {},
"classes": {
"JacobianElement": 1
},
"fors": {},
"namespaces": {}
},
"src/math/Mat3.js": {
"name": "src/math/Mat3.js",
"modules": {},
"classes": {
"Mat3": 1
},
"fors": {},
"namespaces": {}
},
"src/math/Quaternion.js": {
"name": "src/math/Quaternion.js",
"modules": {},
"classes": {
"Quaternion": 1
},
"fors": {},
"namespaces": {}
},
"src/math/Transform.js": {
"name": "src/math/Transform.js",
"modules": {},
"classes": {
"Transform": 1
},
"fors": {},
"namespaces": {}
},
"src/math/Vec3.js": {
"name": "src/math/Vec3.js",
"modules": {},
"classes": {
"Vec3": 1
},
"fors": {},
"namespaces": {}
},
"src/objects/Body.js": {
"name": "src/objects/Body.js",
"modules": {},
"classes": {
"Body": 1
},
"fors": {},
"namespaces": {}
},
"src/objects/RaycastVehicle.js": {
"name": "src/objects/RaycastVehicle.js",
"modules": {},
"classes": {
"RaycastVehicle": 1
},
"fors": {},
"namespaces": {}
},
"src/objects/RigidVehicle.js": {
"name": "src/objects/RigidVehicle.js",
"modules": {},
"classes": {
"RigidVehicle": 1
},
"fors": {},
"namespaces": {}
},
"src/objects/SPHSystem.js": {
"name": "src/objects/SPHSystem.js",
"modules": {},
"classes": {
"SPHSystem": 1
},
"fors": {},
"namespaces": {}
},
"src/objects/Spring.js": {
"name": "src/objects/Spring.js",
"modules": {},
"classes": {
"Spring": 1
},
"fors": {},
"namespaces": {}
},
"src/objects/WheelInfo.js": {
"name": "src/objects/WheelInfo.js",
"modules": {},
"classes": {
"WheelInfo": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Box.js": {
"name": "src/shapes/Box.js",
"modules": {},
"classes": {
"Box": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/ConvexPolyhedron.js": {
"name": "src/shapes/ConvexPolyhedron.js",
"modules": {},
"classes": {
"ConvexPolyhedron": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Cylinder.js": {
"name": "src/shapes/Cylinder.js",
"modules": {},
"classes": {
"Cylinder": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Heightfield.js": {
"name": "src/shapes/Heightfield.js",
"modules": {},
"classes": {
"Heightfield": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Particle.js": {
"name": "src/shapes/Particle.js",
"modules": {},
"classes": {
"Particle": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Plane.js": {
"name": "src/shapes/Plane.js",
"modules": {},
"classes": {
"Plane": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Shape.js": {
"name": "src/shapes/Shape.js",
"modules": {},
"classes": {
"Shape": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Sphere.js": {
"name": "src/shapes/Sphere.js",
"modules": {},
"classes": {
"Sphere": 1
},
"fors": {},
"namespaces": {}
},
"src/shapes/Trimesh.js": {
"name": "src/shapes/Trimesh.js",
"modules": {},
"classes": {
"Trimesh": 1
},
"fors": {},
"namespaces": {}
},
"src/solver/GSSolver.js": {
"name": "src/solver/GSSolver.js",
"modules": {},
"classes": {
"GSSolver": 1
},
"fors": {},
"namespaces": {}
},
"src/solver/Solver.js": {
"name": "src/solver/Solver.js",
"modules": {},
"classes": {
"Solver": 1
},
"fors": {},
"namespaces": {}
},
"src/solver/SplitSolver.js": {
"name": "src/solver/SplitSolver.js",
"modules": {},
"classes": {
"SplitSolver": 1
},
"fors": {},
"namespaces": {}
},
"src/utils/EventTarget.js": {
"name": "src/utils/EventTarget.js",
"modules": {},
"classes": {
"EventTarget": 1
},
"fors": {},
"namespaces": {}
},
"src/utils/Octree.js": {
"name": "src/utils/Octree.js",
"modules": {},
"classes": {
"OctreeNode": 1,
"Octree": 1
},
"fors": {},
"namespaces": {}
},
"src/utils/Pool.js": {
"name": "src/utils/Pool.js",
"modules": {},
"classes": {
"Pool": 1
},
"fors": {},
"namespaces": {}
},
"src/utils/TupleDictionary.js": {
"name": "src/utils/TupleDictionary.js",
"modules": {},
"classes": {
"TupleDictionary": 1
},
"fors": {},
"namespaces": {}
},
"src/utils/Utils.js": {
"name": "src/utils/Utils.js",
"modules": {},
"classes": {},
"fors": {},
"namespaces": {}
},
"src/utils/Vec3Pool.js": {
"name": "src/utils/Vec3Pool.js",
"modules": {},
"classes": {
"Vec3Pool": 1
},
"fors": {},
"namespaces": {}
},
"src/world/Narrowphase.js": {
"name": "src/world/Narrowphase.js",
"modules": {},
"classes": {
"Narrowphase": 1
},
"fors": {},
"namespaces": {}
},
"src/world/World.js": {
"name": "src/world/World.js",
"modules": {},
"classes": {
"World": 1
},
"fors": {},
"namespaces": {}
}
},
"modules": {},
"classes": {
"AABB": {
"name": "AABB",
"shortname": "AABB",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/AABB.js",
"line": 6,
"description": "Axis aligned bounding box class.",
"is_constructor": 1,
"params": [
{
"name": "options",
"description": "",
"type": "Object",
"optional": true,
"props": [
{
"name": "upperBound",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "lowerBound",
"description": "",
"type": "Vec3",
"optional": true
}
]
}
]
},
"ArrayCollisionMatrix": {
"name": "ArrayCollisionMatrix",
"shortname": "ArrayCollisionMatrix",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/ArrayCollisionMatrix.js",
"line": 3,
"description": "Collision \"matrix\". It's actually a triangular-shaped array of whether two bodies are touching this step, for reference next step",
"is_constructor": 1
},
"Broadphase": {
"name": "Broadphase",
"shortname": "Broadphase",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/Broadphase.js",
"line": 9,
"description": "Base class for broadphase implementations",
"is_constructor": 1,
"author": "schteppe"
},
"GridBroadphase": {
"name": "GridBroadphase",
"shortname": "GridBroadphase",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/GridBroadphase.js",
"line": 7,
"description": "Axis aligned uniform grid broadphase.",
"is_constructor": 1,
"extends": "Broadphase",
"todo": [
"Needs support for more than just planes and spheres."
],
"params": [
{
"name": "aabbMin",
"description": "",
"type": "Vec3"
},
{
"name": "aabbMax",
"description": "",
"type": "Vec3"
},
{
"name": "nx",
"description": "Number of boxes along x",
"type": "Number"
},
{
"name": "ny",
"description": "Number of boxes along y",
"type": "Number"
},
{
"name": "nz",
"description": "Number of boxes along z",
"type": "Number"
}
]
},
"NaiveBroadphase": {
"name": "NaiveBroadphase",
"shortname": "NaiveBroadphase",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/NaiveBroadphase.js",
"line": 6,
"description": "Naive broadphase implementation, used in lack of better ones.",
"is_constructor": 1,
"extends": "Broadphase"
},
"ObjectCollisionMatrix": {
"name": "ObjectCollisionMatrix",
"shortname": "ObjectCollisionMatrix",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/ObjectCollisionMatrix.js",
"line": 3,
"description": "Records what objects are colliding with each other",
"is_constructor": 1
},
"Ray": {
"name": "Ray",
"shortname": "Ray",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/Ray.js",
"line": 12,
"description": "A line in 3D space that intersects bodies and return points.",
"is_constructor": 1,
"params": [
{
"name": "from",
"description": "",
"type": "Vec3"
},
{
"name": "to",
"description": "",
"type": "Vec3"
}
]
},
"RaycastResult": {
"name": "RaycastResult",
"shortname": "RaycastResult",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/RaycastResult.js",
"line": 5,
"description": "Storage for Ray casting data.",
"is_constructor": 1
},
"SAPBroadphase": {
"name": "SAPBroadphase",
"shortname": "SAPBroadphase",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/collision/SAPBroadphase.js",
"line": 6,
"description": "Sweep and prune broadphase along one axis.",
"is_constructor": 1,
"params": [
{
"name": "world",
"description": "",
"type": "World",
"optional": true
}
],
"extends": "Broadphase"
},
"ConeTwistConstraint": {
"name": "ConeTwistConstraint",
"shortname": "ConeTwistConstraint",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/constraints/ConeTwistConstraint.js",
"line": 10,
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "options",
"description": "",
"type": "Object",
"optional": true,
"props": [
{
"name": "pivotA",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "pivotB",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "axisA",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "axisB",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "maxForce",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "1e6"
}
]
}
],
"extends": "PointToPointConstraint"
},
"Constraint": {
"name": "Constraint",
"shortname": "Constraint",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/constraints/Constraint.js",
"line": 5,
"description": "Constraint base class",
"author": "schteppe",
"is_constructor": 1,
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "options",
"description": "",
"type": "Object",
"optional": true,
"props": [
{
"name": "collideConnected",
"description": "",
"type": "Boolean",
"optional": true,
"optdefault": "true"
},
{
"name": "wakeUpBodies",
"description": "",
"type": "Boolean",
"optional": true,
"optdefault": "true"
}
]
}
]
},
"DistanceConstraint": {
"name": "DistanceConstraint",
"shortname": "DistanceConstraint",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/constraints/DistanceConstraint.js",
"line": 6,
"description": "Constrains two bodies to be at a constant distance from each others center of mass.",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "distance",
"description": "The distance to keep. If undefined, it will be set to the current distance between bodyA and bodyB",
"type": "Number",
"optional": true
},
{
"name": "maxForce",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "1e6"
}
],
"extends": "Constraint"
},
"HingeConstraint": {
"name": "HingeConstraint",
"shortname": "HingeConstraint",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/constraints/HingeConstraint.js",
"line": 10,
"description": "Hinge constraint. Think of it as a door hinge. It tries to keep the door in the correct place and with the correct orientation.",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "options",
"description": "",
"type": "Object",
"optional": true,
"props": [
{
"name": "pivotA",
"description": "A point defined locally in bodyA. This defines the offset of axisA.",
"type": "Vec3",
"optional": true
},
{
"name": "axisA",
"description": "An axis that bodyA can rotate around, defined locally in bodyA.",
"type": "Vec3",
"optional": true
},
{
"name": "pivotB",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "axisB",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "maxForce",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "1e6"
}
]
}
],
"extends": "PointToPointConstraint"
},
"LockConstraint": {
"name": "LockConstraint",
"shortname": "LockConstraint",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/constraints/LockConstraint.js",
"line": 10,
"description": "Lock constraint. Will remove all degrees of freedom between the bodies.",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "options",
"description": "",
"type": "Object",
"optional": true,
"props": [
{
"name": "maxForce",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "1e6"
}
]
}
],
"extends": "PointToPointConstraint"
},
"PointToPointConstraint": {
"name": "PointToPointConstraint",
"shortname": "PointToPointConstraint",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/constraints/PointToPointConstraint.js",
"line": 7,
"description": "Connects two bodies at given offset points.",
"extends": "Constraint",
"is_constructor": 1,
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "pivotA",
"description": "The point relative to the center of mass of bodyA which bodyA is constrained to.",
"type": "Vec3"
},
{
"name": "bodyB",
"description": "Body that will be constrained in a similar way to the same point as bodyA. We will therefore get a link between bodyA and bodyB. If not specified, bodyA will be constrained to a static point.",
"type": "Body"
},
{
"name": "pivotB",
"description": "See pivotA.",
"type": "Vec3"
},
{
"name": "maxForce",
"description": "The maximum force that should be applied to constrain the bodies.",
"type": "Number"
}
],
"example": [
"\n var bodyA = new Body({ mass: 1 });\n var bodyB = new Body({ mass: 1 });\n bodyA.position.set(-1, 0, 0);\n bodyB.position.set(1, 0, 0);\n bodyA.addShape(shapeA);\n bodyB.addShape(shapeB);\n world.addBody(bodyA);\n world.addBody(bodyB);\n var localPivotA = new Vec3(1, 0, 0);\n var localPivotB = new Vec3(-1, 0, 0);\n var constraint = new PointToPointConstraint(bodyA, localPivotA, bodyB, localPivotB);\n world.addConstraint(constraint);"
]
},
"Demo": {
"name": "Demo",
"shortname": "Demo",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/demo/Demo.js",
"line": 5,
"description": "Demo framework class. If you want to learn how to connect Cannon.js with Three.js, please look at the examples/ instead.",
"is_constructor": 1,
"params": [
{
"name": "options",
"description": "",
"type": "Object"
}
]
},
"ConeEquation": {
"name": "ConeEquation",
"shortname": "ConeEquation",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/equations/ConeEquation.js",
"line": 7,
"description": "Cone equation. Works to keep the given body world vectors aligned, or tilted within a given angle from each other.",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "options.axisA",
"description": "Local axis in A",
"type": "Vec3",
"optional": true
},
{
"name": "options.axisB",
"description": "Local axis in B",
"type": "Vec3",
"optional": true
},
{
"name": "options.angle",
"description": "The \"cone angle\" to keep",
"type": "Vec3",
"optional": true
},
{
"name": "options.maxForce",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "1e6"
}
],
"extends": "Equation"
},
"ContactEquation": {
"name": "ContactEquation",
"shortname": "ContactEquation",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/equations/ContactEquation.js",
"line": 7,
"description": "Contact/non-penetration constraint equation",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
}
],
"extends": "Equation"
},
"Equation": {
"name": "Equation",
"shortname": "Equation",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/equations/Equation.js",
"line": 6,
"description": "Equation base class",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bi",
"description": "",
"type": "Body"
},
{
"name": "bj",
"description": "",
"type": "Body"
},
{
"name": "minForce",
"description": "Minimum (read: negative max) force to be applied by the constraint.",
"type": "Number"
},
{
"name": "maxForce",
"description": "Maximum (read: positive max) force to be applied by the constraint.",
"type": "Number"
}
]
},
"FrictionEquation": {
"name": "FrictionEquation",
"shortname": "FrictionEquation",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/equations/FrictionEquation.js",
"line": 7,
"description": "Constrains the slipping in a contact along a tangent",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "slipForce",
"description": "should be +-F_friction = +-mu * F_normal = +-mu * m * g",
"type": "Number"
}
],
"extends": "Equation"
},
"RotationalEquation": {
"name": "RotationalEquation",
"shortname": "RotationalEquation",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/equations/RotationalEquation.js",
"line": 7,
"description": "Rotational constraint. Works to keep the local vectors orthogonal to each other in world space.",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "options.axisA",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "options.axisB",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "options.maxForce",
"description": "",
"type": "Number",
"optional": true
}
],
"extends": "Equation"
},
"RotationalMotorEquation": {
"name": "RotationalMotorEquation",
"shortname": "RotationalMotorEquation",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/equations/RotationalMotorEquation.js",
"line": 7,
"description": "Rotational motor constraint. Tries to keep the relative angular velocity of the bodies to a given value.",
"is_constructor": 1,
"author": "schteppe",
"params": [
{
"name": "bodyA",
"description": "",
"type": "Body"
},
{
"name": "bodyB",
"description": "",
"type": "Body"
},
{
"name": "maxForce",
"description": "",
"type": "Number"
}
],
"extends": "Equation"
},
"ContactMaterial": {
"name": "ContactMaterial",
"shortname": "ContactMaterial",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/material/ContactMaterial.js",
"line": 5,
"description": "Defines what happens when two materials meet.",
"is_constructor": 1,
"params": [
{
"name": "m1",
"description": "",
"type": "Material"
},
{
"name": "m2",
"description": "",
"type": "Material"
},
{
"name": "options",
"description": "",
"type": "Object",
"optional": true,
"props": [
{
"name": "friction",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "0.3"
},
{
"name": "restitution",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "0.3"
},
{
"name": "contactEquationStiffness",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "1e7"
},
{
"name": "contactEquationRelaxation",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "3"
},
{
"name": "frictionEquationStiffness",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "1e7"
},
{
"name": "frictionEquationRelaxation",
"description": "",
"type": "Number",
"optional": true,
"optdefault": "3"
}
]
}
]
},
"Material": {
"name": "Material",
"shortname": "Material",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/material/Material.js",
"line": 3,
"description": "Defines a physics material.",
"is_constructor": 1,
"params": [
{
"name": "options",
"description": "",
"type": "Object",
"optional": true
}
],
"author": "schteppe"
},
"JacobianElement": {
"name": "JacobianElement",
"shortname": "JacobianElement",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/math/JacobianElement.js",
"line": 5,
"description": "An element containing 6 entries, 3 spatial and 3 rotational degrees of freedom.",
"is_constructor": 1
},
"Mat3": {
"name": "Mat3",
"shortname": "Mat3",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/math/Mat3.js",
"line": 5,
"description": "A 3x3 matrix.",
"is_constructor": 1,
"params": [
{
"name": "array",
"description": "elements Array of nine elements. Optional."
}
],
"author": "schteppe / http://github.com/schteppe"
},
"Quaternion": {
"name": "Quaternion",
"shortname": "Quaternion",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/math/Quaternion.js",
"line": 5,
"description": "A Quaternion describes a rotation in 3D space. The Quaternion is mathematically defined as Q = x*i + y*j + z*k + w, where (i,j,k) are imaginary basis vectors. (x,y,z) can be seen as a vector related to the axis of rotation, while the real multiplier, w, is related to the amount of rotation.",
"is_constructor": 1,
"params": [
{
"name": "x",
"description": "Multiplier of the imaginary basis vector i.",
"type": "Number"
},
{
"name": "y",
"description": "Multiplier of the imaginary basis vector j.",
"type": "Number"
},
{
"name": "z",
"description": "Multiplier of the imaginary basis vector k.",
"type": "Number"
},
{
"name": "w",
"description": "Multiplier of the real part.",
"type": "Number"
}
],
"see": [
"http://en.wikipedia.org/wiki/Quaternion"
]
},
"Transform": {
"name": "Transform",
"shortname": "Transform",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/math/Transform.js",
"line": 6,
"is_constructor": 1
},
"Vec3": {
"name": "Vec3",
"shortname": "Vec3",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/math/Vec3.js",
"line": 5,
"description": "3-dimensional vector",
"is_constructor": 1,
"params": [
{
"name": "x",
"description": "",
"type": "Number"
},
{
"name": "y",
"description": "",
"type": "Number"
},
{
"name": "z",
"description": "",
"type": "Number"
}
],
"author": "schteppe",
"example": [
"\n var v = new Vec3(1, 2, 3);\n console.log('x=' + v.x); // x=1"
]
},
"Body": {
"name": "Body",
"shortname": "Body",
"classitems": [],
"plugins": [],
"extensions": [],
"plugin_for": [],
"extension_for": [],
"file": "src/objects/Body.js",
"line": 12,
"description": "Base class for all body types.",
"is_constructor": 1,
"extends": "EventTarget",
"params": [
{
"name": "options",
"description": "",
"type": "Object",
"optional": true,
"props": [
{
"name": "position",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "velocity",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "angularVelocity",
"description": "",
"type": "Vec3",
"optional": true
},
{
"name": "quaternion",
"description": "",
"type": "Quaternion",
"optional": true
},
{
"name": "mass",
"description": "",
"type": "Number",
"optional": true
},
{
"name": "material",
"description": "",