- Main Page
- Modules
- Data Structures
- Files

# World

## Functions
ODE_API dWorldID | dWorldCreate (void)
| Create a new, empty world and return its ID number.
ODE_API void | dWorldDestroy (dWorldID world)
| Destroy a world and everything in it.
ODE_API void | dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z)
| Set the world's global gravity vector.
ODE_API void | dWorldGetGravity (dWorldID, dVector3 gravity)
| Get the gravity vector for a given world.
ODE_API void | dWorldSetERP (dWorldID, dReal erp)
| Set the global ERP value, that controls how much error correction is performed in each time step.
ODE_API dReal | dWorldGetERP (dWorldID)
| Get the error reduction parameter.
ODE_API void | dWorldSetCFM (dWorldID, dReal cfm)
| Set the global CFM (constraint force mixing) value.
ODE_API dReal | dWorldGetCFM (dWorldID)
| Get the constraint force mixing value.
ODE_API void | dWorldStep (dWorldID, dReal stepsize)
| Step the world.
ODE_API void | dWorldImpulseToForce (dWorldID, dReal stepsize, dReal ix, dReal iy, dReal iz, dVector3 force)
| Converts an impulse to a force.
ODE_API void | dWorldQuickStep (dWorldID w, dReal stepsize)
| Step the world.
ODE_API void | dWorldSetQuickStepNumIterations (dWorldID, int num)
| Set the number of iterations that the QuickStep method performs per step.
ODE_API int | dWorldGetQuickStepNumIterations (dWorldID)
| Get the number of iterations that the QuickStep method performs per step.
ODE_API void | dWorldSetQuickStepW (dWorldID, dReal over_relaxation)
| Set the SOR over-relaxation parameter.
ODE_API dReal | dWorldGetQuickStepW (dWorldID)
| Get the SOR over-relaxation parameter.
ODE_API void | dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel)
| Set the maximum correcting velocity that contacts are allowed to generate.
ODE_API dReal | dWorldGetContactMaxCorrectingVel (dWorldID)
| Get the maximum correcting velocity that contacts are allowed to generated.
ODE_API void | dWorldSetContactSurfaceLayer (dWorldID, dReal depth)
| Set the depth of the surface layer around all geometry objects.
ODE_API dReal | dWorldGetContactSurfaceLayer (dWorldID)
| Get the depth of the surface layer around all geometry objects.
ODE_API void | dWorldStepFast1 (dWorldID, dReal stepsize, int maxiterations)
| Step the world using the StepFast1 algorithm.

## Detailed Description

The world object is a container for rigid bodies and joints. Objects in different worlds can not interact, for example rigid bodies from two different worlds can not collide.

All the objects in a world exist at the same point in time, thus one reason to use separate worlds is to simulate systems at different rates. Most applications will only need one world.

## Function Documentation

ODE_API dWorldID dWorldCreate | ( | void |  | ) |

| Create a new, empty world and return its ID number. Returns: an identifier

ODE_API void dWorldDestroy | ( | dWorldID | world | ) |

  | Destroy a world and everything in it. This includes all bodies, and all joints that are not part of a joint group. Joints that are part of a joint group will be deactivated, and can be destroyed by calling, for example, dJointGroupEmpty(). Parameters:
  | world | the identifier for the world the be destroyed.

ODE_API dReal dWorldGetCFM | ( | dWorldID |  | ) |

| Get the constraint force mixing value. Returns: CFM value

ODE_API dReal dWorldGetContactSurfaceLayer | ( | dWorldID |  | ) |

| Get the depth of the surface layer around all geometry objects. Returns: the depth

ODE_API dReal dWorldGetERP | ( | dWorldID |  | ) |

| Get the error reduction parameter. Returns: ERP value

ODE_API int dWorldGetQuickStepNumIterations | ( | dWorldID |  | ) |

| Get the number of iterations that the QuickStep method performs per step. Returns: nr of iterations

ODE_API dReal dWorldGetQuickStepW | ( | dWorldID |  | ) |

| Get the SOR over-relaxation parameter. Returns: the over-relaxation setting

ODE_API void dWorldImpulseToForce | ( | dWorldID | ,
|  | dReal | stepsize,
|  | dReal | ix,
|  | dReal | iy,
|  | dReal | iz,
|  | dVector3 | force
| ) |

| Converts an impulse to a force. Remarks: If you want to apply a linear or angular impulse to a rigid body, instead of a force or a torque, then you can use this function to convert the desired impulse into a force/torque vector before calling the BodyAdd... function. The current algorithm simply scales the impulse by 1/stepsize, where stepsize is the step size for the next step that will be taken. This function is given a dWorldID because, in the future, the force computation may depend on integrator parameters that are set as properties of the world.

ODE_API void dWorldQuickStep | ( | dWorldID | w,
|  | dReal | stepsize
| ) |

| Step the world. Remarks: This uses an iterative method that takes time on the order of m*N and memory on the order of m, where m is the total number of constraint rows N is the number of iterations. For large systems this is a lot faster than dWorldStep(), but it is less accurate. QuickStep is great for stacks of objects especially when the auto-disable feature is used as well. However, it has poor accuracy for near-singular systems. Near-singular systems can occur when using high-friction contacts, motors, or certain articulated structures. For example, a robot with multiple legs sitting on the ground may be near-singular. There are ways to help overcome QuickStep's inaccuracy problems: Increase CFM. Reduce the number of contacts in your system (e.g. use the minimum number of contacts for the feet of a robot or creature). Don't use excessive friction in the contacts. Use contact slip if appropriate Avoid kinematic loops (however, kinematic loops are inevitable in legged creatures). Don't use excessive motor strength. force-based motors instead of velocity-based motors. Increasing the number of QuickStep iterations may help a little bit, but it is not going to help much if your system is really near singular.

ODE_API void dWorldSetCFM | ( | dWorldID | ,
|  | dReal | cfm
| ) |

  | Set the global CFM (constraint force mixing) value. Parameters:
  | cfm | Typical values are in the range {10^{-9}} -- 1. The default is 10^-5 if single precision is being used, or 10^-10 if double precision is being used.

ODE_API void dWorldSetContactMaxCorrectingVel | ( | dWorldID | ,
|  | dReal | vel
| ) |

  | Set the maximum correcting velocity that contacts are allowed to generate. Parameters:
  | vel | The default value is infinity (i.e. no limit).
Remarks: Reducing this value can help prevent "popping" of deeply embedded objects.

ODE_API void dWorldSetContactSurfaceLayer | ( | dWorldID | ,
|  | dReal | depth
| ) |

  | Set the depth of the surface layer around all geometry objects. Remarks: Contacts are allowed to sink into the surface layer up to the given depth before coming to rest. Parameters:
  | depth | The default value is zero.
Remarks: Increasing this to some small value (e.g. 0.001) can help prevent jittering problems due to contacts being repeatedly made and broken.

ODE_API void dWorldSetERP | ( | dWorldID | ,
|  | dReal | erp
| ) |

  | Set the global ERP value, that controls how much error correction is performed in each time step. Parameters:
  | dWorldID | the identifier of the world.
  | erp | Typical values are in the range 0.1--0.8. The default is 0.2.

ODE_API void dWorldSetGravity | ( | dWorldID | ,
|  | dReal | x,
|  | dReal | y,
|  | dReal | z
| ) |

| Set the world's global gravity vector. The units are m/s^2, so Earth's gravity vector would be (0,0,-9.81), assuming that +z is up. The default is no gravity, i.e. (0,0,0).

ODE_API void dWorldSetQuickStepNumIterations | ( | dWorldID | ,
|  | int | num
| ) |

  | Set the number of iterations that the QuickStep method performs per step. Remarks: More iterations will give a more accurate solution, but will take longer to compute. Parameters:
  | num | The default is 20 iterations.

ODE_API void dWorldSetQuickStepW | ( | dWorldID | ,
|  | dReal | over_relaxation
| ) |

  | Set the SOR over-relaxation parameter. Parameters:
  | over_relaxation | value to use by SOR

ODE_API void dWorldStep | ( | dWorldID | ,
|  | dReal | stepsize
| ) |

  | Step the world. This uses a "big matrix" method that takes time on the order of m^3 and memory on the order of m^2, where m is the total number of constraint rows. For large systems this will use a lot of memory and can be very slow, but this is currently the most accurate method. Parameters:
  | stepsize | The number of seconds that the simulation has to advance.

ODE_API void dWorldStepFast1 | ( | dWorldID | ,
|  | dReal | stepsize,
|  | int | maxiterations
| ) |

  | Step the world using the StepFast1 algorithm. Parameters:
  | stepsize | the nr of seconds to advance the simulation.
  | maxiterations | The number of iterations to perform.