// epsilon is needed to have an exact value for t=1
vardiv=Math.abs(b-a)+epsilon;
returnfunction(t){
t+=(t-1/2)/div;
returnMath.round(a*(1-t)+b*t);
};
}
interpolateBalanced2=(a,b)=>{
// suggested by @jrus
// epsilon is needed to have an exact value for t=1
varsign=Math.sign(b-a);
returninterpolateRound(
a-sign*(0.5-epsilon),
b+sign*(0.5-epsilon)
);
}
draw(interpolateBalanced(0,-2))
draw(interpolateBalanced(0,0))
draw(interpolateRound(0,7))
draw(interpolateBalanced(0,7))
draw(interpolateBalanced2(0,7))
draw(interpolateBalanced(7,0))
draw(interpolateBalanced2(7,0))
draw(interpolateBalanced(0.1,2.5))
functiondraw(interpolate){
constcontext=DOM.context2d(width,30);
for(leti=0;i<width;i++){
context.fillStyle=color(interpolate(i/(width-1)))
context.fillRect(i,0,2,30);
}
returncontext.canvas
}
color=d3.scaleOrdinal(d3.schemeCategory10)
d3=require("d3@5")
import{epsilon}from"@fil/math"
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.