//wavelength: 380 - 780
let wavelengthToRGB = function(wavelength) {
let R = 0
let G = 0
let B = 0
// core translation into color
if (wavelength >= 380 && wavelength <= 440) {
R = -1*(wavelength-440)/(440-380)
G = 0
B = 1
} else
if (wavelength > 440 && wavelength <= 490) {
R = 0
G = (wavelength-440)/(490-440)
B = 1
} else
if (wavelength > 490 && wavelength <= 510) {
R = 0
G = 1
B = -1*(wavelength-510)/(510-490)
} else
if (wavelength > 510 && wavelength <= 580) {
R = (wavelength-510)/(580-510)
G = 1
B = 0
} else
if (wavelength > 580 && wavelength <= 645) {
R = 1
G = -1*(wavelength-645)/(645-580)
B = 0
} else
if (wavelength > 645 && wavelength <= 780) {
R = 1
G = 0
B = 0
}
// intensity adjustment near the vision limits
let intensity = 1
if (wavelength >= 700) {
intensity = 0.3 + 0.7*(780-wavelength)/(780-700)
} else
if (wavelength < 420) {
intensity = 0.3 + 0.7*(wavelength-380)/(420-380)
}
console.log("intensity:", intensity)
return [
Math.round(R*intensity*255),
Math.round(G*intensity*255),
Math.round(B*intensity*255)
]
}
根据波长转换为颜色
最新推荐文章于 2024-02-20 17:38:42 发布