step

fun step(agent: A, dt: Double): Pair<Point3D, Point3D>(source)

One Euler integration step for agent: sum registered forces, integrate velocity by (sumForce / mass) * dt, clamp to [minSpeed, maxSpeed], compute candidate position pos + vNew * dt.

Returns (newVelocity, candidatePosition). Does not apply the new state — the caller must call setVelocity and ContinuousVolume.moveTo explicitly.

Throws

if agent has no position in space

if dt is non-positive