sample method
Samples the gradient at normalized time t (clamped into [0, 1]),
writing the result into out (allocated when null) and returning it.
Implementation
Vector4 sample(double t, [Vector4? out]) {
final result = out ?? Vector4.zero();
final clamped = t < 0.0
? 0.0
: t > 1.0
? 1.0
: t;
final x = clamped * (resolution - 1);
var i = x.floor();
if (i >= resolution - 1) {
final o = (resolution - 1) * 4;
result.setValues(_lut[o], _lut[o + 1], _lut[o + 2], _lut[o + 3]);
return result;
}
final f = x - i;
final o = i * 4;
final n = o + 4;
result.setValues(
_lut[o] + (_lut[n] - _lut[o]) * f,
_lut[o + 1] + (_lut[n + 1] - _lut[o + 1]) * f,
_lut[o + 2] + (_lut[n + 2] - _lut[o + 2]) * f,
_lut[o + 3] + (_lut[n + 3] - _lut[o + 3]) * f,
);
return result;
}