我正在尝试基于 Easy RGB 和 lab-lch.js
将 CIE Lab 颜色转换为 CIE LCH这是我正在使用的
function LAB_to_LCH(LAB)
{
var labL = LAB[0];
var labA = LAB[1];
var labB = LAB[2];
// https://easyrgb.com/en/math.php
var lchH = Math.atan( labB, labA );
// alert("lch (radians): " + lchH)
lchH = to_degrees(lchH);
lchL = labL;
lchC = Math.sqrt( Math.pow(labA,2) + Math.pow(labB,2) );
return [lchL,lchC,lchH];
}
function to_degrees (angle)
{
if (angle > 0)
{
angle = (angle / Math.PI ) * 180;
}
else
{
angle = 360 - ( Math.abs(angle) / Math.PI ) * 180;
}
return angle;
}
var myLab = [20, 7, -25];
var myLCH = LAB_to_LCH(myLab); // 20, 25.95, 272.2
// should be // 20, 25.95, 285.64
var myLab = [91, -42, 57];
var myLCH = LAB_to_LCH(myLab); // 91.0 , 70.80254, 88.9949
// should be // 91.00, 70.80 126.38
它有效。 (嗯……三分之二还不错!)在 colourmine.org
上检查色调值时,它们应该是多少?我不知道我哪里错了。有什么想法吗?
你的代码没问题 - 但有一个小错别字 -
var lchH = Math.atan( labB, labA );
需要
var lchH = Math.atan2( labB, labA );
Arctan 有续集 - 谁知道?!