T
- the type the implementation evaluates.@Immutable public interface Evaluator<T>
@RegionEffects(value="reads Instance, v0:Instance, v1:Instance") T evaluate(T v0, T v1, double fraction)
v = v0 + (v1 - v0) * fractionImplementations of
Evaluator
will need to override this method and
do something similar for their own types.
Note that this mechanism may be used to create non-linear interpolators for
specific value types, although it may be simpler to just use the
linear/parametric interpolation technique here and perform non-linear
interpolation through a custom Interpolator
rather than perform
custom calculations in this method. The point of this class is to allow
calculations with new/unknown types, not to provide another mechanism for
non-linear interpolation.
@RegionEffects(value="none") java.lang.Class<T> getEvaluatorClass()