parameterAtDistance method
The natural parameter at arc-length distance d (clamped to
0..length).
Implementation
double parameterAtDistance(double d) {
final table = _baked;
final cumulative = table.cumulativeLengths;
final total = cumulative.last;
if (total <= 0.0) return 0.0;
final target = d < 0.0 ? 0.0 : (d > total ? total : d);
var lo = 0;
var hi = cumulative.length - 1;
while (lo + 1 < hi) {
final mid = (lo + hi) >> 1;
if (cumulative[mid] <= target) {
lo = mid;
} else {
hi = mid;
}
}
final segment = cumulative[hi] - cumulative[lo];
final local = segment > 1e-12 ? (target - cumulative[lo]) / segment : 0.0;
return table.parameters[lo] +
(table.parameters[hi] - table.parameters[lo]) * local;
}