Node.js 计算线性渐变中的颜色

Node.js 计算线性渐变中的颜色,node.js,colors,backend,rgb,Node.js,Colors,Backend,Rgb,我想实现下面的powerpoint图像。介于三个值之间的渐变 它从A(-1)开始,中点是B(0),终点是C(1) 我已经意识到,通过将“开始”计算为a-to-b,将“结束”计算为b-to-c,可以节省一些精力。我可以做2组2个梯度,而不是1个梯度和3个值 但是我很困惑(尽管谷歌搜索)如何从一种颜色转换到另一种颜色——最好是在RGB颜色空间 我希望能有这样的东西- const colourSpace = (value, startColor, endColor) => {...} colo

我想实现下面的powerpoint图像。介于三个值之间的渐变

它从
A(-1)
开始,中点是
B(0)
,终点是
C(1)

我已经意识到,通过将“开始”计算为a-to-b,将“结束”计算为b-to-c,可以节省一些精力。我可以做2组2个梯度,而不是1个梯度和3个值

但是我很困惑(尽管谷歌搜索)如何从一种颜色转换到另一种颜色——最好是在RGB颜色空间

我希望能有这样的东西-

const colourSpace = (value, startColor, endColor) => {...}

colorSpace(-0.25, red, yellow) // some sort of orangey color
colorSpace(1, yellow, green) // fully green
colorSpace(0.8, yellow, green) // mostly green
这不是一个前端应用程序,所以没有CSS渐变——这是谷歌主要引用的

谢谢大家, 奥利


如果您不太担心在整个颜色空间中的感知一致性(您需要在实验室模式下工作才能做到这一点),您可以在RGB空间中进行线性插值。基本上你需要一个距离(在0和1之间),乘以坐标中的差,然后把它加到第一个。这将允许您沿任意两种颜色之间的直线查找任意点(即颜色)

例如,在红色和黄色之间:

let canvas=document.getElementById('canvas')
var ctx=canvas.getContext('2d');
设rgb1=[255,0,0]//红色
设rgb2=[255,255,0]//黄色
函数getPoint(d、a1、a2){
//查找a1和a2之间的颜色d%
返回a1.map((p,i)=>数学层(a1[i]+d*(a2[i]-a1[i]))
}
//为了演示,请填充画布
对于(设i=0,j=0;i<1;i+=0.002,j++){
设rgb=getPoint(i,rgb1,rgb2)
ctx.fillStyle=`rgba(${rgb.join(“,”)},1)`
ctx.fillRect(j,0,1200);
}

我最后用它在颜色空间之间转换。

你能发布一段代码片段或解释一下如何使用Chroma js吗?