function make_interpolators (prev, next) {
if (prev.length == 0 && 0 == next.length) {
return [];
}
if (next.length == 0) {
return prev.map(op => flubber.interpolate(op.toPathData(), [op_center(op)]));
}
if (prev.length == 0) {
return next.map(op => flubber.interpolate([op_center(op)], op.toPathData()));
}
var prevpaths = prev.map(op => op.toPathData());
var nextpaths = next.map(op => op.toPathData());
const N = Math.min(prevpaths.length - 1, nextpaths.length - 1);
var interpolators = [];
for (var i = 0; i < N; i++) {
interpolators.push(flubber.interpolate(prevpaths[i], nextpaths[i]));
}
if (prevpaths.length > nextpaths.length) {
interpolators = interpolators.concat(flubber.combine(
prevpaths.slice(N),
nextpaths[nextpaths.length - 1]
));
} else {
interpolators = interpolators.concat(flubber.separate(
prevpaths[prevpaths.length - 1],
nextpaths.slice(N)
));
}
return interpolators;
}