starry / backend /libs /three /math /interpolants /QuaternionLinearInterpolant.js
k-l-lambda's picture
feat: add Python ML services (CPU mode) with model download
2b7aae2
import { Interpolant } from '../Interpolant.js';
import { Quaternion } from '../Quaternion.js';
/**
* Spherical linear unit quaternion interpolant.
*/
class QuaternionLinearInterpolant 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,
alpha = (t - t0) / (t1 - t0);
let offset = i1 * stride;
for (let end = offset + stride; offset !== end; offset += 4) {
Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);
}
return result;
}
}
export { QuaternionLinearInterpolant };