#### <sup>[Ollin](../../index.md) → [Documentation](../index.md) → Simulation</sup>

---

## Simulation

- [`Physics`](physics.md) - `import OllinPhysics` gives you a `World` that you step each frame, so motion comes from simulation. It has a soft Verlet side (particles, springs, disk collisions) and a rigid side (bodies, colliders, joints). The rigid side is backed by Box2D.
- [`Physics3D`](physics3d.md) - rigid bodies inside the 3D scene. A `World3D`, backed by Jolt, holds `Body3D`s that stack, tumble, and swing. It adds joints, mouse grabbing through the camera, and `withBody` drawing.
- [`Swarm`](swarm.md) - the steering behaviors at GPU scale. Separation, alignment, cohesion, seek, flee, arrive, wander, and flow following are each a weight, and they run over the `SpatialHash` neighbor search.
- [`Artificial life`](artificiallife.md) - three emergent-behavior systems on the GPU: `ParticleLife` (attraction/repulsion matrices), `PPS` (one turning rule that grows cells), and `Physarum` (slime-mold trail networks). The first two run over the `SpatialHash` neighbor search.
- [`Evolution`](evolution.md) - populations that get better at something. `Evolution` breeds tens of thousands of GPU flights toward a target past obstacles, using tournament selection. `Population` breeds a handful of genomes that a person picks by eye.
- [`Fluids & soft bodies`](fluids.md) - GPU particle dynamics in a walled box. `ParticleFluid` is smoothed-particle hydrodynamics that pours, splashes, and settles. `SoftBodies` makes shape-matched jelly blobs that squash and recover. You can grab both with the mouse.
- [`Watercolor`](watercolor.md) - wet paint on rough paper. This is the classic three-layer wash simulation, with real pigments (density, staining, granulation) and Kubelka-Munk optical glazing. Edge darkening, dry-brush, backruns, and wet-in-wet flow all come out of the physics.
- [`Articulated & chaotic motion`](motion.md) - CPU motion systems that you step each frame. `IKChain` makes inverse-kinematics tentacles and limbs, with two solvers plus a stiffness limit. `DoublePendulum` is the classic example of chaotic motion. `NBody` is quadtree gravity for orbits, galaxies, and collisions.
- [`Crowds`](crowds.md) - `Crowd`, walkers that make room for each other, on the CPU. Each takes the velocity nearest its wish that keeps it clear of every neighbor for the next second, trusting the neighbor to do half. Obstacles and walls hold even in a jam, opposing streams sort into lanes, and `isJammed` marks the pressure.
- [`Coupled oscillators`](oscillators.md) - `Kuramoto`, a crowd of oscillators each running at its own pace and pulled toward the others, on the CPU. Below the critical coupling they drift apart; above it a locked group forms and the crowd falls into step. Read `coherence` to watch it happen, give it a `range` for a ring, lay it on a square or hex lattice or a graph of your own so patches lock and waves cross the field, and read `localCoherence` for where.
