Expand description
One walker, several conditions.
Following a curve nobody can write down is the same problem every time. Surface intersection tracks on both surfaces; a silhouette tracks the normal is square to the view; a rolling-ball blend tracks the ball touches both supports and its section stands where the guide says. The conditions are different and the geometry is different, but the walk is not: take a step along the curve’s own direction, correct back onto the condition, measure how far the chord sagged, and set the next step from that.
So the walk lives here once, over a Condition, and what changes per
problem is the condition’s own residual and derivatives. The step control,
the stall reporting and the closure test are written once and inherited.
§What a condition owes the walker
n unknowns and n − 1 equations. That shortfall is not an oversight: the
solution set of n − 1 equations in n unknowns is a curve, which is
what there is to follow. The walker supplies the missing equation itself
(a plane across the direction of travel, saying how far along to land), and
that is what turns “somewhere on the curve” into “the next point”.
The direction of travel comes free. The curve’s tangent in parameter space
is the null vector of the condition’s own Jacobian, and a condition that
has a cheaper or more careful formula for it (the intersector does, and
uses it to refuse a crossing too shallow to trust) says so by overriding
Condition::tangent.
Structs§
- Walked
- One walked curve.
Traits§
- Condition
- A curve stated as what it satisfies, and everything needed to follow it.
Functions§
- follow
- Follow a condition’s curve both ways from a starting point.
- null_
tangent - The unit space tangent of a condition’s curve from its Jacobian (the
n − 1rows of its equations) and its position gradient: the Jacobian’s null vector carried into space. WhatCondition::tangentanswers by default.Nonewhere the Jacobian has full rank or the tangent vanishes. - walk_
one_ way - Walk one way from a start.