Skip to content

Commit 0ec0fe3

Browse files
committed
[css-color] fix bug in Lab to XYZ code
1 parent be8cee3 commit 0ec0fe3

File tree

3 files changed

+45
-8
lines changed

3 files changed

+45
-8
lines changed

css-color/Overview.bs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4509,9 +4509,9 @@ function Lab_to_XYZ(Lab) {
45094509

45104510
// compute xyz
45114511
var xyz = [
4512-
f[0] > ε ? Math.pow(f[0],3) : (116*f[0]-16)/κ,
4513-
Lab[0] > κ * ε ? Math.pow((Lab[0]+16)/116,3) : Lab[0]/κ,
4514-
f[2] > ε ? Math.pow(f[2],3) : (116*f[2]-16)/κ
4512+
Math.pow(f[0],3) > ε ? Math.pow(f[0],3) : (116*f[0]-16)/κ,
4513+
Lab[0] > κ * ε ? Math.pow((Lab[0]+16)/116,3) : Lab[0]/κ,
4514+
Math.pow(f[2],3) > ε ? Math.pow(f[2],3) : (116*f[2]-16)/κ
45154515
];
45164516

45174517
// Compute XYZ by scaling xyz by reference white

css-color/conversions.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ function XYZ_to_Lab(XYZ) {
207207

208208
function Lab_to_XYZ(Lab) {
209209
// Convert Lab to D50-adapted XYZ
210+
// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
210211
var κ = 24389/27; // 29^3/3^3
211212
var ε = 216/24389; // 6^3/29^3
212213
var white = [0.9642, 1.0000, 0.8249]; // D50 reference white
@@ -219,9 +220,9 @@ function Lab_to_XYZ(Lab) {
219220

220221
// compute xyz
221222
var xyz = [
222-
f[0] > ε ? Math.pow(f[0],3) : (116*f[0]-16)/κ,
223-
Lab[0] > κ * ε ? Math.pow((Lab[0]+16)/116,3) : Lab[0]/κ,
224-
f[2] > ε ? Math.pow(f[2],3) : (116*f[2]-16)/κ
223+
Math.pow(f[0],3) > ε ? Math.pow(f[0],3) : (116*f[0]-16)/κ,
224+
Lab[0] > κ * ε ? Math.pow((Lab[0]+16)/116,3) : Lab[0]/κ,
225+
Math.pow(f[2],3) > ε ? Math.pow(f[2],3) : (116*f[2]-16)/κ
225226
];
226227

227228
// Compute XYZ by scaling xyz by reference white

css-color/grays.html

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,44 @@
55
// make 7 steps in sRGB, compare to 7 steps in D65-adapted lab
66
// odd number of steps so we have an exact 50%
77

8-
for (var i =0; i <7; i++) {
9-
console.log(i>0? 100 * 7 / i: 0);
8+
for (var i =0; i <8; i++) {
9+
console.log(100 * i / 7);
10+
}
11+
for (var i =0; i <8; i++) {
12+
var lab = [100 * i / 7, 0, 0];
13+
// console.log(lab);
14+
console.log(i);
15+
var xyz = Lab_to_XYZ(lab);
16+
// okay, bradford
17+
var xyz2 = D50_to_D65(xyz);
18+
var linrgb = XYZ_to_lin_sRGB(xyz2);
19+
console.log(linrgb);
20+
var rgb = gam_sRGB(linrgb);
21+
console.log(rgb);
1022
}
1123
</script>
24+
<style>
25+
#rgb {background: #777; padding:20px}
26+
#rgb div {width:60px; height: 60px; display: inline-block; padding:10px; }
27+
</style>
28+
<div id="rgb">
29+
<div style="background-color:rgb(0,0,0)"> </div>
30+
<div style="background-color:rgb(14.285714285714286%, 14.285714285714286%, 14.285714285714286%)"> </div>
31+
<div style="background-color:rgb(28.571428571428573%, 28.571428571428573%, 28.571428571428573%)"> </div>
32+
<div style="background-color:rgb(42.857142857142854%, 42.857142857142854%, 42.857142857142854%)"> </div>
33+
<div style="background-color:rgb(57.142857142857146%, 57.142857142857146%, 57.142857142857146%)"> </div>
34+
<div style="background-color:rgb(71.42857142857143%, 71.42857142857143%, 71.42857142857143%)"> </div>
35+
<div style="background-color:rgb(85.71428571428571%, 85.71428571428571%, 85.71428571428571%)"> </div>
36+
<div style="background-color:rgb(100%, 100%, 100%)"> </div>
37+
</div>
38+
<div id="lab">
39+
<div style="background-color:rgb(0,0,0)"> </div>
40+
<div style="background-color:rgb(14.285714285714286%, 14.285714285714286%, 14.285714285714286%)"> </div>
41+
<div style="background-color:rgb(28.571428571428573%, 28.571428571428573%, 28.571428571428573%)"> </div>
42+
<div style="background-color:rgb(42.857142857142854%, 42.857142857142854%, 42.857142857142854%)"> </div>
43+
<div style="background-color:rgb(57.142857142857146%, 57.142857142857146%, 57.142857142857146%)"> </div>
44+
<div style="background-color:rgb(71.42857142857143%, 71.42857142857143%, 71.42857142857143%)"> </div>
45+
<div style="background-color:rgb(85.71428571428571%, 85.71428571428571%, 85.71428571428571%)"> </div>
46+
<div style="background-color:rgb(100%, 100%, 100%)"> </div>
47+
</div>
1248
</html>

0 commit comments

Comments
 (0)