Calculating Delta CMC - CieLab2Hue isn't working properly
Function uses the formula posted at: http://www.easyrgb.com/index.php?X=DELT&H=06#text6
by chayacooper
HTML
<p id="demo"></p>
<p id="demo1"></p>
<p id="demo2"></p>
JavaScript
var CIEL1 = 53.23;
var CIEa1 = 80.42;
var CIEb1 = 66.97;
var CIEL2 = 0.00;
var CIEa2 = 0.00;
var CIEb2 = 0.00;
var WHTL = 2; //Weight factor
var WHTC = 1; //Weight factor
var dtor = Math.PI / 180;
document.getElementById("demo").innerHTML = myFunction();
function myFunction() {
xC1 = Math.sqrt((CIEa1 ^ 2) + (CIEb1 ^ 2));
xC2 = Math.sqrt((CIEa2 ^ 2) + (CIEb2 ^ 2));
xff = Math.sqrt((xC1 ^ 4) / ((xC1 ^ 4) + 1900));
// Trouble with declaring CieLab2Hue
// xH1 = CieLab2Hue(CIEa1, CIEb1);
xH1 = CIEa1, CIEb1;
if (xH1 < 164 || xH1 > 345) {
xTT = 0.36 + Math.abs(0.4 * Math.cos(dtor * (35 + xH1)))
} else {
xTT = 0.56 + Math.abs(0.2 * Math.cos(dtor * (168 + xH1)))
}
if (CIEL1 < 16) {
xSL = 0.511
} else {
xSL = (0.040975 * CIEL1) / (1 + (0.01765 * CIEL1))
}
xSC = ((0.0638 * xC1) / (1 + (0.0131 * xC1))) + 0.638
xSH = ((xff * xTT) + 1 - xff) * xSC
xDH = Math.sqrt((CIEa2 - CIEa1) ^ 2 + (CIEb2 - CIEb1) ^ 2 - (xC2 - xC1) ^ 2)
xSL = (CIEL2 - CIEL1) / WHTL * xSL
xSC = (xC2 - xC1) / WHTC * xSC
xSH = xDH / xSH
DeltaCMC = Math.sqrt(xSL ^ 2 + xSC ^ 2 + xSH ^ 2)
// Works until here
// return DeltaCMC;
//CieLab2Hue(CIEa2, CIEb2) //Function returns CIE-H° value
{
var_bias = 0;
if (var_a >= 0 && var_b == 0) {
return 0;
}
if (var_a < 0 && var_b == 0) {
return 180;
}
if (var_a == 0 && var_b > 0) {
return 90;
}
if (var_a == 0 && var_b < 0) {
return 270;
}
if (var_a > 0 && var_b > 0) {
var_bias = 0;
}
if (var_a < 0) {
var_bias = 180;
}
if (var_a > 0 && var_b < 0) {
var_bias = 360;
}
//return (rad2deg(atan(var_b / var_a)) + var_bias);
}
}