あなたが何を求めているのか正確にはわかりませんが、これは役立つかもしれません。w=0(赤)からw=1.0(紫)までの虹色を吐き出します。N色に均等に分割したい場合は、次のようにします。
for(int i = 0; i<N; i++){
colors[i] = spectrum(i/((double)(N-1)));
}
この方法の使用:
public Color spectrum(double w) {
if (w>1)w=1;
if (w<0)w=0;
w=w*(645-380)+380;
double R,B,G;
if (w >= 380 && w < 440){
R = -(w - 440.) /(440. - 350.);
G = 0.0;
B = 1.0;
}
else if (w >= 440 && w < 490){
R = 0.0;
G = (w - 440.) /(490. - 440.);
B = 1.0;
}
else if (w >= 490 && w < 510){
R = 0.0;
G = 1.0;
B = (510-w) /(510. - 490.);
}
else if (w >= 510 && w < 580){
R = (w - 510.) /(580. - 510.);
G = 1.0;
B = 0.0;
}
else if (w >= 580 && w < 645){
R = 1.0;
G = -(w - 645.) /(645. - 580.);
B = 0.0;
}
else if (w >= 645 && w <= 780){
R = 1.0;
G = 0.0;
B = 0.0;
}
else{
R = 0.0;
G = 0.0;
B = 0.0;
}
return new Color(R,G,B);
}
申し訳ありませんが、javascript ではありません。私はJavaにはるかに流暢です。そこにある数字はナノメートル単位の波長にマッピングされているので、あらゆる種類のものに役立ちます. もちろん、R、G、B の値は、255 を掛けて小数を切り捨てることにより、int に変換できます。