UNPKG

cannon

Version:

A lightweight 3D physics engine written in JavaScript.

1,513 lines 349 kB
{ "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": "",