1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//! What a field's distance claim is worth.
//!
//! [`eval_lipschitz`] already computes the
//! bound `L` with `|f(p) − f(q)| ≤ L·|p − q|` on the exterior. What it does
//! not say — except in prose — is what a caller should *do* with a bound
//! above one, and the two failure modes are opposite:
//!
//! * `L ≤ 1`. Because `f` vanishes on the surface, `|f(p)| ≤ L·dist(p) ≤
//! dist(p)`: the field never claims more distance than there is, so a
//! sphere-tracing step of `f(p)` cannot cross the surface. The field may
//! still be slack (report far less than the true distance), which costs
//! steps, never correctness.
//! * `1 < L < ∞`. The same inequality now allows `f(p)` up to `L·dist(p)`:
//! the field can over-report, a step of `f(p)` can land past the surface,
//! and thin geometry is pierced. Stepping `f(p) / L` is safe again — that
//! is exactly what [`RaymarchConfig`](crate::raycast::RaymarchConfig)
//! divides by.
//! * `L = ∞`. Domain repetition with an arbitrary child, the taper singular
//! plane, laws with a candidate-selection jump. No step size is safe from
//! the bound alone.
//!
//! [`distance_fidelity`] turns the float into that three-way answer so a
//! consumer can branch on it instead of re-deriving the rule, and
//! [`Fidelity::safe_step_scale`] gives the divisor directly.
//!
//! This is a *static* claim about the law. The measured counterpart — what
//! the field actually does over a region, including the slack `L` cannot
//! see — is [`measure_tension`](crate::measure::measure_tension).
use crateeval_lipschitz;
use crateSdfNode;
/// What a node's distance values can be trusted to mean.
/// Classifies a tree by what its distance values can be trusted to mean.
///
/// Derived from [`eval_lipschitz`], so it inherits that function's guarantee
/// and its corpus-wide property test.