sample method

Vector4 sample(
  1. double t, [
  2. Vector4? out
])

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;
}