File size: 664 Bytes
2b7aae2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import { Interpolant } from '../Interpolant.js';

class LinearInterpolant extends Interpolant {
	constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {
		super(parameterPositions, sampleValues, sampleSize, resultBuffer);
	}

	interpolate_(i1, t0, t, t1) {
		const result = this.resultBuffer,
			values = this.sampleValues,
			stride = this.valueSize,
			offset1 = i1 * stride,
			offset0 = offset1 - stride,
			weight1 = (t - t0) / (t1 - t0),
			weight0 = 1 - weight1;

		for (let i = 0; i !== stride; ++i) {
			result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;
		}

		return result;
	}
}

export { LinearInterpolant };