module LowLevel: sig .. end
Opaque types of ODE objects.
type dWorldID
type dSpaceID
type dBodyID
type 'a dGeomID
type dJointID
type dJointGroupID
type dMass
type dVector3 = {
|
x : float; |
|
y : float; |
|
z : float; |
|
w : float; |
}
Note: These structures are binary-compatible with the ODE definitions,
provided that the ODE library was compiled with dDOUBLE.
Otherwise the OCaml datas are copied to the appropriate C type.
type dVector4 = dVector3
type dMatrix3 = {
|
r11 : float; |
|
r12 : float; |
|
r13 : float; |
|
r14 : float; |
|
r21 : float; |
|
r22 : float; |
|
r23 : float; |
|
r24 : float; |
|
r31 : float; |
|
r32 : float; |
|
r33 : float; |
|
r34 : float; |
}
type dMatrix4 = {
|
s11 : float; |
|
s12 : float; |
|
s13 : float; |
|
s14 : float; |
|
s21 : float; |
|
s22 : float; |
|
s23 : float; |
|
s24 : float; |
|
s31 : float; |
|
s32 : float; |
|
s33 : float; |
|
s34 : float; |
|
s41 : float; |
|
s42 : float; |
|
s43 : float; |
|
s44 : float; |
}
type dMatrix6 = {
|
t11 : float; |
|
t12 : float; |
|
t13 : float; |
|
t14 : float; |
|
t15 : float; |
|
t16 : float; |
|
t17 : float; |
|
t18 : float; |
|
t21 : float; |
|
t22 : float; |
|
t23 : float; |
|
t24 : float; |
|
t25 : float; |
|
t26 : float; |
|
t27 : float; |
|
t28 : float; |
|
t31 : float; |
|
t32 : float; |
|
t33 : float; |
|
t34 : float; |
|
t35 : float; |
|
t36 : float; |
|
t37 : float; |
|
t38 : float; |
|
t41 : float; |
|
t42 : float; |
|
t43 : float; |
|
t44 : float; |
|
t45 : float; |
|
t46 : float; |
|
t47 : float; |
|
t48 : float; |
|
t51 : float; |
|
t52 : float; |
|
t53 : float; |
|
t54 : float; |
|
t55 : float; |
|
t56 : float; |
|
t57 : float; |
|
t58 : float; |
|
t61 : float; |
|
t62 : float; |
|
t63 : float; |
|
t64 : float; |
|
t65 : float; |
|
t66 : float; |
|
t67 : float; |
|
t68 : float; |
}
type dQuaternion = {
|
q1 : float; |
|
q2 : float; |
|
q3 : float; |
|
q4 : float; |
}
type ('a, 'b) dContactGeom = {
}
Contact points.
type ('a, 'b) dContact = {
}
Contact structure.
type dSurfaceParameters = {
|
sp_mode : [ `dContactApprox1 | `dContactApprox1_1 | `dContactApprox1_2 | `dContactBounce | `dContactFDir1 | `dContactMotion1 | `dContactMotion2 | `dContactMu2 | `dContactSlip1 | `dContactSlip2 | `dContactSoftCFM | `dContactSoftERP ] list; |
|
sp_mu : float; |
|
sp_mu2 : float; |
|
sp_bounce : float; |
|
sp_bounce_vel : float; |
|
sp_soft_erp : float; |
|
sp_soft_cfm : float; |
|
sp_motion1 : float; |
|
sp_motion2 : float; |
|
sp_slip1 : float; |
|
sp_slip2 : float; |
}
val surf_param_zero : dSurfaceParameters
val get_surface : mu:float ->
?mu2:float ->
?bounce:float ->
?bounce_vel:float ->
?soft_erp:float ->
?soft_cfm:float ->
?motion1:float ->
?motion2:float ->
?slip1:float -> ?slip2:float -> unit -> dSurfaceParameters
type surface_parameter =
| |
Mu2 of float |
| |
Bounce of float |
| |
BounceVel of float |
| |
SoftERP of float |
| |
SoftCFM of float |
| |
Motion1 of float |
| |
Motion2 of float |
| |
Slip1 of float |
| |
Slip2 of float |
val surface_param : mu:float ->
surface_parameter list -> dSurfaceParameters
type joint_type =
| |
JointTypeNone |
| |
JointTypeBall |
| |
JointTypeHinge |
| |
JointTypeSlider |
| |
JointTypeContact |
| |
JointTypeUniversal |
| |
JointTypeHinge2 |
| |
JointTypeFixed |
| |
JointTypeNull |
| |
JointTypeAMotor |
| |
JointTypeLMotor |
| |
JointTypePlane2D |
| |
JointTypePR |
type dJointParam =
| |
DParamLoStop |
| |
DParamHiStop |
| |
DParamVel |
| |
DParamFMax |
| |
DParamFudgeFactor |
| |
DParamBounce |
| |
DParamCFM |
| |
DParamStopERP |
| |
DParamStopCFM |
| |
DParamSuspensionERP |
| |
DParamSuspensionCFM |
| |
DParamERP |
| |
DParamLoStop2 |
| |
DParamHiStop2 |
| |
DParamVel2 |
| |
DParamFMax2 |
| |
DParamFudgeFactor2 |
| |
DParamBounce2 |
| |
DParamCFM2 |
| |
DParamStopERP2 |
| |
DParamStopCFM2 |
| |
DParamSuspensionERP2 |
| |
DParamSuspensionCFM2 |
| |
DParamERP2 |
| |
DParamLoStop3 |
| |
DParamHiStop3 |
| |
DParamVel3 |
| |
DParamFMax3 |
| |
DParamFudgeFactor3 |
| |
DParamBounce3 |
| |
DParamCFM3 |
| |
DParamStopERP3 |
| |
DParamStopCFM3 |
| |
DParamSuspensionERP3 |
| |
DParamSuspensionCFM3 |
| |
DParamERP3 |
| |
DParamGroup |
val dGetInfinity : unit -> float
val dInfinity : float
val dInitODE : unit -> unit
World
val dWorldCreate : unit -> dWorldID
val dWorldDestroy : dWorldID -> unit
val dWorldSetGravity : dWorldID -> x:float -> y:float -> z:float -> unit
val dWorldGetGravity : dWorldID -> dVector3 -> unit
val dWorldSetERP : dWorldID -> erp:float -> unit
val dWorldGetERP : dWorldID -> float
val dWorldSetCFM : dWorldID -> cfm:float -> unit
val dWorldGetCFM : dWorldID -> float
val dCloseODE : unit -> unit
val dWorldStep : dWorldID -> float -> unit
val dWorldQuickStep : dWorldID -> float -> unit
val dWorldStepFast1 : dWorldID -> stepsize:float -> maxiterations:int -> unit
val dWorldSetAutoEnableDepthSF1 : dWorldID -> int -> unit
val dWorldGetAutoEnableDepthSF1 : dWorldID -> int
val dWorldSetQuickStepNumIterations : dWorldID -> num:int -> unit
val dWorldGetQuickStepNumIterations : dWorldID -> int
val dWorldSetContactSurfaceLayer : dWorldID -> depth:float -> unit
val dWorldGetContactSurfaceLayer : dWorldID -> float
Bodies
val dBodyCreate : dWorldID -> dBodyID
val dBodyDestroy : dBodyID -> unit
val dBodyGetWorld : dBodyID -> dWorldID
val dBodySetPosition : dBodyID -> x:float -> y:float -> z:float -> unit
val dBodySetRotation : dBodyID -> dMatrix3 -> unit
val dBodySetQuaternion : dBodyID -> dQuaternion -> unit
val dBodySetLinearVel : dBodyID -> x:float -> y:float -> z:float -> unit
val dBodySetAngularVel : dBodyID -> x:float -> y:float -> z:float -> unit
val dBodyGetPosition : dBodyID -> dVector3
val dBodyGetRotation : dBodyID -> dMatrix3
val dBodyGetQuaternion : dBodyID -> dQuaternion
val dBodyGetLinearVel : dBodyID -> dVector3
val dBodyGetAngularVel : dBodyID -> dVector3
val dBodySetMass : dBodyID -> dMass -> unit
val dBodyGetMass : dBodyID -> dMass
val dBodyAddForce : dBodyID -> fx:float -> fy:float -> fz:float -> unit
val dBodyAddTorque : dBodyID -> fx:float -> fy:float -> fz:float -> unit
val dBodyAddRelForce : dBodyID -> fx:float -> fy:float -> fz:float -> unit
val dBodyAddRelTorque : dBodyID -> fx:float -> fy:float -> fz:float -> unit
val dBodyGetRelPointPos : dBodyID ->
px:float -> py:float -> pz:float -> dVector3
val dBodyGetPosRelPoint : dBodyID ->
px:float -> py:float -> pz:float -> dVector3
val dBodyGetRelPointVel : dBodyID ->
px:float -> py:float -> pz:float -> dVector3
val dBodyGetPointVel : dBodyID ->
px:float -> py:float -> pz:float -> dVector3
val dBodyVectorToWorld : dBodyID ->
px:float -> py:float -> pz:float -> dVector3
val dBodyVectorFromWorld : dBodyID ->
px:float -> py:float -> pz:float -> dVector3
val dBodyEnable : dBodyID -> unit
val dBodyDisable : dBodyID -> unit
val dBodyIsEnabled : dBodyID -> bool
val dBodySetAutoDisableFlag : dBodyID -> bool -> unit
val dBodyGetAutoDisableFlag : dBodyID -> bool
val dBodySetAutoDisableSteps : dBodyID -> steps:int -> unit
val dBodyGetAutoDisableSteps : dBodyID -> int
val dBodySetAutoDisableTime : dBodyID -> time:float -> unit
val dBodyGetAutoDisableTime : dBodyID -> float
val dAreConnected : a:dBodyID -> b:dBodyID -> bool
val dAreConnectedExcluding : a:dBodyID ->
b:dBodyID -> joint_type -> bool
val dBodySetGravityMode : dBodyID -> mode:bool -> unit
val dBodyGetGravityMode : dBodyID -> bool
val dBodySetData : dBodyID -> int -> unit
val dBodyGetData : dBodyID -> int
you can use these functions for example to associate user data to a body: let body_data_tbl = Hashtbl.create 16
let dBodySetData =
let body_data_count = ref 0 in
fun body ~data ->
let i = !body_data_count in
incr body_data_count;
Hashtbl.add body_data_tbl i data;
dBodySetData body i;
;;
let dBodyGetData body = (Hashtbl.find body_data_tbl (dBodyGetData body))
Joints
val dJointCreateBall : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreateHinge : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreateSlider : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreateContact : dWorldID ->
dJointGroupID option ->
('a, 'b) dContact -> dJointID
val dJointCreateUniversal : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreateHinge2 : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreateFixed : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreateAMotor : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreateLMotor : dWorldID ->
dJointGroupID option -> dJointID
val dJointCreatePlane2D : dWorldID ->
dJointGroupID option -> dJointID
val dJointDestroy : dJointID -> unit
val dJointGroupCreate : unit -> dJointGroupID
val dJointGroupDestroy : dJointGroupID -> unit
val dJointGroupEmpty : dJointGroupID -> unit
val dJointAttach : dJointID ->
dBodyID option -> dBodyID option -> unit
val dJointSetSliderAxis : dJointID -> x:float -> y:float -> z:float -> unit
val dJointGetSliderAxis : dJointID -> dVector3
val dJointGetSliderPosition : dJointID -> float
val dJointGetSliderPositionRate : dJointID -> float
val dJointSetHingeParam : dJointID -> dJointParam -> float -> unit
val dJointSetSliderParam : dJointID -> dJointParam -> float -> unit
val dJointSetHinge2Param : dJointID -> dJointParam -> float -> unit
val dJointSetUniversalParam : dJointID -> dJointParam -> float -> unit
val dJointSetAMotorParam : dJointID -> dJointParam -> float -> unit
val dJointSetLMotorParam : dJointID -> dJointParam -> float -> unit
val dJointGetHingeParam : dJointID -> dJointParam -> float
val dJointGetSliderParam : dJointID -> dJointParam -> float
val dJointGetHinge2Param : dJointID -> dJointParam -> float
val dJointGetUniversalParam : dJointID -> dJointParam -> float
val dJointGetAMotorParam : dJointID -> dJointParam -> float
val dJointGetLMotorParam : dJointID -> dJointParam -> float
val dJointSetBallAnchor : dJointID -> x:float -> y:float -> z:float -> unit
val dJointSetBallAnchor2 : dJointID -> x:float -> y:float -> z:float -> unit
val dJointSetHingeAnchor : dJointID -> x:float -> y:float -> z:float -> unit
val dJointSetHingeAnchorDelta : dJointID ->
x:float -> y:float -> z:float -> ax:float -> ay:float -> az:float -> unit
val dJointSetHingeAxis : dJointID -> x:float -> y:float -> z:float -> unit
val dJointAddHingeTorque : dJointID -> torque:float -> unit
val dJointSetSliderAxisDelta : dJointID ->
x:float -> y:float -> z:float -> ax:float -> ay:float -> az:float -> unit
val dJointAddSliderForce : dJointID -> force:float -> unit
val dJointSetHinge2Anchor : dJointID -> x:float -> y:float -> z:float -> unit
val dJointSetHinge2Axis1 : dJointID -> x:float -> y:float -> z:float -> unit
val dJointSetHinge2Axis2 : dJointID -> x:float -> y:float -> z:float -> unit
val dJointAddHinge2Torques : dJointID -> torque1:float -> torque2:float -> unit
val dJointSetPlane2DXParam : dJointID -> dJointParam -> float -> unit
val dJointSetPlane2DYParam : dJointID -> dJointParam -> float -> unit
val dJointSetPlane2DAngleParam : dJointID -> dJointParam -> float -> unit
val dJointGetHingeAngle : dJointID -> float
val dJointGetHingeAngleRate : dJointID -> float
val dJointGetHinge2Angle1 : dJointID -> float
val dJointGetHinge2Angle1Rate : dJointID -> float
val dJointGetHinge2Angle2Rate : dJointID -> float
val dBodyGetNumJoints : dBodyID -> int
val dBodyGetJoint : dBodyID -> index:int -> dJointID
val dJointSetData : dJointID -> data:int -> unit
val dJointGetData : dJointID -> int
val dJointGetType : dJointID -> joint_type
val dJointGetBody : dJointID -> index:int -> dBodyID
type dJointFeedback = {
}
type dJointFeedbackBuffer
val dJointSetFeedback : dJointID -> dJointFeedbackBuffer
val dJointFeedbackBufferDestroy : dJointFeedbackBuffer -> unit
frees the memory of the buffer
(destroy the associated world and/or joint won't free this buffer)
val dJointGetFeedback : dJointID -> dJointFeedback
val dJointFeedback_of_buffer : dJointFeedbackBuffer -> dJointFeedback
Space
val dSimpleSpaceCreate : dSpaceID option -> dSpaceID
val dHashSpaceCreate : dSpaceID option -> dSpaceID
val dQuadTreeSpaceCreate : dSpaceID option ->
center:dVector3 ->
extents:dVector3 -> depth:int -> dSpaceID
val dSpaceDestroy : dSpaceID -> unit
val dHashSpaceSetLevels : dSpaceID -> minlevel:int -> maxlevel:int -> unit
val dHashSpaceGetLevels : dSpaceID -> int * int
val dSpaceAdd : dSpaceID -> 'a dGeomID -> unit
val dSpaceRemove : dSpaceID -> 'a dGeomID -> unit
val dSpaceCollide : dSpaceID ->
('a dGeomID -> 'b dGeomID -> unit) -> unit
val dSpaceCollide2 : 'a dGeomID ->
'b dGeomID ->
('c dGeomID -> 'd dGeomID -> unit) -> unit
val dSpaceSetCleanup : dSpaceID -> mode:bool -> unit
val dSpaceGetCleanup : dSpaceID -> bool
val dSpaceClean : dSpaceID -> unit
val dSpaceQuery : dSpaceID -> 'a dGeomID -> bool
val dSpaceGetNumGeoms : dSpaceID -> unit
val dSpaceGetGeom : dSpaceID -> i:int -> 'a dGeomID
val dSpaceGetGeomsArray : dSpaceID -> 'a dGeomID array
Geometry
val dCollide : 'a dGeomID ->
'b dGeomID ->
max:int -> ('a, 'b) dContactGeom array
val dGeomDestroy : 'a dGeomID -> unit
val dGeomSetBody : 'a dGeomID -> dBodyID option -> unit
val dGeomGetBody : 'a dGeomID -> dBodyID option
val dGeomSetPosition : 'a dGeomID -> x:float -> y:float -> z:float -> unit
val dGeomSetRotation : 'a dGeomID -> dMatrix3 -> unit
val dGeomSetQuaternion : 'a dGeomID -> dQuaternion -> unit
val dGeomGetPosition : 'a dGeomID -> dVector3
val dGeomGetRotation : 'a dGeomID -> dMatrix3
val dGeomGetQuaternion : 'a dGeomID -> dQuaternion
val dGeomGetAABB : 'a dGeomID -> float array
val dInfiniteAABB : 'a dGeomID -> float array
Geometry kind
type sphere_geom
type box_geom
type plane_geom
type heightfield_geom
type trimesh_geom
type convex_geom
type capsule_geom
type cylinder_geom
type ray_geom
type geomTransform_geom
type geom_class =
| |
SphereClass |
| |
BoxClass |
| |
CapsuleClass |
| |
CylinderClass |
| |
PlaneClass |
| |
RayClass |
| |
ConvexClass |
| |
GeomTransformClass |
| |
TriMeshClass |
| |
HeightfieldClass |
| |
FirstSpaceSimpleSpaceClass |
| |
HashSpaceClass |
| |
LastSpaceQuadTreeSpaceClass |
val dGeomGetClass : 'a dGeomID -> geom_class
type geom_type =
val geom_kind : 'a dGeomID -> geom_type
val dCreateSphere : dSpaceID option ->
radius:float -> sphere_geom dGeomID
val dGeomSphereGetRadius : sphere_geom dGeomID -> float
val dGeomSphereSetRadius : sphere_geom dGeomID -> radius:float -> unit
val dGeomSpherePointDepth : sphere_geom dGeomID ->
x:float -> y:float -> z:float -> float
val dCreateBox : dSpaceID option ->
lx:float ->
ly:float -> lz:float -> box_geom dGeomID
val dGeomBoxGetLengths : box_geom dGeomID -> dVector3
val dGeomBoxSetLengths : box_geom dGeomID ->
lx:float -> ly:float -> lz:float -> unit
val dGeomBoxPointDepth : box_geom dGeomID ->
x:float -> y:float -> z:float -> float
val dCreatePlane : dSpaceID option ->
a:float ->
b:float -> c:float -> d:float -> plane_geom dGeomID
val dGeomPlaneGetParams : plane_geom dGeomID -> dVector4
val dGeomPlaneSetParams : plane_geom dGeomID ->
a:float -> b:float -> c:float -> d:float -> unit
val dGeomPlanePointDepth : plane_geom dGeomID ->
x:float -> y:float -> z:float -> unit
val dCreateCapsule : dSpaceID option ->
radius:float ->
length:float -> capsule_geom dGeomID
val dGeomCapsuleGetParams : capsule_geom dGeomID -> float * float
val dGeomCapsuleSetParams : capsule_geom dGeomID ->
radius:float -> length:float -> unit
val dGeomCapsulePointDepth : capsule_geom dGeomID ->
x:float -> y:float -> z:float -> unit
val dCreateCylinder : dSpaceID option ->
radius:float ->
length:float -> cylinder_geom dGeomID
val dGeomCylinderGetParams : cylinder_geom dGeomID -> float * float
val dGeomCylinderSetParams : cylinder_geom dGeomID ->
radius:float -> length:float -> unit
val dCreateRay : dSpaceID option ->
length:float -> ray_geom dGeomID
val dGeomRaySetLength : ray_geom dGeomID -> length:float -> unit
val dGeomRayGetLength : ray_geom dGeomID -> float
val dGeomRaySet : ray_geom dGeomID ->
px:float -> py:float -> pz:float -> dx:float -> dy:float -> dz:float -> unit
val dGeomRayGet : ray_geom dGeomID ->
dVector3 * dVector3
val dGeomRaySetParams : ray_geom dGeomID ->
first_contact:bool -> backface_cull:bool -> unit
val dGeomRayGetParams : ray_geom dGeomID -> bool * bool
val dGeomRaySetClosestHit : ray_geom dGeomID -> closest_hit:bool -> unit
val dGeomRayGetClosestHit : ray_geom dGeomID -> bool
type dTriMeshDataID
val dGeomTriMeshDataCreate : unit -> dTriMeshDataID
val dGeomTriMeshDataDestroy : dTriMeshDataID -> unit
val dGeomTriMeshDataPreprocess : dTriMeshDataID -> unit
Frees the associated datas (see dGeomTriMeshDataBuild for explanations)
val dGeomTriMeshSetData : trimesh_geom dGeomID ->
data:dTriMeshDataID -> unit
val dGeomTriMeshGetData : trimesh_geom dGeomID -> dTriMeshDataID
val dGeomTriMeshGetTriMeshDataID : trimesh_geom dGeomID -> dTriMeshDataID
val dGeomTriMeshDataUpdate : dTriMeshDataID -> unit
val dGeomTriMeshDataBuild : dTriMeshDataID ->
vertices:float array -> indices:int array -> unit
val dCreateTriMesh : dSpaceID option ->
dTriMeshDataID ->
?tri_cb:'a ->
?arr_cb:'b ->
?ray_cb:'c -> unit -> trimesh_geom dGeomID
Important: The vertices parameter is not copied for ODE's use so make sure that it is
not garbage collected as long as it trimesh is still used.
(The indices parameter's datas are copied to a buffer associated with the dTriMeshDataID,
which is freed at the same time with the function dGeomTriMeshDataDestroy.)
the callbacks are not implemented yet, just omit the optional parameters
val dGeomTriMeshEnableTC : trimesh_geom dGeomID ->
geom_class -> bool -> unit
val dGeomTriMeshIsTCEnabled : trimesh_geom dGeomID ->
geom_class -> bool
val dGeomTriMeshClearTCCache : trimesh_geom dGeomID -> unit
val dCreateGeomTransform : dSpaceID option ->
geomTransform_geom dGeomID
val dGeomTransformSetGeom : geomTransform_geom dGeomID ->
'a dGeomID option -> unit
val dGeomTransformGetGeom : geomTransform_geom dGeomID ->
'a dGeomID option
val dGeomTransformSetCleanup : geomTransform_geom dGeomID -> cleanup:bool -> unit
val dGeomTransformGetCleanup : geomTransform_geom dGeomID -> bool
val dGeomTransformSetInfo : geomTransform_geom dGeomID -> cleanup:bool -> unit
val dGeomTransformGetInfo : geomTransform_geom dGeomID -> bool
val dGeomSetData : 'a dGeomID -> int -> unit
val dGeomGetData : 'a dGeomID -> int
val dGeomIsSpace : 'a dGeomID -> bool
val dGeomGetSpace : 'a dGeomID -> dSpaceID
val dGeomSetCategoryBits : 'a dGeomID -> bits:int -> unit
val dGeomSetCollideBits : 'a dGeomID -> bits:int -> unit
val dGeomGetCategoryBits : 'a dGeomID -> int
val dGeomGetCollideBits : 'a dGeomID -> int
val dGeomEnable : 'a dGeomID -> unit
val dGeomDisable : 'a dGeomID -> unit
val dGeomIsEnabled : 'a dGeomID -> bool
val dGeomSetOffsetPosition : 'a dGeomID -> x:float -> y:float -> z:float -> unit
val dGeomSetOffsetRotation : 'a dGeomID -> r:dMatrix3 -> unit
Mass functions
Note that dMass objects are garbage collected.
val dMassCreate : unit -> dMass
val dMass_set_mass : dMass -> float -> unit
val dMass_mass : dMass -> float
val dMass_set_c : dMass -> dVector4 -> unit
val dMass_c : dMass -> dVector4
val dMass_set_I : dMass -> dMatrix3 -> unit
val dMass_I : dMass -> dMatrix3
val dMassSetZero : dMass -> unit
val dMassSetParameters : dMass ->
mass:float ->
cgx:float ->
cgy:float ->
cgz:float ->
i11:float ->
i22:float -> i33:float -> i12:float -> i13:float -> i23:float -> unit
val dMassSetSphere : dMass -> density:float -> radius:float -> unit
val dMassSetSphereTotal : dMass -> total_mass:float -> radius:float -> unit
val dMassSetBox : dMass ->
density:float -> lx:float -> ly:float -> lz:float -> unit
val dMassSetBoxTotal : dMass ->
total_mass:float -> lx:float -> ly:float -> lz:float -> unit
type direction =
val dMassSetCapsule : dMass ->
density:float ->
direction:direction -> radius:float -> length:float -> unit
val dMassSetCapsuleTotal : dMass ->
total_mass:float ->
direction:direction -> radius:float -> length:float -> unit
val dMassSetCylinder : dMass ->
density:float ->
direction:direction -> radius:float -> length:float -> unit
val dMassSetCylinderTotal : dMass ->
total_mass:float ->
direction:direction -> radius:float -> length:float -> unit
val dMassSetTrimesh : dMass ->
density:float -> trimesh_geom dGeomID -> unit
val dMassSetTrimeshTotal : dMass ->
total_mass:float -> trimesh_geom dGeomID -> unit
val dMassCheck : dMass -> bool
val dMassAdjust : dMass -> float -> unit
val dMassTranslate : dMass -> x:float -> y:float -> z:float -> unit
val dMassRotate : dMass -> dMatrix3 -> unit
val dMassAdd : dMass -> dMass -> unit
Matrices
val dRGetIdentity : unit -> dMatrix3
val dRFromAxisAndAngle : ax:float -> ay:float -> az:float -> angle:float -> dMatrix3
Quaternion
val dQGetIdentity : unit -> dQuaternion
val dQFromAxisAndAngle : ax:float -> ay:float -> az:float -> angle:float -> dQuaternion
Misc
val dWorldImpulseToForce : dWorldID ->
stepsize:float -> ix:float -> iy:float -> iz:float -> dVector3