/** * See {@link #interpolate(SampledValue, SampledValue, long, InterpolationMode, boolean)}. * The default value <tt>badQualityForUndefined = false</tt> is used here. * @param previous * @param next * @param t * @param mode * @return */ public static SampledValue interpolate(SampledValue previous, SampledValue next, long t, InterpolationMode mode) { return interpolate(previous, next, t, mode, false); }
@Override public SampledValue getValue(long time) { SampledValue prev = getPreviousValue(time); SampledValue next = getNextValue(time); return ValueResourceUtils.interpolate(prev, next, time, getInterpolationMode()); }
@Override public SampledValue getValue(long time) { if (mode == null || mode == InterpolationMode.NONE) { final Iterator<SampledValue> it = iterator(time, time); return it.hasNext() ? it.next() : null; } final Iterator<SampledValue> it = iterator(Long.MIN_VALUE, time); if (!it.hasNext()) return null; SampledValue last = it.next(); if (last.getTimestamp() == time) return last; if (last.getTimestamp() > time) return null; while (it.hasNext()) { SampledValue sv = it.next(); if (sv.getTimestamp() == time) return sv; if (sv.getTimestamp() > time) return ValueResourceUtils.interpolate(last, sv, time, mode); last = sv; } if (mode == InterpolationMode.STEPS || mode == InterpolationMode.NEAREST) return new SampledValue(last.getValue(), time, last.getQuality()); return null; }
@Override public SampledValue getValue(long time) { final InterpolationMode mode = config.getInterpolationMode(); if (mode == null || mode == InterpolationMode.NONE) { final Iterator<SampledValue> it = iterator(time, time); return it.hasNext() ? it.next() : null; } final Iterator<SampledValue> it = iterator(Long.MIN_VALUE, time); if (!it.hasNext()) return null; SampledValue last = it.next(); if (last.getTimestamp() == time) return last; if (last.getTimestamp() > time) return null; while (it.hasNext()) { SampledValue sv = it.next(); if (sv.getTimestamp() == time) return sv; if (sv.getTimestamp() > time) return ValueResourceUtils.interpolate(last, sv, time, mode); last = sv; } if (mode == InterpolationMode.STEPS || mode == InterpolationMode.NEAREST) return new SampledValue(last.getValue(), time, last.getQuality()); return null; }