- Сообщения
- 4 860
- Реакции
- 2 882
Коллеги, никому не попадалась на глаза функция или формулы от CCT & tint к координатам xy?
От xy к CCT & tint у меня здесь есть, не помню где взял формулы, а обратной функции не нашел.
Для любознательных функция от XYZ к tint так выглядит:
И раз пошла такая пьянка - а никто не богат функцией, обратной от XYZ to TVI? Должна она быть, иначе бы фогру51 так как сейчас не смогли бы посчитать с идеальными TVI, нарисованными полиномами. Ищу в общем TVI to XYZ давно, если где что подобное встречали - известите плиз!
От xy к CCT & tint у меня здесь есть, не помню где взял формулы, а обратной функции не нашел.
Для любознательных функция от XYZ к tint так выглядит:
Код:
var RefWhitexyY = {x:0.0, y:0.0}
function defineTint() {
var Temp = CCT;
var C1 = 2.0 * Math.PI * 6.626176 * 2.99792458 * 2.99792458; // * 1.0e-18
var C2 = (6.626176 * 2.99792458) / 1.380662; // * 1.0e-3
var nm;
var i = 0;
var XYZwX = 0.0;
var XYZwY = 0.0;
var XYZwZ = 0.0;
for (nm = 360; nm <= 830; nm += 5)
{
var dWavelengthM = nm * 1.0e-3; // * 1.0e-6
var dWavelengthM5 = dWavelengthM * dWavelengthM * dWavelengthM * dWavelengthM * dWavelengthM; // * 1.0e-30
var blackbody = C1 / (dWavelengthM5 * 1.0e-12 * (Math.exp(C2 / (Temp * dWavelengthM * 1.0e-3)) - 1.0)); // -12 = -30 - (-18)
XYZwX += (blackbody * CIE1931StdObs_x[i]);
XYZwY += (blackbody * CIE1931StdObs_y[i]);
XYZwZ += (blackbody * CIE1931StdObs_z[i]);
i++;
}
XYZwX /= XYZwY;
XYZwZ /= XYZwY;
XYZwY = 1.0;
var RefWhiteTintX = XYZwX;
var RefWhiteTintY = XYZwY;
var RefWhiteTintZ = XYZwZ;
var Den = RefWhiteTintX + RefWhiteTintY + RefWhiteTintZ;
/* TODO: divide by zero handling */
if (Den > 0.0)
{
RefWhitexyY.x = RefWhiteTintX / Den;
RefWhitexyY.y = RefWhiteTintY / Den;
}
else
{
RefWhitexyY.x = RefWhiteTintX / (RefWhiteTintX + RefWhiteTintY + RefWhiteTintZ);
RefWhitexyY.y = RefWhiteTintY / (RefWhiteTintX + RefWhiteTintY + RefWhiteTintZ);
}
Tint = 1000 * (RefWhitexyY.x - xyY.x) - 650 * (RefWhitexyY.y - xyY.y);
}
И раз пошла такая пьянка - а никто не богат функцией, обратной от XYZ to TVI? Должна она быть, иначе бы фогру51 так как сейчас не смогли бы посчитать с идеальными TVI, нарисованными полиномами. Ищу в общем TVI to XYZ давно, если где что подобное встречали - известите плиз!