INNER CODE UNIT · JavaScript
color_distance
increpare/flickgame · flickgame_base.js:55
function color_distance(color1, color2) {
var c1 = hexToRgb(color1);
var c2 = hexToRgb(color2);
var lab1 = rgbToLab(c1.r, c1.g, c1.b);
var lab2 = rgbToLab(c2.r, c2.g, c2.b);
var dL = lab1.L - lab2.L, dA = lab1.a - lab2.a, dB = lab1.b - lab2.b;
return Math.sqrt(dL * dL + dA * dA + dB * dB);
}
function nearest_color_index_in_palette(palette, target_color) {
var nearest_idx = 0;
var nearest_dist = color_distance(target_color, palette[0]);
for (var i = 1; i < palette.length; i++) {
var dist = color_distance(target_color, palette[i]);
if (dist < nearest_dist) { nearest_dist = dist; nearest_idx = i; }
}
return nearest_idx;
}