我有两个颜色范围的示例,分别是#ed1f7f和#6c52a2,是否有任何可能的方式可以将一些具有某些随机颜色的元素放在这两个范围内?
答案 0 :(得分:1)
基本上,您要做一个linear interpolation in 3D space。
有一个很好的公式可以做到这一点:
(1-u)*p_1+u*p_2
where u is a random float between 0 and 1
p_1, p_2 are the co-ordinate of the points
对于颜色,如果使用数组存储颜色分量,则为
function interpolate(u, c1, c2) {
return c1.map((a, i) => Math.floor((1-u) * a + u * c2[i]));
}
function pickRandom(u, c1, c2) {
return interpolate(Math.random(), c1, c2);
}
如果您的颜色值采用十六进制表示法,则需要先将其转换为数字rgb或hsl。