summaryrefslogtreecommitdiff
path: root/xicc/xspect.c
diff options
context:
space:
mode:
Diffstat (limited to 'xicc/xspect.c')
-rwxr-xr-x[-rw-r--r--]xicc/xspect.c3318
1 files changed, 2986 insertions, 332 deletions
diff --git a/xicc/xspect.c b/xicc/xspect.c
index 477892b..1df8555 100644..100755
--- a/xicc/xspect.c
+++ b/xicc/xspect.c
@@ -52,7 +52,7 @@
#undef STOCKFWA /* [und] Use table shape else compute from flat line estimate*/
-#undef DEBUG /* [und] Extra printouts + debugging messages */
+#undef DEBUG /* [und] Extra printouts + debugging messages (need to uncomment) */
#undef DOPLOT /* [und] Plot FWA setup */
#undef DOPLOT_ALL_FWA /* [und] Plot all FWA corrected conversions */
#undef WRITE_FWA1_STIM /* [und] Write file "fwa1_stip.sp" when FWA is setup */
@@ -292,10 +292,11 @@ static xspect il_D65 = {
};
#ifndef SALONEINSTLIB
-/* General temperature Daylight spectra (Using CIE 1960 u,v CCT) */
+/* General temperature Daylight spectra (Using OLDER CIE 1960 u,v CCT) */
+/* 300 - 830nm ub 5nm intervals. */
/* Fill in the given xspect with the specified daylight illuminant */
/* Return nz if temperature is out of range */
-static int daylight_il(xspect *sp, double ct) {
+static int daylight_old_il(xspect *sp, double ct) {
static double s0[107] = {
0.04, 3.02, 6.00, 17.80, 29.60, 42.45, 55.30, 56.30, 57.30, 59.55,
61.80, 61.65, 61.50, 65.15, 68.80, 66.10, 63.40, 64.60, 65.80, 80.30,
@@ -339,7 +340,7 @@ static int daylight_il(xspect *sp, double ct) {
double xd, yd;
double m1, m2;
- if (ct < 4000.0 || ct > 25000.0) { /* Only accurate down to 4000 */
+ if (ct < 2500.0 || ct > 25000.0) { /* Only accurate down to about 4000 */
return 1;
}
@@ -352,8 +353,8 @@ static int daylight_il(xspect *sp, double ct) {
yd = -3.000 * xd * xd + 2.870 * xd - 0.275;
/* Compute m factors */
- m1 = (-1.3515 - 1.7703 * xd + 5.9114 * yd)/(0.0241 + 0.2562 * xd - 0.7341 * yd);
- m2 = (0.0300 - 31.4424 * xd + 30.0717 * yd)/(0.0241 + 0.2562 * xd - 0.7341 * yd);
+ m1 = (-1.7703 * xd + 5.9114 * yd - 1.3515)/(0.2562 * xd - 0.7341 * yd + 0.0241);
+ m2 = (-31.4424 * xd + 30.0717 * yd + 0.0300)/(0.2562 * xd - 0.7341 * yd + 0.0241);
/* Compute spectral values */
for (i = 0; i < 107; i++) {
@@ -367,10 +368,154 @@ static int daylight_il(xspect *sp, double ct) {
return 0;
}
+
+/* General temperature Daylight spectra from CIE 15.2004 Appendix C. */
+/* - uses improved interpolation. Assumes 1931 observer & 1 nm spacing. */
+/* 300 - 830nm ub 5nm intervals. */
+/* Fill in the given xspect with the specified daylight illuminant */
+/* Return nz if temperature is out of range */
+static int daylight_il(xspect *sp, double ct) {
+ static double s0[107] = {
+ 0.04000, -0.15625, 6.00000, 16.56625, 29.60000,
+ 43.80000, 55.30000, 57.62500, 57.30000, 59.69375,
+ 61.80000, 61.47500, 61.50000, 65.46875, 68.80000,
+ 66.40625, 63.40000, 62.45000, 65.80000, 79.82500,
+ 94.80000, 101.54375, 104.80000, 106.54375, 105.90000,
+ 100.35000, 96.80000, 104.05000, 113.90000, 120.82500,
+ 125.60000, 126.54375, 125.50000, 123.39375, 121.30000,
+ 121.52500, 121.30000, 117.42500, 113.50000, 112.95625,
+ 113.10000, 112.19375, 110.80000, 108.36250, 106.50000,
+ 107.60000, 108.80000, 107.25000, 105.30000, 104.90625,
+ 104.40000, 102.39375, 100.00000, 97.78125, 96.00000,
+ 95.67500, 95.10000, 91.95625, 89.10000, 89.43750,
+ 90.50000, 90.60625, 90.30000, 89.61250, 88.40000,
+ 86.01250, 84.00000, 84.47500, 85.10000, 83.52500,
+ 81.90000, 81.90625, 82.60000, 84.01875, 84.90000,
+ 83.83125, 81.30000, 76.22500, 71.90000, 72.38125,
+ 74.30000, 76.31875, 76.40000, 69.45625, 63.30000,
+ 66.35000, 71.70000, 75.61250, 77.00000, 72.52500,
+ 65.20000, 54.40625, 47.70000, 57.28125, 68.60000,
+ 68.04375, 65.00000, 65.58750, 66.00000, 64.04375,
+ 61.00000, 56.48750, 53.30000, 55.43125, 58.90000,
+ 61.71875, 61.90000
+ };
+
+ static double s1[107] = {
+ 0.02000, -0.15000, 4.50000, 12.50500, 22.40000,
+ 33.40625, 42.00000, 42.46250, 40.60000, 41.23750,
+ 41.60000, 39.58750, 38.00000, 40.21875, 42.40000,
+ 40.94375, 38.50000, 35.98125, 35.00000, 38.80000,
+ 43.40000, 45.52500, 46.30000, 45.70625, 43.90000,
+ 40.37500, 37.10000, 36.52500, 36.70000, 36.48125,
+ 35.90000, 34.49375, 32.60000, 30.26875, 27.90000,
+ 26.06875, 24.30000, 22.21875, 20.10000, 18.07500,
+ 16.20000, 14.74375, 13.20000, 10.86875, 8.60000,
+ 7.18125, 6.10000, 5.13750, 4.20000, 3.05000,
+ 1.90000, 0.90625, 0.00000, -0.80000, -1.60000,
+ -2.65000, -3.50000, -3.47500, -3.50000, -4.56250,
+ -5.80000, -6.55625, -7.20000, -7.93125, -8.60000,
+ -9.05000, -9.50000, -10.26875, -10.90000, -10.80625,
+ -10.70000, -11.21250, -12.00000, -13.10625, -14.00000,
+ -14.02500, -13.60000, -12.69375, -12.00000, -12.57500,
+ -13.30000, -13.32500, -12.90000, -11.66250, -10.60000,
+ -10.91875, -11.60000, -12.08750, -12.20000, -11.38750,
+ -10.20000, -8.66250, -7.80000, -9.40000, -11.20000,
+ -11.00000, -10.40000, -10.50625, -10.60000, -10.25000,
+ -9.70000, -8.88125, -8.30000, -8.68125, -9.30000,
+ -9.79375, -9.80000
+ };
+
+ static double s2[107] = {
+ 0.00000, 1.15625, 2.00000, 2.84375, 4.00000,
+ 6.41875, 8.50000, 8.50000, 7.80000, 7.29375,
+ 6.70000, 5.88125, 5.30000, 5.80625, 6.10000,
+ 4.71250, 3.00000, 2.05000, 1.20000, -0.10000,
+ -1.10000, -0.93125, -0.50000, -0.53125, -0.70000,
+ -0.87500, -1.20000, -1.91250, -2.60000, -2.84375,
+ -2.90000, -2.88125, -2.80000, -2.69375, -2.60000,
+ -2.63750, -2.60000, -2.21875, -1.80000, -1.61250,
+ -1.50000, -1.38750, -1.30000, -1.25000, -1.20000,
+ -1.12500, -1.00000, -0.75000, -0.50000, -0.38750,
+ -0.30000, -0.15000, 0.00000, 0.10000, 0.20000,
+ 0.26250, 0.50000, 1.25000, 2.10000, 2.69375,
+ 3.20000, 3.68125, 4.10000, 4.43125, 4.70000,
+ 4.83750, 5.10000, 5.88750, 6.70000, 7.01875,
+ 7.30000, 7.91250, 8.60000, 9.25625, 9.80000,
+ 10.19375, 10.20000, 9.19375, 8.30000, 8.90000,
+ 9.60000, 9.22500, 8.50000, 7.64375, 7.00000,
+ 7.18125, 7.60000, 7.91875, 8.00000, 7.46875,
+ 6.70000, 5.73125, 5.20000, 6.24375, 7.40000,
+ 7.22500, 6.80000, 6.90000, 7.00000, 6.76875,
+ 6.40000, 5.87500, 5.50000, 5.71875, 6.10000,
+ 6.43125, 6.50000,
+ };
+
+ /* M values for [1nm,5nm][1931,1964][M1,M2][g, h, i, j, k, l] */
+ double ms[2][2][2][6] = {
+ { /* 1nm */
+ {
+ { -1.77864, 5.90745, -1.34666, 0.25540, -0.73218, 0.02387 },
+ { -31.44505, 30.06408, 0.03656, 0.25540, -0.73218, 0.02387 }
+ },
+ {
+ { -1.57049, 5.56450, -1.31211, 0.21249, -0.71591, 0.04663 },
+ { -30.15166, 31.07906, -0.73912, 0.21249, -0.71591, 0.04663 }
+ }
+ },
+ { /* 5nm */
+ {
+ { -1.77861, 5.90757, -1.34674, 0.25539, -0.73217, 0.02387 },
+ { -31.44464, 30.06400, 0.03638, 0.25539, -0.73217, 0.02387 }
+ },
+ {
+ { -1.57049, 5.56460, -1.31215, 0.21250, -0.71592, 0.04663 },
+ { -30.15139, 31.07931, -0.73928, 0.21250, -0.71592, 0.04663 }
+ }
+ }
+ };
+
+ int i;
+ double xd, yd;
+ int obs = 0; /* 1931 */
+ int sint = 0; /* 1nm */
+ double m1, m2;
+
+ if (ct < 2500.0 || ct > 25000.0) { /* Only accurate down to about 4000 */
+ return 1;
+ }
+
+ /* Compute chromaticity coordinates */
+ if (ct < 7000.0) {
+ xd = -4.6070e9/(ct * ct * ct) + 2.9678e6/(ct * ct) + 0.09911e3/ct + 0.244063;
+ } else {
+ xd = -2.0064e9/(ct * ct * ct) + 1.9018e6/(ct * ct) + 0.24748e3/ct + 0.237040;
+ }
+ yd = -3.000 * xd * xd + 2.870 * xd - 0.275;
+
+ /* Compute m factors */
+ m1 = (ms[sint][obs][0][0] * xd + ms[sint][obs][0][1] * yd + ms[sint][obs][0][2])
+ / (ms[sint][obs][0][3] * xd + ms[sint][obs][0][4] * yd + ms[sint][obs][0][5]);
+ m2 = (ms[sint][obs][1][0] * xd + ms[sint][obs][1][1] * yd + ms[sint][obs][1][2])
+ / (ms[sint][obs][1][3] * xd + ms[sint][obs][1][4] * yd + ms[sint][obs][1][5]);
+
+ /* Compute spectral values */
+ for (i = 0; i < 107; i++) {
+ sp->spec[i] = s0[i] + m1 * s1[i] + m2 * s2[i];
+ }
+
+ sp->spec_n = 107;
+ sp->spec_wl_short = 300.0;
+ sp->spec_wl_long = 830;
+ sp->norm = 100.0; /* Arbitrary */
+
+ return 0;
+}
+
#endif /* !SALONEINSTLIB */
-/* General temperature Planckian (black body) spectra */
+/* General temperature Planckian (black body) spectra using CIE 15:2004 */
/* Fill in the given xspect with the specified Planckian illuminant */
+/* normalised so that 560nm = 100. */
/* Return nz if temperature is out of range */
static int planckian_il(xspect *sp, double ct) {
int i;
@@ -386,19 +531,49 @@ static int planckian_il(xspect *sp, double ct) {
/* Compute spectral values using Plank's radiation law: */
/* Normalise numbers by energy at 560 nm */
- wl = 1e-9 * 560;
- norm = 0.01 * (3.74183e-16 * pow(wl, -5.0)) / (exp(1.4388e-2 / (wl * ct)) - 1.0);
+ norm = pow(560e-9, -5.0) / (exp(1.4388e-2 / (560e-9 * ct)) - 1.0);
for (i = 0; i < sp->spec_n; i++) {
wl = 1e-9 * XSPECT_XWL(sp, i); /* Wavelength in meters */
- sp->spec[i] = (3.74183e-16 * pow(wl, -5.0)) / (exp(1.4388e-2 / (wl * ct)) - 1.0);
+ sp->spec[i] = 100.0 * pow(wl, -5.0) / (exp(1.4388e-2 / (wl * ct)) - 1.0);
sp->spec[i] /= norm;
}
- sp->norm = 100.0; /* Arbitrary */
+ sp->norm = 100.0; /* value at 560 nm */
return 0;
}
+/* General temperature Planckian (black body) spectra using older formulation */
+/* Fill in the given xspect with the specified Planckian illuminant */
+/* normalised so that 560nm = 100. */
+/* Return nz if temperature is out of range */
+static int planckian_old_il(xspect *sp, double ct) {
+ int i;
+ double wl, norm;
+
+ if (ct < 1.0 || ct > 1e6) /* set some arbitrary limits */
+ return 1;
+
+ /* Set out targets */
+ sp->spec_n = 531; /* 1nm */
+ sp->spec_wl_short = 300.0;
+ sp->spec_wl_long = 830;
+
+ /* Compute spectral values using Plank's radiation law: */
+ /* Normalise numbers by energy at 560 nm */
+ norm = pow(560e-9, -5.0) / (exp(1.4350e-2 / (560e-9 * ct)) - 1.0);
+ for (i = 0; i < sp->spec_n; i++) {
+ wl = 1e-9 * XSPECT_XWL(sp, i); /* Wavelength in meters */
+ sp->spec[i] = 100.0 * pow(wl, -5.0) / (exp(1.4350e-2 / (wl * ct)) - 1.0);
+ sp->spec[i] /= norm;
+
+ }
+ sp->norm = 100.0; /* value at 560 nm */
+
+ return 0;
+}
+
+
#ifndef SALONEINSTLIB
/* CIE F5 */
@@ -460,7 +635,7 @@ static xspect il_F10 = {
6.75, 34.39, 14.86, 10.40, 10.76, 10.67, 10.11, 9.27, 8.29, 7.29,
7.91, 16.64, 16.73, 10.44, 5.94, 3.34, 2.35, 1.88, 1.59, 1.47,
1.80, 5.71, 40.98, 73.69, 33.61, 8.24, 3.38, 2.47, 2.14, 4.86,
- 11.45, 14.79, 12.16, 8.97, 6.53, 8.31, 44.12, 34.55, 12.09, 12.15,
+ 11.45, 14.79, 12.16, 8.97, 6.5, 8.31, 44.12, 34.55, 12.09, 12.15,
10.52, 4.43, 1.95, 2.19, 3.19, 2.77, 2.29, 2.00, 1.52, 1.35,
1.47, 1.79, 1.74, 1.02, 1.14, 3.32, 4.49, 2.05, 0.49, 0.24,
0.21, 0.21, 0.24, 0.24, 0.21, 0.17, 0.21, 0.22, 0.17, 0.12,
@@ -569,16 +744,19 @@ double temp /* Optional temperature in degrees kelvin, for Dtemp and Ptemp *
case icxIT_Spectrocam:
*sp = il_Spectrocam;
return 0;
+ case icxIT_ODtemp:
+ return daylight_old_il(sp, temp);
case icxIT_Dtemp:
return daylight_il(sp, temp);
#endif
+ case icxIT_OPtemp:
+ return planckian_old_il(sp, temp);
case icxIT_Ptemp:
return planckian_il(sp, temp);
}
return 1;
}
-
/* ------------- */
/* Observer Data */
@@ -1712,6 +1890,77 @@ static xspect ob_Shaw_Fairchild_2[3] = {
}
};
+/* EBU standard camera curves - 2012 */
+/* from Tech 3355 */
+static xspect ob_EBU_2012[3] = {
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000450, 0.001000, 0.001230, 0.001300,
+ 0.001300, 0.001190, 0.001120, 0.001040, 0.000930,
+ 0.000860, 0.000820, 0.000820, 0.000890, 0.000890,
+ 0.000970, 0.000890, 0.000890, 0.000890, 0.000930,
+ 0.001040, 0.001120, 0.001340, 0.001490, 0.001710,
+ 0.001790, 0.001670, 0.001410, 0.001150, 0.001120,
+ 0.001190, 0.001710, 0.005920, 0.015630, 0.032310,
+ 0.054310, 0.067330, 0.072830, 0.073060, 0.071650,
+ 0.068640, 0.063800, 0.059260, 0.054600, 0.049390,
+ 0.044370, 0.039570, 0.034540, 0.029440, 0.025030,
+ 0.021030, 0.017900, 0.014960, 0.012170, 0.009710,
+ 0.007740, 0.005880, 0.004350, 0.002900, 0.002000,
+ 0.001340, 0.000950, 0.000710, 0.000530, 0.000440,
+ 0.000310, 0.000190, 0.000060, 0.000000, 0.000000,
+ 0.000000, 0.000000
+ }
+ },
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000110, 0.000211, 0.000321, 0.000482,
+ 0.000562, 0.000633, 0.000753, 0.000934, 0.001175,
+ 0.001386, 0.001777, 0.002239, 0.002902, 0.003555,
+ 0.004488, 0.006175, 0.010664, 0.021297, 0.036343,
+ 0.046681, 0.054634, 0.059594, 0.062114, 0.063761,
+ 0.065066, 0.066341, 0.067426, 0.068018, 0.068109,
+ 0.066994, 0.063530, 0.054222, 0.041319, 0.025210,
+ 0.013264, 0.007350, 0.004418, 0.002611, 0.001707,
+ 0.001084, 0.000482, 0.000030, 0.000011, 0.000008,
+ 0.000006, 0.000003, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000
+ }
+ },
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.000000, 0.000215, 0.000649, 0.001397, 0.003902,
+ 0.007905, 0.014223, 0.021958, 0.029294, 0.036253,
+ 0.042739, 0.048916, 0.055513, 0.061881, 0.068628,
+ 0.073179, 0.075694, 0.077461, 0.078010, 0.074377,
+ 0.066582, 0.053601, 0.036619, 0.022597, 0.012366,
+ 0.008274, 0.006138, 0.004461, 0.003254, 0.002455,
+ 0.001996, 0.001707, 0.001407, 0.001228, 0.000998,
+ 0.000928, 0.000779, 0.000599, 0.000489, 0.000369,
+ 0.000329, 0.000260, 0.000190, 0.000110, 0.000070,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000
+ }
+ }
+};
+
#ifdef NEVER
CIE TC 1-36 proposed
@@ -2649,6 +2898,11 @@ icxObserverType obType /* Type of observer */
sp[1] = &ob_Shaw_Fairchild_2[1];
sp[2] = &ob_Shaw_Fairchild_2[2];
return 0;
+ case icxOT_EBU_2012:
+ sp[0] = &ob_EBU_2012[0];
+ sp[1] = &ob_EBU_2012[1];
+ sp[2] = &ob_EBU_2012[2];
+ return 0;
#endif /* !SALONEINSTLIB */
default:
return 1;
@@ -2676,6 +2930,8 @@ char *standardObserverDescription(icxObserverType obType) {
return "CIE 1964 10 degree observer (aligned)";
case icxOT_Shaw_Fairchild_2:
return "Shaw & Fairchild 1997 2 degree observer";
+ case icxOT_EBU_2012:
+ return "EBU Standard Camera 2012";
#endif /* !SALONEINSTLIB */
}
return "Unknown observer";
@@ -2961,6 +3217,562 @@ static xspect CIE1995_TCS[] = {
}
};
+/* EBU TLCI ColorChecker samples */
+static xspect TLCI_2012_TCS[] = {
+
+ /* 1 Dark skin */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.05400, 0.05700, 0.06300, 0.06600, 0.07500,
+ 0.07800, 0.07800, 0.07600, 0.07400, 0.07000,
+ 0.06600, 0.06400, 0.06200, 0.06000, 0.05900,
+ 0.06000, 0.05800, 0.06000, 0.06000, 0.06200,
+ 0.05800, 0.06300, 0.06300, 0.06700, 0.06800,
+ 0.07000, 0.07200, 0.07700, 0.07900, 0.08100,
+ 0.08100, 0.08300, 0.08300, 0.08400, 0.08400,
+ 0.08800, 0.09300, 0.09800, 0.10400, 0.11100,
+ 0.12100, 0.12700, 0.13300, 0.14000, 0.14400,
+ 0.14900, 0.15100, 0.15400, 0.16000, 0.16400,
+ 0.17000, 0.17500, 0.17900, 0.18400, 0.19300,
+ 0.20300, 0.21300, 0.22000, 0.23600, 0.24100,
+ 0.24800, 0.25700, 0.26900, 0.28000, 0.28900,
+ 0.30000, 0.31400, 0.33700, 0.34600, 0.36100,
+ 0.38200, 0.40400, 0.42500, 0.43900, 0.46400,
+ 0.47600, 0.49000
+ }
+ },
+ /* 2 Light skin */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.09200, 0.10900, 0.13400, 0.16100, 0.18600,
+ 0.20000, 0.20500, 0.20600, 0.20700, 0.20900,
+ 0.21100, 0.21300, 0.21600, 0.22100, 0.22700,
+ 0.23700, 0.24600, 0.25900, 0.27300, 0.28500,
+ 0.29400, 0.30400, 0.30500, 0.30900, 0.31400,
+ 0.32300, 0.33400, 0.34000, 0.33200, 0.31600,
+ 0.30000, 0.29200, 0.29000, 0.29500, 0.30000,
+ 0.30200, 0.29700, 0.29500, 0.30400, 0.32800,
+ 0.36500, 0.40900, 0.45000, 0.48800, 0.52000,
+ 0.54000, 0.55600, 0.56600, 0.57400, 0.58200,
+ 0.59300, 0.60200, 0.60700, 0.62500, 0.63100,
+ 0.63900, 0.65500, 0.66100, 0.68700, 0.69300,
+ 0.71100, 0.72200, 0.73700, 0.75700, 0.76800,
+ 0.78600, 0.79800, 0.81500, 0.82200, 0.82300,
+ 0.83500, 0.84500, 0.85500, 0.84800, 0.86200,
+ 0.86100, 0.86800
+ }
+ },
+ /* 3 Blue sky */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.10500, 0.12700, 0.16400, 0.21300, 0.27100,
+ 0.31400, 0.33300, 0.34400, 0.34500, 0.34400,
+ 0.34600, 0.34600, 0.34700, 0.34300, 0.33700,
+ 0.33300, 0.32700, 0.32400, 0.31900, 0.30600,
+ 0.29000, 0.28800, 0.28000, 0.27400, 0.26500,
+ 0.25800, 0.25000, 0.24000, 0.22900, 0.22000,
+ 0.21200, 0.20700, 0.20300, 0.19800, 0.19300,
+ 0.19100, 0.18700, 0.18100, 0.17400, 0.17000,
+ 0.16700, 0.16200, 0.15800, 0.16100, 0.15600,
+ 0.15200, 0.15000, 0.14500, 0.14200, 0.13700,
+ 0.13300, 0.13200, 0.12600, 0.12700, 0.12100,
+ 0.11800, 0.11500, 0.11500, 0.11200, 0.11000,
+ 0.11000, 0.10900, 0.10800, 0.10800, 0.10600,
+ 0.10500, 0.10500, 0.10600, 0.10600, 0.10500,
+ 0.10700, 0.10500, 0.10600, 0.10500, 0.10800,
+ 0.10700, 0.11000
+ }
+ },
+ /* 4 Foliage */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.05000, 0.05200, 0.05200, 0.05000, 0.05200,
+ 0.05200, 0.05200, 0.05300, 0.05100, 0.05300,
+ 0.05300, 0.05300, 0.05500, 0.05800, 0.05900,
+ 0.06100, 0.06000, 0.06300, 0.06300, 0.06700,
+ 0.06500, 0.06700, 0.06900, 0.07200, 0.07700,
+ 0.08800, 0.10500, 0.13200, 0.15900, 0.18200,
+ 0.19500, 0.19900, 0.19100, 0.18000, 0.16700,
+ 0.15600, 0.14400, 0.13300, 0.13100, 0.13000,
+ 0.12900, 0.12300, 0.11800, 0.11400, 0.11000,
+ 0.10200, 0.10100, 0.10300, 0.10400, 0.10500,
+ 0.10500, 0.10600, 0.10200, 0.10200, 0.10100,
+ 0.10100, 0.10100, 0.10100, 0.10700, 0.11500,
+ 0.13200, 0.15200, 0.18500, 0.23300, 0.28300,
+ 0.33900, 0.38300, 0.41900, 0.44400, 0.44500,
+ 0.46500, 0.47300, 0.47700, 0.48000, 0.48900,
+ 0.49200, 0.49800
+ }
+ },
+ /* 5 Blue flower */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.10100, 0.12700, 0.17000, 0.23300, 0.31000,
+ 0.37300, 0.40900, 0.42400, 0.43200, 0.43700,
+ 0.43700, 0.43800, 0.43700, 0.43200, 0.42800,
+ 0.42300, 0.41700, 0.41200, 0.40500, 0.39500,
+ 0.38000, 0.37300, 0.36400, 0.35500, 0.34200,
+ 0.33300, 0.31600, 0.29600, 0.26700, 0.24500,
+ 0.22700, 0.21200, 0.20600, 0.20300, 0.20300,
+ 0.20400, 0.19600, 0.19000, 0.19000, 0.19400,
+ 0.20100, 0.21000, 0.21600, 0.22500, 0.22800,
+ 0.23200, 0.23800, 0.24000, 0.23600, 0.23600,
+ 0.24000, 0.24800, 0.26100, 0.28900, 0.32200,
+ 0.36200, 0.40700, 0.44600, 0.48800, 0.51200,
+ 0.54600, 0.54600, 0.55500, 0.56300, 0.56400,
+ 0.57500, 0.57800, 0.58600, 0.59000, 0.58900,
+ 0.60100, 0.60400, 0.60600, 0.60500, 0.61400,
+ 0.61600, 0.61700
+ }
+ },
+ /* 6 Bluish green */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.10800, 0.13200, 0.16800, 0.21300, 0.26000,
+ 0.29200, 0.30800, 0.31700, 0.32000, 0.32800,
+ 0.33600, 0.34200, 0.35200, 0.36000, 0.37100,
+ 0.38600, 0.40500, 0.43300, 0.46500, 0.49700,
+ 0.52800, 0.55700, 0.57600, 0.59100, 0.58600,
+ 0.59100, 0.58600, 0.58200, 0.56700, 0.55900,
+ 0.54500, 0.53300, 0.51200, 0.49200, 0.47200,
+ 0.44500, 0.42900, 0.40200, 0.38000, 0.35500,
+ 0.33200, 0.30900, 0.28400, 0.26200, 0.24700,
+ 0.23300, 0.22400, 0.21700, 0.21200, 0.20900,
+ 0.20700, 0.20500, 0.20000, 0.19800, 0.19900,
+ 0.19700, 0.19900, 0.20300, 0.21000, 0.21600,
+ 0.21800, 0.22600, 0.23200, 0.23600, 0.23800,
+ 0.24200, 0.24200, 0.23900, 0.23200, 0.22700,
+ 0.22900, 0.23000, 0.23700, 0.24800, 0.25600,
+ 0.26900, 0.27400
+ }
+ },
+ /* 7 Orange */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.05200, 0.05400, 0.05200, 0.05000, 0.05200,
+ 0.05200, 0.05200, 0.05100, 0.05000, 0.05000,
+ 0.05200, 0.05000, 0.05100, 0.05100, 0.05200,
+ 0.05100, 0.05100, 0.05300, 0.05300, 0.05400,
+ 0.05500, 0.05600, 0.05500, 0.05800, 0.06100,
+ 0.06300, 0.06800, 0.07700, 0.08600, 0.09800,
+ 0.12000, 0.14500, 0.17500, 0.20600, 0.23600,
+ 0.27000, 0.30200, 0.34100, 0.37500, 0.41000,
+ 0.44000, 0.46700, 0.48800, 0.50900, 0.51800,
+ 0.53200, 0.54000, 0.55100, 0.55700, 0.56200,
+ 0.56800, 0.57500, 0.58100, 0.58400, 0.58500,
+ 0.59000, 0.60100, 0.59600, 0.60000, 0.59600,
+ 0.60400, 0.60300, 0.60600, 0.60700, 0.60800,
+ 0.61500, 0.61700, 0.62100, 0.62200, 0.61900,
+ 0.62500, 0.62800, 0.63000, 0.62700, 0.63500,
+ 0.63900, 0.64000
+ }
+ },
+ /* 8 Purplish blue */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.09400, 0.11300, 0.14100, 0.18600, 0.23500,
+ 0.27500, 0.29700, 0.31600, 0.31700, 0.33300,
+ 0.34600, 0.35500, 0.36800, 0.37800, 0.38100,
+ 0.37700, 0.36800, 0.35600, 0.34000, 0.32200,
+ 0.29600, 0.26900, 0.24100, 0.22000, 0.19700,
+ 0.18200, 0.16600, 0.15100, 0.13800, 0.12700,
+ 0.12000, 0.11500, 0.10800, 0.10400, 0.10100,
+ 0.09500, 0.09000, 0.08400, 0.08200, 0.08100,
+ 0.08100, 0.08100, 0.08100, 0.08300, 0.08300,
+ 0.08000, 0.07900, 0.08000, 0.08100, 0.08100,
+ 0.08400, 0.08900, 0.09200, 0.09600, 0.10300,
+ 0.10700, 0.11200, 0.11100, 0.11200, 0.10900,
+ 0.10400, 0.10200, 0.09900, 0.09900, 0.10000,
+ 0.10000, 0.10300, 0.10600, 0.10900, 0.11300,
+ 0.12200, 0.12700, 0.13800, 0.15300, 0.17300,
+ 0.19300, 0.21500
+ }
+ },
+ /* 9 Moderate red */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.08800, 0.10200, 0.12100, 0.13600, 0.15100,
+ 0.15300, 0.15100, 0.14400, 0.14200, 0.14100,
+ 0.13900, 0.13500, 0.13600, 0.13500, 0.13300,
+ 0.13200, 0.12900, 0.13000, 0.12900, 0.12700,
+ 0.12100, 0.11800, 0.10900, 0.10500, 0.10500,
+ 0.10400, 0.10100, 0.10000, 0.09400, 0.09100,
+ 0.08900, 0.09200, 0.09500, 0.09700, 0.10400,
+ 0.10900, 0.11100, 0.11300, 0.11600, 0.13400,
+ 0.16700, 0.22300, 0.29100, 0.36200, 0.42600,
+ 0.47400, 0.51100, 0.53700, 0.55100, 0.56200,
+ 0.56500, 0.57000, 0.57500, 0.57400, 0.57900,
+ 0.57700, 0.57900, 0.57700, 0.58000, 0.58100,
+ 0.57900, 0.58100, 0.58100, 0.58300, 0.58100,
+ 0.58100, 0.58000, 0.58600, 0.58500, 0.58400,
+ 0.58900, 0.58700, 0.59000, 0.58200, 0.58900,
+ 0.59200, 0.59000
+ }
+ },
+ /* 10 Purple */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.08300, 0.10000, 0.12500, 0.15400, 0.18300,
+ 0.19800, 0.20600, 0.20700, 0.20700, 0.20100,
+ 0.19400, 0.18400, 0.17500, 0.16300, 0.15400,
+ 0.14200, 0.12900, 0.12000, 0.10900, 0.10200,
+ 0.09500, 0.09000, 0.08100, 0.07700, 0.07000,
+ 0.06700, 0.06500, 0.06300, 0.05900, 0.05800,
+ 0.05600, 0.05300, 0.05200, 0.05200, 0.05100,
+ 0.05300, 0.05500, 0.05600, 0.05400, 0.05200,
+ 0.05300, 0.04900, 0.05100, 0.05500, 0.05800,
+ 0.06300, 0.07300, 0.08700, 0.10300, 0.12000,
+ 0.13700, 0.14900, 0.16100, 0.17500, 0.18800,
+ 0.19700, 0.20800, 0.21800, 0.22900, 0.24100,
+ 0.24900, 0.26200, 0.27200, 0.28400, 0.29200,
+ 0.30400, 0.31200, 0.32500, 0.32900, 0.33300,
+ 0.34300, 0.34600, 0.35000, 0.35000, 0.35900,
+ 0.36000, 0.36200
+ }
+ },
+ /* 11 Yellow green */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.04500, 0.04800, 0.05000, 0.05000, 0.05400,
+ 0.05300, 0.05300, 0.05500, 0.05300, 0.05700,
+ 0.05900, 0.05900, 0.06200, 0.06500, 0.07000,
+ 0.07500, 0.08100, 0.09200, 0.10200, 0.11600,
+ 0.13600, 0.15800, 0.18500, 0.22500, 0.27400,
+ 0.32800, 0.39000, 0.44600, 0.48500, 0.51100,
+ 0.52900, 0.53800, 0.53900, 0.53500, 0.52600,
+ 0.52100, 0.51100, 0.50000, 0.48400, 0.46700,
+ 0.45000, 0.43500, 0.41200, 0.39500, 0.37700,
+ 0.36300, 0.35200, 0.34600, 0.33900, 0.33700,
+ 0.33700, 0.33100, 0.32600, 0.32200, 0.32300,
+ 0.32000, 0.32500, 0.32700, 0.33400, 0.34000,
+ 0.34700, 0.35500, 0.36200, 0.36900, 0.37300,
+ 0.37600, 0.37500, 0.37900, 0.37200, 0.36500,
+ 0.36700, 0.37500, 0.37900, 0.38800, 0.40300,
+ 0.41500, 0.43000
+ }
+ },
+ /* 12 Orange yellow */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.04900, 0.05200, 0.05400, 0.05500, 0.05400,
+ 0.05700, 0.05700, 0.05900, 0.05700, 0.05700,
+ 0.05900, 0.05700, 0.05800, 0.06000, 0.06100,
+ 0.06100, 0.06200, 0.06700, 0.07200, 0.08100,
+ 0.08800, 0.09800, 0.10600, 0.11200, 0.12000,
+ 0.13000, 0.14300, 0.16300, 0.18800, 0.21800,
+ 0.25600, 0.30400, 0.35100, 0.39900, 0.44200,
+ 0.47600, 0.50500, 0.53200, 0.54400, 0.56100,
+ 0.57900, 0.53900, 0.59700, 0.60400, 0.61700,
+ 0.61700, 0.61800, 0.62400, 0.62500, 0.63000,
+ 0.64700, 0.63500, 0.63800, 0.64200, 0.64900,
+ 0.65000, 0.64900, 0.65000, 0.67700, 0.65700,
+ 0.65300, 0.65900, 0.65800, 0.66200, 0.66100,
+ 0.66600, 0.66800, 0.67200, 0.67100, 0.66700,
+ 0.67700, 0.67800, 0.68200, 0.67800, 0.68600,
+ 0.69300, 0.69000
+ }
+ },
+ /* 13 Blue */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.06800, 0.08400, 0.10400, 0.12700, 0.15600,
+ 0.17800, 0.19400, 0.20900, 0.22100, 0.23400,
+ 0.25000, 0.26400, 0.28700, 0.30800, 0.31800,
+ 0.32300, 0.31700, 0.30300, 0.27600, 0.25500,
+ 0.22500, 0.19300, 0.16000, 0.13900, 0.11700,
+ 0.10400, 0.08700, 0.07700, 0.06600, 0.06000,
+ 0.05600, 0.05300, 0.05000, 0.04700, 0.04500,
+ 0.04200, 0.04300, 0.04000, 0.04000, 0.03800,
+ 0.03800, 0.03700, 0.03600, 0.03700, 0.03800,
+ 0.03600, 0.03700, 0.03700, 0.03700, 0.03900,
+ 0.03900, 0.04200, 0.04000, 0.04200, 0.04400,
+ 0.04500, 0.04700, 0.04800, 0.05000, 0.04800,
+ 0.04600, 0.05000, 0.04800, 0.05100, 0.04900,
+ 0.05200, 0.05400, 0.05700, 0.06000, 0.06500,
+ 0.06900, 0.07600, 0.08700, 0.10200, 0.12300,
+ 0.14700, 0.17400
+ }
+ },
+ /* 14 Green */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.04500, 0.04800, 0.05400, 0.05400, 0.05700,
+ 0.05900, 0.06000, 0.06000, 0.06000, 0.06200,
+ 0.05400, 0.06400, 0.06900, 0.07000, 0.07500,
+ 0.07900, 0.08300, 0.09000, 0.09900, 0.10900,
+ 0.12000, 0.13200, 0.14400, 0.15800, 0.17500,
+ 0.19600, 0.23100, 0.27200, 0.30700, 0.33800,
+ 0.35200, 0.35700, 0.35300, 0.34100, 0.32300,
+ 0.30500, 0.28600, 0.26500, 0.24400, 0.22400,
+ 0.20300, 0.18000, 0.16100, 0.14400, 0.12400,
+ 0.10800, 0.09800, 0.08900, 0.08400, 0.08000,
+ 0.07600, 0.07500, 0.07100, 0.07100, 0.07000,
+ 0.06700, 0.06700, 0.06700, 0.06800, 0.07000,
+ 0.07000, 0.07400, 0.07600, 0.07900, 0.08000,
+ 0.08200, 0.08600, 0.08500, 0.08300, 0.08100,
+ 0.08100, 0.08100, 0.08300, 0.08600, 0.09100,
+ 0.09400, 0.09800
+ }
+ },
+ /* 15 Red */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.04300, 0.04500, 0.04600, 0.04500, 0.04700,
+ 0.04600, 0.04800, 0.04600, 0.04600, 0.04600,
+ 0.04800, 0.04400, 0.04600, 0.04700, 0.04700,
+ 0.04700, 0.04600, 0.04600, 0.04400, 0.04400,
+ 0.04000, 0.04200, 0.03900, 0.04000, 0.04000,
+ 0.03900, 0.04000, 0.04000, 0.03800, 0.03800,
+ 0.03900, 0.03800, 0.04000, 0.04000, 0.04100,
+ 0.04200, 0.04400, 0.04600, 0.04700, 0.05400,
+ 0.06400, 0.08100, 0.11200, 0.15600, 0.21600,
+ 0.28300, 0.35800, 0.43400, 0.49900, 0.54900,
+ 0.58500, 0.60700, 0.62400, 0.63300, 0.65000,
+ 0.65200, 0.65200, 0.65600, 0.66100, 0.66600,
+ 0.66400, 0.67100, 0.67100, 0.67700, 0.67300,
+ 0.67800, 0.68000, 0.68900, 0.68800, 0.68500,
+ 0.69100, 0.69400, 0.69600, 0.69200, 0.69800,
+ 0.70400, 0.70000
+ }
+ },
+ /* 16 Yellow */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.04700, 0.04700, 0.04800, 0.04700, 0.05000,
+ 0.05200, 0.05200, 0.05100, 0.05100, 0.05300,
+ 0.05300, 0.05300, 0.05700, 0.05600, 0.05800,
+ 0.06000, 0.06200, 0.06700, 0.07600, 0.09000,
+ 0.10900, 0.14200, 0.18300, 0.22800, 0.27400,
+ 0.31900, 0.36000, 0.40500, 0.44300, 0.47500,
+ 0.51000, 0.54400, 0.57100, 0.59400, 0.61200,
+ 0.63000, 0.64600, 0.65600, 0.66800, 0.67700,
+ 0.69100, 0.69600, 0.70100, 0.70200, 0.72900,
+ 0.70100, 0.70400, 0.70700, 0.70800, 0.71300,
+ 0.72100, 0.71600, 0.71700, 0.71800, 0.72600,
+ 0.72900, 0.73000, 0.72800, 0.74700, 0.73900,
+ 0.73700, 0.74300, 0.74000, 0.75600, 0.74200,
+ 0.74900, 0.75100, 0.75300, 0.75400, 0.75000,
+ 0.76000, 0.76200, 0.76900, 0.76200, 0.77400,
+ 0.77600, 0.77900
+ }
+ },
+ /* 17 Magenta */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.10600, 0.12900, 0.16800, 0.22900, 0.29700,
+ 0.34600, 0.36700, 0.37200, 0.37700, 0.37300,
+ 0.36200, 0.35100, 0.34000, 0.32300, 0.30600,
+ 0.29300, 0.27600, 0.25900, 0.25000, 0.23400,
+ 0.22000, 0.20600, 0.19000, 0.17900, 0.16900,
+ 0.16300, 0.15200, 0.14000, 0.12600, 0.11300,
+ 0.10400, 0.09800, 0.09800, 0.10200, 0.10400,
+ 0.10300, 0.10400, 0.10300, 0.10600, 0.11800,
+ 0.14000, 0.17000, 0.21200, 0.25700, 0.31300,
+ 0.35400, 0.40300, 0.45700, 0.50100, 0.54600,
+ 0.58700, 0.61200, 0.63700, 0.65500, 0.67700,
+ 0.68400, 0.69300, 0.69500, 0.71400, 0.71000,
+ 0.72000, 0.71500, 0.71400, 0.73900, 0.71900,
+ 0.72600, 0.72800, 0.73300, 0.73700, 0.73200,
+ 0.74300, 0.74200, 0.74800, 0.74100, 0.75300,
+ 0.75400, 0.76100
+ }
+ },
+ /* 18 Cyan */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.08500, 0.10200, 0.13000, 0.16300, 0.20100,
+ 0.22800, 0.24700, 0.25400, 0.26200, 0.27800,
+ 0.28200, 0.30000, 0.31900, 0.33200, 0.34800,
+ 0.36300, 0.38200, 0.40100, 0.41900, 0.43100,
+ 0.43800, 0.44100, 0.43800, 0.42900, 0.41500,
+ 0.40400, 0.38100, 0.35800, 0.33900, 0.31600,
+ 0.28800, 0.26200, 0.23600, 0.21000, 0.18600,
+ 0.16200, 0.14200, 0.12900, 0.11600, 0.10500,
+ 0.09900, 0.09200, 0.08800, 0.08600, 0.08100,
+ 0.07700, 0.07800, 0.07600, 0.07600, 0.07600,
+ 0.07600, 0.07600, 0.07600, 0.07700, 0.07800,
+ 0.07700, 0.08100, 0.08000, 0.08100, 0.07900,
+ 0.07900, 0.07900, 0.07700, 0.07600, 0.07500,
+ 0.07400, 0.07400, 0.07600, 0.07700, 0.08100,
+ 0.08400, 0.09000, 0.09800, 0.11100, 0.13000,
+ 0.15100, 0.17900
+ }
+ },
+ /* 19 White */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.12600, 0.16900, 0.21200, 0.26400, 0.31800,
+ 0.49100, 0.66400, 0.75700, 0.85100, 0.86800,
+ 0.88700, 0.88800, 0.89000, 0.89300, 0.89500,
+ 0.89600, 0.89800, 0.90000, 0.90200, 0.90000,
+ 0.89700, 0.90400, 0.90100, 0.90000, 0.90000,
+ 0.89800, 0.89700, 0.90000, 0.90200, 0.90200,
+ 0.90100, 0.90000, 0.89900, 0.89600, 0.89300,
+ 0.89500, 0.89800, 0.90000, 0.90200, 0.90400,
+ 0.90500, 0.90600, 0.90700, 0.90500, 0.90300,
+ 0.90400, 0.90500, 0.90700, 0.89800, 0.89700,
+ 0.89600, 0.89800, 0.90000, 0.90000, 0.89900,
+ 0.90100, 0.90400, 0.90400, 0.90500, 0.90200,
+ 0.89900, 0.89900, 0.90000, 0.89900, 0.89800,
+ 0.89800, 0.89900, 0.89800, 0.89800, 0.89900,
+ 0.90100, 0.89800, 0.89600, 0.89500, 0.89800,
+ 0.89900, 0.89800
+ }
+ },
+ /* 20 Neutral 8 */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.08400, 0.11300, 0.14100, 0.17600, 0.21100,
+ 0.32700, 0.44200, 0.50400, 0.56700, 0.57800,
+ 0.59000, 0.59100, 0.59200, 0.59400, 0.59500,
+ 0.59600, 0.59700, 0.59900, 0.60000, 0.59900,
+ 0.59700, 0.60200, 0.59900, 0.59900, 0.59900,
+ 0.59700, 0.59700, 0.59900, 0.60000, 0.60000,
+ 0.59900, 0.59900, 0.59800, 0.59600, 0.59400,
+ 0.59500, 0.59700, 0.59900, 0.60000, 0.60200,
+ 0.60200, 0.60300, 0.60400, 0.60200, 0.60100,
+ 0.60200, 0.60200, 0.60400, 0.59700, 0.59700,
+ 0.59600, 0.59700, 0.59900, 0.59900, 0.59800,
+ 0.59900, 0.60200, 0.60200, 0.60200, 0.60000,
+ 0.59800, 0.59800, 0.59900, 0.59800, 0.59700,
+ 0.59700, 0.59800, 0.59700, 0.59700, 0.59800,
+ 0.59900, 0.59700, 0.59600, 0.59500, 0.59700,
+ 0.59800, 0.59700
+ }
+ },
+ /* 21 Neutral 6.5 */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.05100, 0.06800, 0.08500, 0.10600, 0.12800,
+ 0.19800, 0.26700, 0.30500, 0.34200, 0.34900,
+ 0.35700, 0.35700, 0.35800, 0.35900, 0.36000,
+ 0.36000, 0.36100, 0.36200, 0.36300, 0.36200,
+ 0.36100, 0.36400, 0.36200, 0.36200, 0.36200,
+ 0.36100, 0.36100, 0.36200, 0.36300, 0.36300,
+ 0.36200, 0.36200, 0.36100, 0.36000, 0.35900,
+ 0.36000, 0.36100, 0.36200, 0.36300, 0.36400,
+ 0.36400, 0.36400, 0.36500, 0.36400, 0.36300,
+ 0.36400, 0.36400, 0.36500, 0.36100, 0.36100,
+ 0.36000, 0.36100, 0.36200, 0.36200, 0.36100,
+ 0.36200, 0.36400, 0.36400, 0.36400, 0.36300,
+ 0.36100, 0.36100, 0.36200, 0.36100, 0.36100,
+ 0.36100, 0.36100, 0.36100, 0.36100, 0.36100,
+ 0.36200, 0.36100, 0.36000, 0.36000, 0.36100,
+ 0.36100, 0.36100
+ }
+ },
+ /* 22 Neutral 5 */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.02770, 0.03720, 0.04650, 0.05800, 0.06980,
+ 0.10790, 0.14570, 0.16630, 0.18690, 0.19070,
+ 0.19470, 0.19490, 0.19540, 0.19600, 0.19650,
+ 0.19670, 0.19710, 0.19760, 0.19800, 0.19760,
+ 0.19690, 0.19850, 0.19780, 0.19760, 0.19760,
+ 0.19710, 0.19690, 0.19760, 0.19800, 0.19800,
+ 0.19780, 0.19760, 0.19740, 0.19670, 0.19600,
+ 0.19650, 0.19710, 0.19760, 0.19800, 0.19850,
+ 0.19870, 0.19890, 0.19910, 0.19870, 0.19820,
+ 0.19850, 0.19870, 0.19910, 0.19710, 0.19690,
+ 0.19670, 0.19710, 0.19760, 0.19760, 0.19740,
+ 0.19780, 0.19850, 0.19850, 0.19870, 0.19800,
+ 0.19740, 0.19740, 0.19760, 0.19740, 0.19710,
+ 0.19710, 0.19740, 0.19710, 0.19710, 0.19740,
+ 0.19780, 0.19710, 0.19670, 0.19650, 0.19710,
+ 0.19740, 0.19710
+ }
+ },
+ /* 23 Neutral 3.5 */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.01260, 0.01690, 0.02120, 0.02640, 0.03180,
+ 0.04910, 0.06640, 0.07570, 0.08510, 0.08680,
+ 0.08860, 0.08870, 0.08890, 0.08930, 0.08950,
+ 0.08960, 0.08980, 0.09000, 0.09020, 0.09000,
+ 0.08970, 0.09040, 0.09010, 0.09000, 0.09000,
+ 0.08980, 0.08970, 0.09000, 0.09020, 0.09020,
+ 0.09010, 0.09000, 0.08990, 0.08960, 0.08930,
+ 0.08950, 0.08980, 0.09000, 0.09020, 0.09040,
+ 0.09050, 0.09060, 0.09070, 0.09050, 0.09030,
+ 0.09040, 0.09050, 0.09070, 0.08980, 0.08970,
+ 0.08960, 0.08980, 0.09000, 0.09000, 0.08990,
+ 0.09010, 0.09040, 0.09040, 0.09050, 0.09020,
+ 0.08990, 0.08990, 0.09000, 0.08990, 0.08980,
+ 0.08980, 0.08990, 0.08980, 0.08980, 0.08990,
+ 0.09010, 0.08980, 0.08960, 0.08950, 0.08980,
+ 0.08990, 0.08980
+ }
+ },
+ /* 24 Black */
+ {
+ 77, 380.0, 760.0, /* 77 bands from 380 to 760 nm in 5nm steps */
+ 1.0, /* Scale factor */
+ {
+ 0.00439, 0.00589, 0.00737, 0.00919, 0.01105,
+ 0.01708, 0.02308, 0.02635, 0.02961, 0.03020,
+ 0.03084, 0.03087, 0.03094, 0.03105, 0.03112,
+ 0.03115, 0.03122, 0.03129, 0.03136, 0.03129,
+ 0.03119, 0.03143, 0.03133, 0.03129, 0.03129,
+ 0.03122, 0.03119, 0.03129, 0.03136, 0.03136,
+ 0.03133, 0.03129, 0.03126, 0.03115, 0.03105,
+ 0.03112, 0.03122, 0.03129, 0.03136, 0.03143,
+ 0.03147, 0.03150, 0.03154, 0.03147, 0.03140,
+ 0.03143, 0.03147, 0.03154, 0.03122, 0.03119,
+ 0.03115, 0.03122, 0.03129, 0.03129, 0.03126,
+ 0.03133, 0.03143, 0.03143, 0.03147, 0.03136,
+ 0.03126, 0.03126, 0.03129, 0.03126, 0.03122,
+ 0.03122, 0.03126, 0.03122, 0.03122, 0.03126,
+ 0.03133, 0.03122, 0.03115, 0.03112, 0.03122,
+ 0.03126, 0.03122
+ }
+ }
+};
/* -------------------------------- */
/* Fluorescent Whitening Agent Data */
@@ -3076,7 +3888,7 @@ int write_nxspect(char *fname, xspect *sp, int nspec, int type) {
return 0;
}
-/* restore a set of spectrum from a CGATS file. */
+/* Restore a set of spectrum from a CGATS file. */
/* Up to nspec will be restored starting at offset off.. */
/* The number restored from the file will be written to *nret */
/* type: 0 = any, mask: 1 = SPECT, 2 = CMF, 4 = ccss */
@@ -3221,8 +4033,10 @@ int write_cmf(char *fname, xspect sp[3]) {
int read_cmf(xspect sp[3], char *fname) {
int rv, nret;
- if ((rv = read_nxspect(sp, fname, &nret, 0, 3, 2)) != 0)
+ if ((rv = read_nxspect(sp, fname, &nret, 0, 3, 2)) != 0) {
+ DBG("read_nxspect failed\n");
return rv;
+ }
if (nret != 3) {
DBG("Didn't read three spectra\n");
return 1;
@@ -3578,6 +4392,49 @@ void xspect_plot(xspect *sp1, xspect *sp2, xspect *sp3) {
do_plot(xx, y1, sp2 != NULL ? y2 : NULL, sp3 != NULL ? y3 : NULL, j);
}
+
+/* Plot up to 10 spectra */
+void xspect_plot10(xspect *sp, int n) {
+ double xx[XSPECT_MAX_BANDS];
+ double *yp[10];
+ double yy[10][XSPECT_MAX_BANDS];
+ double wl, wlshort, wllong;
+ int i, j;
+
+ for (i = 0; i < 10; i++)
+ yp[i] = NULL;
+
+ if (sp == NULL)
+ return;
+
+ wlshort = sp->spec_wl_short;
+ wllong = sp->spec_wl_long;
+
+ for (i = 0; i < n; i++) {
+ if (sp[i].spec_wl_short < wlshort)
+ wlshort = sp[i].spec_wl_short;
+ if (sp[i].spec_wl_long > wllong)
+ wllong = sp[i].spec_wl_long;
+ }
+
+ wlshort = floor(wlshort + 0.5);
+ wllong = floor(wllong + 0.5);
+
+ /* Compute at 1nm intervals over the whole range covered */
+ for (j = 0, wl = wlshort; j < XSPECT_MAX_BANDS && wl < wllong; j++, wl += 1.0) {
+#if defined(__APPLE__) && defined(__POWERPC__)
+ gcc_bug_fix(j);
+#endif
+ xx[j] = wl;
+ for (i = 0; i < n; i++) {
+ yp[i] = yy[i];
+ yy[i][j] = value_xspect(&sp[i], wl);
+ }
+ }
+ do_plot10(xx, yp[0], yp[1], yp[2], yp[3], yp[4],
+ yp[5], yp[6], yp[7], yp[8], yp[9], j, 0);
+}
+
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Given an emission spectrum, set the UV output to the given level. */
@@ -3787,7 +4644,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
DBG("set_fwa started\n");
- p->bw = 1.0; /* Intergrate over 1nm bands */
+ p->fwa_bw = 1.0; /* Intergrate over 1nm bands */
p->oillum = p->illuminant; /* Take copy of observer illuminant */
xspect_denorm(&p->oillum);
if (p->tillum.spec_n == 0) { /* If not set by set_fwa(), copy observer illuminant */
@@ -3801,7 +4658,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
double Iim; /* illuminant multiplier */
Iim = 0.0;
- for (ww = p->observer[1].spec_wl_short; ww <= p->observer[1].spec_wl_long; ww += p->bw) {
+ for (ww = p->spec_wl_short; ww <= p->spec_wl_long; ww += p->spec_bw) {
double O, I;
getval_lxspec(&p->iillum, &I, ww);
getval_lxspec(&p->observer[1], &O, ww);
@@ -3824,7 +4681,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
scale = 0.0;
Itm = 0.0;
- for (ww = p->observer[1].spec_wl_short; ww <= p->observer[1].spec_wl_long; ww += p->bw) {
+ for (ww = p->spec_wl_short; ww <= p->spec_wl_long; ww += p->spec_bw) {
double O, I;
getval_lxspec(&p->tillum, &I, ww);
getval_lxspec(&p->observer[1], &O, ww);
@@ -3865,7 +4722,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
scale = 0.0;
Itm = 0.0;
- for (ww = p->observer[1].spec_wl_short; ww <= p->observer[1].spec_wl_long; ww += p->bw) {
+ for (ww = p->spec_wl_short; ww <= p->spec_wl_long; ww += p->spec_bw) {
double O, I;
getval_lxspec(&p->oillum, &I, ww);
getval_lxspec(&p->observer[1], &O, ww);
@@ -3890,7 +4747,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
/* Find darkest point between 450 and 510nm */
ar = 1e6;
- for (ww = 450.0; ww <= 510.0; ww += p->bw) {
+ for (ww = 450.0; ww <= 510.0; ww += p->fwa_bw) {
double rr;
getval_lxspec(&p->imedia, &rr, ww);
DBGF((DBGA,"media %f = %f\n",ww,rr));
@@ -3903,7 +4760,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
/* Find lightest point between A point+70 and 650 */
br = -1.0;
- for (ww = aw+70.0; ww <= 630.0; ww += p->bw) {
+ for (ww = aw+70.0; ww <= 630.0; ww += p->fwa_bw) {
double rr;
getval_lxspec(&p->imedia, &rr, ww);
DBGF((DBGA,"media %f = %f\n",ww,rr));
@@ -3921,7 +4778,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
/* Compute an Em that explains the bump over the flat line */
Em = 0.0;
- for (ww = FWA1_emit.spec_wl_short; ww <= (FWA1_emit.spec_wl_long - 100.0); ww += p->bw) {
+ for (ww = FWA1_emit.spec_wl_short; ww <= (FWA1_emit.spec_wl_long - 100.0); ww += p->fwa_bw) {
double Rl, rr;
/* Compute value of line at this wavelength */
@@ -4085,7 +4942,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
/* Compute level of UV stimulating FWA */
p->Sm = 0.0;
- for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->bw) {
+ for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->fwa_bw) {
double Ii;
double Su;
@@ -4099,7 +4956,7 @@ static int xsp2cie_set_fwa_imp(xsp2cie *p) {
/* Compute FWA content of this media, for information purposes */
p->FWAc = 0.0;
- for (ww = p->emits.spec_wl_short; ww <= p->emits.spec_wl_long; ww += p->bw) {
+ for (ww = p->emits.spec_wl_short; ww <= p->emits.spec_wl_long; ww += p->fwa_bw) {
double Eu;
getval_lxspec(&p->emits, &Eu, ww); /* FWA emission at this wavelength */
@@ -4250,7 +5107,7 @@ xspect *in /* Spectrum to be converted */
Emc = Emct = 0.0;
for (k = 0; k < 4; k++) {
Smct = Smc = 0.0;
- for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->bw) {
+ for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->fwa_bw) {
double Kc; /* FWA contribution for instrument illum */
double Kct; /* FWA contribution for target illum */
double Ii; /* Instrument illuminant level */
@@ -4312,9 +5169,9 @@ xspect *in /* Spectrum to be converted */
#endif /* DEBUG */
}
- /* Compute CIE output over observer range in 1nm increments */
+ /* Compute CIE output over observer range in bw increments */
scale = 0.0;
- for (ww = p->observer[1].spec_wl_short; ww <= p->observer[1].spec_wl_long; ww += p->bw) {
+ for (ww = p->spec_wl_short; ww <= p->spec_wl_long; ww += p->spec_bw) {
double Kc; /* FWA contribution for instrument illum */
double Kct; /* FWA contribution for target illum */
double Ii; /* Instrument illuminant level */
@@ -4421,10 +5278,10 @@ xspect *in /* Spectrum to be converted */
/* Do it again for output over optional returned spectrum range */
if (sout != NULL) {
- tsout.spec_n = in->spec_n;
+ tsout.spec_n = in->spec_n;
tsout.spec_wl_short = in->spec_wl_short;
- tsout.spec_wl_long = in->spec_wl_long;
- tsout.norm = in->norm;
+ tsout.spec_wl_long = in->spec_wl_long;
+ tsout.norm = in->norm;
for (i = 0; i < in->spec_n; i++) {
double Kc; /* FWA contribution for instrument illum */
@@ -4527,7 +5384,7 @@ xspect *in /* Spectrum to be converted, normalised by norm */
Emc = 0.0;
for (k = 0; k < 4; k++) {
Smc = 0.0;
- for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->bw) {
+ for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->fwa_bw) {
double Kc; /* FWA contribution for instrument illum */
double Ii; /* Instrument illuminant level */
double Su; /* FWA sensitivity */
@@ -4639,7 +5496,7 @@ xspect *in /* Colorant reflectance to be applied */
Emc = 0.0;
for (k = 0; k < 4; k++) {
Smc = 0.0;
- for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->bw) {
+ for (ww = FWA1_stim.spec_wl_short; ww <= FWA1_stim.spec_wl_long; ww += p->fwa_bw) {
double Kc; /* FWA contribution for instrument illum */
double Ii; /* Instrument illuminant level */
double Eu; /* FWA emmission profile */
@@ -4722,6 +5579,18 @@ xspect *in /* Colorant reflectance to be applied */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#endif /* !SALONEINSTLIB */
+/* Override the integration wavelength range and step size */
+static void xsp2cie_set_int_steps(
+xsp2cie *p, /* this */
+double bw, /* Integration step size (nm) */
+double wl_short, /* Starting nm */
+double wl_long /* Ending nm */
+) {
+ p->spec_bw = bw;
+ p->spec_wl_short = wl_short;
+ p->spec_wl_long = wl_long;
+}
+
/* Do the normal spectral to CIE conversion. */
/* Note that the input spectrum normalisation value is used. */
/* Emissive spectral values are assumed to be in mW/nm, and sampled */
@@ -4748,18 +5617,20 @@ xspect *in /* Spectrum to be converted */
/* values are truncated at the extremes, then the last valid values */
/* are used, also consistent with CIE and ANSI CGATS recommendations. */
out[j] = 0.0;
- for (ww = p->observer[j].spec_wl_short; ww <= p->observer[j].spec_wl_long; ww += 1.0) {
+ for (ww = p->spec_wl_short; ww <= p->spec_wl_long; ww += p->spec_bw) {
double I = 1.0, O, S;
if (!p->isemis)
getval_xspec(&p->illuminant, &I, ww);
getval_xspec(&p->observer[j], &O, ww);
getval_xspec(in, &S, ww);
if (j == 1)
- scale += I * O; /* Integrate Y illuminant/observer values */
+ scale += I * O; /* Integrate Y illuminant * observer values */
out[j] += I * O * S;
}
}
if (p->isemis) {
+ // Hmm. Should we really make scale += O for this case and then
+ // scale = 0.683002/scale ??
scale = 0.683002; /* Convert from mW/m^2 to Lumens/m^2 */
/* (== 683 Luments/Watt/m^2) */
} else {
@@ -4917,6 +5788,11 @@ icxClamping clamp /* NZ to clamp XYZ/Lab to be +ve */
p->observer[1] = ob_Shaw_Fairchild_2[1];
p->observer[2] = ob_Shaw_Fairchild_2[2];
break;
+ case icxOT_EBU_2012:
+ p->observer[0] = ob_EBU_2012[0];
+ p->observer[1] = ob_EBU_2012[1];
+ p->observer[2] = ob_EBU_2012[2];
+ break;
#endif /* !SALONEINSTLIB */
default:
DBGF((DBGA,"new_xsp2cie() unrecognised observer type 0x%x\n",obType));
@@ -4938,18 +5814,23 @@ icxClamping clamp /* NZ to clamp XYZ/Lab to be +ve */
p->clamp = clamp;
- p->convert = xsp2cie_convert;
- p->sconvert = xsp2cie_sconvert;
- p->get_cie_il = xsp2cie_get_cie_il;
+ p->spec_bw = 1.0; /* 1nm integration */
+ p->spec_wl_short = p->observer[1].spec_wl_short;
+ p->spec_wl_long = p->observer[1].spec_wl_long;
+
+ p->set_int_steps = xsp2cie_set_int_steps;
+ p->convert = xsp2cie_convert;
+ p->sconvert = xsp2cie_sconvert;
+ p->get_cie_il = xsp2cie_get_cie_il;
#ifndef SALONEINSTLIB
- p->set_mw = xsp2cie_set_mw; /* Default no media white */
- p->set_fwa = xsp2cie_set_fwa; /* Default no FWA compensation */
+ p->set_mw = xsp2cie_set_mw; /* Default no media white */
+ p->set_fwa = xsp2cie_set_fwa; /* Default no FWA compensation */
p->update_fwa_custillum = xsp2cie_update_fwa_custillum;
- p->get_fwa_info = xsp2cie_get_fwa_info;
- p->extract = xsp2cie_extract;
- p->apply = xsp2cie_apply;
+ p->get_fwa_info = xsp2cie_get_fwa_info;
+ p->extract = xsp2cie_extract;
+ p->apply = xsp2cie_apply;
#endif /* !SALONEINSTLIB */
- p->del = xsp2cie_del;
+ p->del = xsp2cie_del;
return p;
}
@@ -5001,33 +5882,370 @@ int icx_spectrum_locus(double xyz[3], double wl, icxObserverType obType) {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Pre-calculated spectral locuses of Daylight and Plankian at 5 Mired intervals, */
-/* created using illlocus.c */
+/* used by the fast but slightly less accurate CCT support icx_XYZ2ill_ct2() */
+/* Created using illlocus.c */
+
/* These aren't actually spectrum, they are XYZ values */
/* indexed by temperature in Mired */
+static xspect illoc_Plankian_CIE_1931_2[3] = {
+ {
+ 481, 40.000000, 1000.000000,
+ 1.0,
+ {
+ 1.001190, 1.000021, 0.998861, 0.997711, 0.996571,
+ 0.995444, 0.994330, 0.993229, 0.992143, 0.991072,
+ 0.990017, 0.988980, 0.987961, 0.986960, 0.985979,
+ 0.985018, 0.984078, 0.983159, 0.982263, 0.981390,
+ 0.980540, 0.979714, 0.978913, 0.978137, 0.977387,
+ 0.976663, 0.975965, 0.975295, 0.974652, 0.974036,
+ 0.973449, 0.972890, 0.972359, 0.971858, 0.971385,
+ 0.970942, 0.970529, 0.970145, 0.969791, 0.969468,
+ 0.969174, 0.968910, 0.968677, 0.968474, 0.968301,
+ 0.968159, 0.968047, 0.967965, 0.967914, 0.967893,
+ 0.967902, 0.967941, 0.968010, 0.968109, 0.968238,
+ 0.968396, 0.968584, 0.968802, 0.969049, 0.969325,
+ 0.969629, 0.969963, 0.970325, 0.970715, 0.971134,
+ 0.971581, 0.972055, 0.972558, 0.973087, 0.973644,
+ 0.974227, 0.974838, 0.975475, 0.976138, 0.976827,
+ 0.977542, 0.978282, 0.979048, 0.979839, 0.980655,
+ 0.981495, 0.982360, 0.983249, 0.984162, 0.985098,
+ 0.986058, 0.987041, 0.988047, 0.989076, 0.990127,
+ 0.991200, 0.992295, 0.993412, 0.994551, 0.995711,
+ 0.996891, 0.998093, 0.999315, 1.000557, 1.001820,
+ 1.003102, 1.004404, 1.005726, 1.007066, 1.008426,
+ 1.009804, 1.011201, 1.012616, 1.014050, 1.015501,
+ 1.016970, 1.018456, 1.019960, 1.021480, 1.023018,
+ 1.024572, 1.026143, 1.027729, 1.029332, 1.030951,
+ 1.032586, 1.034236, 1.035901, 1.037581, 1.039276,
+ 1.040986, 1.042711, 1.044450, 1.046203, 1.047970,
+ 1.049751, 1.051546, 1.053354, 1.055175, 1.057010,
+ 1.058857, 1.060718, 1.062591, 1.064477, 1.066375,
+ 1.068285, 1.070207, 1.072141, 1.074087, 1.076045,
+ 1.078013, 1.079994, 1.081985, 1.083987, 1.086000,
+ 1.088024, 1.090059, 1.092103, 1.094159, 1.096224,
+ 1.098299, 1.100384, 1.102479, 1.104584, 1.106698,
+ 1.108822, 1.110954, 1.113096, 1.115247, 1.117407,
+ 1.119575, 1.121752, 1.123938, 1.126132, 1.128334,
+ 1.130544, 1.132763, 1.134989, 1.137223, 1.139465,
+ 1.141715, 1.143972, 1.146236, 1.148508, 1.150786,
+ 1.153072, 1.155365, 1.157665, 1.159971, 1.162284,
+ 1.164604, 1.166930, 1.169263, 1.171601, 1.173946,
+ 1.176297, 1.178654, 1.181017, 1.183386, 1.185760,
+ 1.188140, 1.190526, 1.192917, 1.195313, 1.197715,
+ 1.200122, 1.202534, 1.204951, 1.207372, 1.209799,
+ 1.212231, 1.214667, 1.217107, 1.219553, 1.222002,
+ 1.224456, 1.226915, 1.229377, 1.231844, 1.234315,
+ 1.236790, 1.239268, 1.241751, 1.244237, 1.246727,
+ 1.249221, 1.251718, 1.254219, 1.256723, 1.259230,
+ 1.261741, 1.264255, 1.266772, 1.269292, 1.271816,
+ 1.274342, 1.276871, 1.279403, 1.281938, 1.284475,
+ 1.287015, 1.289558, 1.292103, 1.294651, 1.297201,
+ 1.299753, 1.302308, 1.304865, 1.307424, 1.309985,
+ 1.312548, 1.315113, 1.317681, 1.320250, 1.322821,
+ 1.325393, 1.327968, 1.330544, 1.333122, 1.335701,
+ 1.338282, 1.340865, 1.343448, 1.346034, 1.348620,
+ 1.351208, 1.353797, 1.356387, 1.358979, 1.361571,
+ 1.364165, 1.366759, 1.369355, 1.371951, 1.374548,
+ 1.377146, 1.379745, 1.382345, 1.384945, 1.387546,
+ 1.390147, 1.392749, 1.395352, 1.397955, 1.400559,
+ 1.403162, 1.405767, 1.408371, 1.410976, 1.413581,
+ 1.416186, 1.418792, 1.421397, 1.424003, 1.426609,
+ 1.429214, 1.431820, 1.434425, 1.437031, 1.439636,
+ 1.442241, 1.444846, 1.447451, 1.450055, 1.452659,
+ 1.455263, 1.457866, 1.460469, 1.463072, 1.465674,
+ 1.468275, 1.470876, 1.473477, 1.476077, 1.478676,
+ 1.481274, 1.483872, 1.486469, 1.489065, 1.491661,
+ 1.494255, 1.496849, 1.499442, 1.502034, 1.504625,
+ 1.507215, 1.509804, 1.512392, 1.514979, 1.517565,
+ 1.520150, 1.522734, 1.525316, 1.527898, 1.530478,
+ 1.533057, 1.535634, 1.538211, 1.540786, 1.543359,
+ 1.545932, 1.548503, 1.551072, 1.553640, 1.556207,
+ 1.558772, 1.561335, 1.563897, 1.566458, 1.569017,
+ 1.571574, 1.574130, 1.576684, 1.579236, 1.581787,
+ 1.584336, 1.586883, 1.589429, 1.591972, 1.594514,
+ 1.597054, 1.599593, 1.602129, 1.604664, 1.607196,
+ 1.609727, 1.612256, 1.614782, 1.617307, 1.619830,
+ 1.622351, 1.624869, 1.627386, 1.629901, 1.632413,
+ 1.634924, 1.637432, 1.639938, 1.642442, 1.644944,
+ 1.647444, 1.649941, 1.652436, 1.654929, 1.657420,
+ 1.659908, 1.662394, 1.664878, 1.667359, 1.669838,
+ 1.672315, 1.674790, 1.677261, 1.679731, 1.682198,
+ 1.684663, 1.687125, 1.689585, 1.692042, 1.694497,
+ 1.696949, 1.699399, 1.701846, 1.704291, 1.706733,
+ 1.709173, 1.711610, 1.714044, 1.716476, 1.718905,
+ 1.721331, 1.723755, 1.726176, 1.728594, 1.731010,
+ 1.733423, 1.735833, 1.738241, 1.740646, 1.743048,
+ 1.745447, 1.747844, 1.750238, 1.752629, 1.755017,
+ 1.757402, 1.759785, 1.762164, 1.764541, 1.766915,
+ 1.769286, 1.771654, 1.774019, 1.776382, 1.778741,
+ 1.781098, 1.783451, 1.785802, 1.788150, 1.790494,
+ 1.792836, 1.795175, 1.797511, 1.799843, 1.802173,
+ 1.804500, 1.806824, 1.809144, 1.811462, 1.813777,
+ 1.816088, 1.818397, 1.820702, 1.823004, 1.825303,
+ 1.827600, 1.829893, 1.832182, 1.834469, 1.836753,
+ 1.839033, 1.841311, 1.843585, 1.845856, 1.848124,
+ 1.850388, 1.852650, 1.854908, 1.857163, 1.859415,
+ 1.861664, 1.863909, 1.866152, 1.868391, 1.870627,
+ 1.872859, 1.875088, 1.877315, 1.879537, 1.881757,
+ 1.883973, 1.886186, 1.888396, 1.890603, 1.892806,
+ 1.895006
+ }
+ },
+ {
+ 481, 40.000000, 1000.000000,
+ 1.0,
+ {
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
+ }
+ },
+ {
+ 481, 40.000000, 1000.000000,
+ 1.0,
+ {
+ 1.963589, 1.948210, 1.932763, 1.917253, 1.901688,
+ 1.886072, 1.870411, 1.854712, 1.838981, 1.823223,
+ 1.807443, 1.791649, 1.775844, 1.760035, 1.744226,
+ 1.728424, 1.712632, 1.696857, 1.681103, 1.665375,
+ 1.649677, 1.634014, 1.618391, 1.602811, 1.587278,
+ 1.571797, 1.556372, 1.541005, 1.525701, 1.510463,
+ 1.495294, 1.480197, 1.465176, 1.450233, 1.435370,
+ 1.420591, 1.405897, 1.391292, 1.376777, 1.362354,
+ 1.348026, 1.333793, 1.319659, 1.305623, 1.291689,
+ 1.277856, 1.264128, 1.250503, 1.236985, 1.223573,
+ 1.210269, 1.197073, 1.183986, 1.171008, 1.158141,
+ 1.145385, 1.132739, 1.120205, 1.107783, 1.095472,
+ 1.083273, 1.071187, 1.059212, 1.047349, 1.035599,
+ 1.023960, 1.012432, 1.001016, 0.989711, 0.978517,
+ 0.967433, 0.956459, 0.945595, 0.934840, 0.924194,
+ 0.913655, 0.903225, 0.892901, 0.882684, 0.872572,
+ 0.862566, 0.852664, 0.842867, 0.833172, 0.823580,
+ 0.814090, 0.804701, 0.795412, 0.786223, 0.777133,
+ 0.768140, 0.759245, 0.750447, 0.741744, 0.733136,
+ 0.724623, 0.716202, 0.707875, 0.699638, 0.691493,
+ 0.683438, 0.675472, 0.667595, 0.659805, 0.652102,
+ 0.644486, 0.636954, 0.629507, 0.622143, 0.614862,
+ 0.607663, 0.600545, 0.593508, 0.586550, 0.579671,
+ 0.572870, 0.566146, 0.559498, 0.552926, 0.546429,
+ 0.540006, 0.533656, 0.527379, 0.521173, 0.515039,
+ 0.508975, 0.502980, 0.497055, 0.491197, 0.485407,
+ 0.479683, 0.474025, 0.468433, 0.462905, 0.457441,
+ 0.452040, 0.446701, 0.441424, 0.436208, 0.431053,
+ 0.425958, 0.420921, 0.415943, 0.411023, 0.406160,
+ 0.401354, 0.396604, 0.391908, 0.387268, 0.382682,
+ 0.378149, 0.373669, 0.369241, 0.364865, 0.360540,
+ 0.356266, 0.352042, 0.347867, 0.343741, 0.339663,
+ 0.335634, 0.331651, 0.327715, 0.323825, 0.319981,
+ 0.316182, 0.312428, 0.308718, 0.305051, 0.301428,
+ 0.297847, 0.294308, 0.290811, 0.287356, 0.283941,
+ 0.280566, 0.277231, 0.273935, 0.270678, 0.267460,
+ 0.264279, 0.261137, 0.258031, 0.254962, 0.251929,
+ 0.248932, 0.245971, 0.243045, 0.240153, 0.237295,
+ 0.234472, 0.231682, 0.228924, 0.226200, 0.223508,
+ 0.220848, 0.218219, 0.215621, 0.213055, 0.210519,
+ 0.208013, 0.205536, 0.203089, 0.200672, 0.198282,
+ 0.195922, 0.193589, 0.191284, 0.189007, 0.186756,
+ 0.184533, 0.182336, 0.180165, 0.178020, 0.175900,
+ 0.173806, 0.171737, 0.169692, 0.167672, 0.165676,
+ 0.163703, 0.161754, 0.159829, 0.157926, 0.156046,
+ 0.154189, 0.152353, 0.150540, 0.148748, 0.146978,
+ 0.145229, 0.143501, 0.141793, 0.140106, 0.138439,
+ 0.136792, 0.135164, 0.133556, 0.131968, 0.130398,
+ 0.128847, 0.127315, 0.125801, 0.124305, 0.122827,
+ 0.121366, 0.119924, 0.118498, 0.117090, 0.115698,
+ 0.114323, 0.112965, 0.111623, 0.110297, 0.108987,
+ 0.107692, 0.106413, 0.105150, 0.103901, 0.102668,
+ 0.101449, 0.100245, 0.099055, 0.097880, 0.096719,
+ 0.095571, 0.094438, 0.093318, 0.092212, 0.091118,
+ 0.090038, 0.088971, 0.087917, 0.086875, 0.085846,
+ 0.084829, 0.083825, 0.082832, 0.081852, 0.080883,
+ 0.079926, 0.078980, 0.078046, 0.077123, 0.076211,
+ 0.075310, 0.074419, 0.073540, 0.072671, 0.071812,
+ 0.070964, 0.070126, 0.069298, 0.068480, 0.067672,
+ 0.066874, 0.066085, 0.065306, 0.064536, 0.063775,
+ 0.063023, 0.062281, 0.061547, 0.060822, 0.060106,
+ 0.059399, 0.058700, 0.058009, 0.057327, 0.056653,
+ 0.055987, 0.055329, 0.054679, 0.054036, 0.053402,
+ 0.052775, 0.052156, 0.051544, 0.050939, 0.050342,
+ 0.049752, 0.049169, 0.048593, 0.048023, 0.047461,
+ 0.046906, 0.046357, 0.045814, 0.045279, 0.044749,
+ 0.044226, 0.043710, 0.043199, 0.042695, 0.042197,
+ 0.041704, 0.041218, 0.040737, 0.040262, 0.039793,
+ 0.039330, 0.038872, 0.038420, 0.037973, 0.037531,
+ 0.037095, 0.036664, 0.036238, 0.035817, 0.035401,
+ 0.034990, 0.034584, 0.034183, 0.033787, 0.033396,
+ 0.033009, 0.032627, 0.032249, 0.031876, 0.031508,
+ 0.031144, 0.030784, 0.030428, 0.030077, 0.029730,
+ 0.029387, 0.029049, 0.028714, 0.028383, 0.028056,
+ 0.027734, 0.027415, 0.027100, 0.026788, 0.026480,
+ 0.026177, 0.025876, 0.025579, 0.025286, 0.024996,
+ 0.024710, 0.024427, 0.024148, 0.023872, 0.023599,
+ 0.023329, 0.023063, 0.022800, 0.022540, 0.022283,
+ 0.022029, 0.021778, 0.021530, 0.021285, 0.021043,
+ 0.020804, 0.020568, 0.020334, 0.020104, 0.019876,
+ 0.019651, 0.019428, 0.019208, 0.018991, 0.018776,
+ 0.018564, 0.018354, 0.018147, 0.017942, 0.017740,
+ 0.017540, 0.017343, 0.017148, 0.016955, 0.016764,
+ 0.016576, 0.016390, 0.016206, 0.016024, 0.015845,
+ 0.015668, 0.015492, 0.015319, 0.015148, 0.014979,
+ 0.014811, 0.014646, 0.014483, 0.014322, 0.014162,
+ 0.014005, 0.013849, 0.013695, 0.013543, 0.013393,
+ 0.013245, 0.013098, 0.012953, 0.012810, 0.012668,
+ 0.012528, 0.012390, 0.012253, 0.012118, 0.011985,
+ 0.011853, 0.011723, 0.011594, 0.011467, 0.011341,
+ 0.011217, 0.011094, 0.010972, 0.010852, 0.010734,
+ 0.010617, 0.010501, 0.010386, 0.010273, 0.010161,
+ 0.010051, 0.009942, 0.009834, 0.009727, 0.009621,
+ 0.009517, 0.009414, 0.009312, 0.009212, 0.009112,
+ 0.009014, 0.008917, 0.008821, 0.008726, 0.008632,
+ 0.008540, 0.008448, 0.008357, 0.008268, 0.008180,
+ 0.008092
+ }
+ }
+};
+
static xspect illoc_Daylight_CIE_1931_2[3] = {
{
- 69, 60.000000, 400.000000,
+ 181, 40.000000, 400.000000,
1.0,
{
- 0.970635, 0.968292, 0.966045, 0.963906, 0.961884,
- 0.959990, 0.958232, 0.956618, 0.955155, 0.953850,
- 0.952710, 0.951740, 0.950945, 0.950330, 0.949899,
- 0.949656, 0.949604, 0.949747, 0.950085, 0.950619,
- 0.951352, 0.952283, 0.953413, 0.954741, 0.956265,
- 0.957984, 0.959896, 0.961999, 0.964289, 0.966764,
- 0.969419, 0.972251, 0.975254, 0.978425, 0.981759,
- 0.985248, 0.988889, 0.992674, 0.996597, 1.000651,
- 1.004828, 1.009121, 1.013522, 1.018021, 1.022611,
- 1.027281, 1.032021, 1.036822, 1.041673, 1.046562,
- 1.051478, 1.056409, 1.061342, 1.066265, 1.071163,
- 1.076024, 1.080834, 1.085577, 1.090239, 1.094805,
- 1.099259, 1.103586, 1.107771, 1.111796, 1.115647,
- 1.119306, 1.122759, 1.125989, 1.128981
+ 0.980513, 0.979463, 0.978420, 0.977383, 0.976353,
+ 0.975333, 0.974322, 0.973321, 0.972332, 0.971354,
+ 0.970390, 0.969439, 0.968503, 0.967582, 0.966676,
+ 0.965787, 0.964916, 0.964062, 0.963227, 0.962412,
+ 0.961616, 0.960840, 0.960086, 0.959353, 0.958642,
+ 0.957953, 0.957288, 0.956646, 0.956029, 0.955436,
+ 0.954867, 0.954325, 0.953808, 0.953317, 0.952852,
+ 0.952415, 0.952005, 0.951622, 0.951268, 0.950941,
+ 0.950643, 0.950374, 0.950135, 0.949924, 0.949743,
+ 0.949592, 0.949471, 0.949381, 0.949321, 0.949292,
+ 0.949293, 0.949326, 0.949391, 0.949486, 0.949613,
+ 0.949771, 0.949961, 0.950182, 0.950435, 0.950720,
+ 0.951037, 0.951386, 0.951766, 0.952178, 0.952622,
+ 0.953098, 0.953606, 0.954145, 0.954716, 0.955318,
+ 0.955951, 0.956616, 0.957312, 0.958039, 0.958797,
+ 0.959585, 0.960405, 0.961254, 0.962134, 0.963043,
+ 0.963982, 0.964951, 0.965949, 0.966977, 0.968033,
+ 0.969117, 0.970230, 0.971371, 0.972540, 0.973736,
+ 0.974959, 0.976209, 0.977486, 0.978788, 0.980117,
+ 0.981471, 0.982850, 0.984254, 0.985682, 0.987134,
+ 0.988610, 0.990109, 0.991631, 0.993175, 0.994740,
+ 0.996328, 0.997936, 0.999565, 1.001214, 1.002882,
+ 1.004570, 1.006276, 1.008000, 1.009741, 1.011500,
+ 1.013275, 1.015066, 1.016872, 1.018693, 1.020528,
+ 1.022376, 1.024238, 1.026112, 1.027997, 1.029894,
+ 1.031800, 1.033717, 1.035642, 1.037576, 1.039518,
+ 1.041466, 1.043421, 1.045381, 1.047345, 1.049314,
+ 1.051286, 1.053260, 1.055236, 1.057212, 1.059189,
+ 1.061165, 1.063139, 1.065110, 1.067079, 1.069042,
+ 1.071001, 1.072954, 1.074900, 1.076838, 1.078767,
+ 1.080687, 1.082596, 1.084493, 1.086378, 1.088250,
+ 1.090107, 1.091949, 1.093774, 1.095582, 1.097372,
+ 1.099142, 1.100892, 1.102620, 1.104327, 1.106009,
+ 1.107668, 1.109300, 1.110907, 1.112485, 1.114036,
+ 1.115556, 1.117047, 1.118505, 1.119931, 1.121323,
+ 1.122681, 1.124003, 1.125288, 1.126535, 1.127744,
+ 1.128913
}
},
{
- 69, 60.000000, 400.000000,
+ 181, 40.000000, 400.000000,
1.0,
{
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
@@ -5043,78 +6261,183 @@ static xspect illoc_Daylight_CIE_1931_2[3] = {
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
- 1.000000, 1.000000, 1.000000, 1.000000
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
}
},
{
- 69, 60.000000, 400.000000,
+ 181, 40.000000, 400.000000,
1.0,
{
- 1.787622, 1.747661, 1.707659, 1.667701, 1.627864,
- 1.588223, 1.548842, 1.509780, 1.471093, 1.432827,
- 1.395026, 1.357727, 1.320965, 1.284767, 1.249158,
- 1.214160, 1.179790, 1.146125, 1.113225, 1.081024,
- 1.049542, 1.018793, 0.988790, 0.959541, 0.931050,
- 0.903320, 0.876351, 0.850140, 0.824684, 0.799977,
- 0.776012, 0.752780, 0.730272, 0.708479, 0.687390,
- 0.666992, 0.647275, 0.628227, 0.609834, 0.592085,
- 0.574967, 0.558466, 0.542572, 0.527270, 0.512549,
- 0.498396, 0.484799, 0.471746, 0.459226, 0.447227,
- 0.435739, 0.424749, 0.414250, 0.404229, 0.394677,
- 0.385586, 0.376946, 0.368749, 0.360986, 0.353651,
- 0.346735, 0.340234, 0.334139, 0.328447, 0.323151,
- 0.318248, 0.313734, 0.309607, 0.305862
+ 1.943602, 1.928150, 1.912613, 1.897001, 1.881321,
+ 1.865580, 1.849784, 1.833942, 1.818059, 1.802142,
+ 1.786198, 1.770233, 1.754253, 1.738263, 1.722270,
+ 1.706279, 1.690295, 1.674323, 1.658369, 1.642436,
+ 1.626531, 1.610657, 1.594819, 1.579020, 1.563266,
+ 1.547559, 1.531903, 1.516302, 1.500760, 1.485279,
+ 1.469863, 1.454514, 1.439236, 1.424031, 1.408902,
+ 1.393851, 1.378881, 1.363993, 1.349191, 1.334475,
+ 1.319847, 1.305310, 1.290866, 1.276515, 1.262259,
+ 1.248099, 1.234037, 1.220075, 1.206212, 1.192450,
+ 1.178790, 1.165233, 1.151811, 1.138526, 1.125350,
+ 1.112284, 1.099330, 1.086490, 1.073764, 1.061153,
+ 1.048660, 1.036283, 1.024025, 1.011886, 0.999866,
+ 0.987966, 0.976187, 0.964529, 0.952992, 0.941577,
+ 0.930283, 0.919111, 0.908061, 0.897132, 0.886325,
+ 0.875640, 0.865075, 0.854632, 0.844310, 0.834108,
+ 0.824027, 0.814065, 0.804222, 0.794499, 0.784893,
+ 0.775406, 0.766036, 0.756782, 0.747645, 0.738623,
+ 0.729716, 0.720923, 0.712244, 0.703678, 0.695223,
+ 0.686881, 0.678648, 0.670526, 0.662513, 0.654608,
+ 0.646811, 0.639121, 0.631537, 0.624058, 0.616683,
+ 0.609412, 0.602244, 0.595178, 0.588213, 0.581349,
+ 0.574584, 0.567919, 0.561351, 0.554880, 0.548506,
+ 0.542227, 0.536043, 0.529953, 0.523956, 0.518051,
+ 0.512238, 0.506516, 0.500884, 0.495341, 0.489887,
+ 0.484521, 0.479241, 0.474048, 0.468940, 0.463917,
+ 0.458978, 0.454122, 0.449349, 0.444657, 0.440047,
+ 0.435518, 0.431068, 0.426697, 0.422405, 0.418191,
+ 0.414054, 0.409993, 0.406009, 0.402099, 0.398265,
+ 0.394504, 0.390817, 0.387203, 0.383662, 0.380192,
+ 0.376793, 0.373466, 0.370208, 0.367020, 0.363902,
+ 0.360852, 0.357870, 0.354957, 0.352110, 0.349331,
+ 0.346618, 0.343971, 0.341389, 0.338873, 0.336422,
+ 0.334036, 0.331714, 0.329455, 0.327260, 0.325129,
+ 0.323060, 0.321055, 0.319111, 0.317230, 0.315412,
+ 0.313654, 0.311959, 0.310325, 0.308753, 0.307241,
+ 0.305791
}
}
};
-static xspect illoc_Plankian_CIE_1931_2[3] = {
+static xspect illoc_OPlankian_CIE_1931_2[3] = {
{
- 189, 60.000000, 1000.000000,
+ 481, 40.000000, 1000.000000,
1.0,
{
- 0.990017, 0.987458, 0.985018, 0.982708, 0.980540,
- 0.978522, 0.976663, 0.974970, 0.973449, 0.972105,
- 0.970942, 0.969965, 0.969174, 0.968572, 0.968159,
- 0.967936, 0.967902, 0.968056, 0.968396, 0.968922,
- 0.969629, 0.970517, 0.971581, 0.972819, 0.974227,
- 0.975803, 0.977542, 0.979441, 0.981495, 0.983702,
- 0.986058, 0.988559, 0.991200, 0.993979, 0.996891,
- 0.999934, 1.003102, 1.006394, 1.009804, 1.013331,
- 1.016970, 1.020718, 1.024572, 1.028529, 1.032586,
- 1.036739, 1.040986, 1.045325, 1.049751, 1.054263,
- 1.058857, 1.063532, 1.068285, 1.073113, 1.078013,
- 1.082985, 1.088024, 1.093130, 1.098299, 1.103530,
- 1.108822, 1.114170, 1.119575, 1.125034, 1.130544,
- 1.136105, 1.141715, 1.147371, 1.153072, 1.158817,
- 1.164604, 1.170431, 1.176297, 1.182201, 1.188140,
- 1.194115, 1.200122, 1.206161, 1.212231, 1.218329,
- 1.224456, 1.230610, 1.236790, 1.242994, 1.249221,
- 1.255470, 1.261741, 1.268032, 1.274342, 1.280670,
- 1.287015, 1.293376, 1.299753, 1.306144, 1.312548,
- 1.318965, 1.325393, 1.331833, 1.338282, 1.344741,
- 1.351208, 1.357683, 1.364165, 1.370653, 1.377146,
- 1.383645, 1.390147, 1.396654, 1.403162, 1.409674,
- 1.416186, 1.422700, 1.429214, 1.435728, 1.442241,
- 1.448753, 1.455263, 1.461771, 1.468275, 1.474777,
- 1.481274, 1.487767, 1.494255, 1.500738, 1.507215,
- 1.513686, 1.520150, 1.526607, 1.533057, 1.539498,
- 1.545932, 1.552356, 1.558772, 1.565178, 1.571574,
- 1.577960, 1.584336, 1.590701, 1.597054, 1.603397,
- 1.609727, 1.616045, 1.622351, 1.628644, 1.634924,
- 1.641190, 1.647444, 1.653683, 1.659908, 1.666119,
- 1.672315, 1.678497, 1.684663, 1.690814, 1.696949,
- 1.703069, 1.709173, 1.715260, 1.721331, 1.727386,
- 1.733423, 1.739444, 1.745447, 1.751433, 1.757402,
- 1.763353, 1.769286, 1.775201, 1.781098, 1.786976,
- 1.792836, 1.798677, 1.804500, 1.810304, 1.816088,
- 1.821853, 1.827600, 1.833326, 1.839033, 1.844721,
- 1.850388, 1.856036, 1.861664, 1.867272, 1.872859,
- 1.878426, 1.883973, 1.889500, 1.895006
+ 1.001252, 1.000085, 0.998928, 0.997780, 0.996643,
+ 0.995518, 0.994406, 0.993307, 0.992222, 0.991153,
+ 0.990100, 0.989064, 0.988046, 0.987046, 0.986066,
+ 0.985106, 0.984166, 0.983248, 0.982352, 0.981479,
+ 0.980629, 0.979803, 0.979001, 0.978224, 0.977473,
+ 0.976748, 0.976049, 0.975377, 0.974732, 0.974114,
+ 0.973525, 0.972963, 0.972430, 0.971926, 0.971451,
+ 0.971005, 0.970588, 0.970201, 0.969844, 0.969516,
+ 0.969218, 0.968951, 0.968713, 0.968506, 0.968328,
+ 0.968181, 0.968064, 0.967978, 0.967921, 0.967894,
+ 0.967898, 0.967931, 0.967995, 0.968088, 0.968210,
+ 0.968363, 0.968544, 0.968755, 0.968995, 0.969265,
+ 0.969562, 0.969889, 0.970244, 0.970627, 0.971039,
+ 0.971478, 0.971945, 0.972440, 0.972962, 0.973510,
+ 0.974086, 0.974689, 0.975317, 0.975972, 0.976653,
+ 0.977360, 0.978092, 0.978850, 0.979632, 0.980439,
+ 0.981271, 0.982127, 0.983007, 0.983911, 0.984839,
+ 0.985790, 0.986764, 0.987761, 0.988780, 0.989822,
+ 0.990886, 0.991972, 0.993080, 0.994209, 0.995359,
+ 0.996531, 0.997723, 0.998935, 1.000168, 1.001421,
+ 1.002694, 1.003986, 1.005298, 1.006629, 1.007979,
+ 1.009347, 1.010734, 1.012140, 1.013563, 1.015004,
+ 1.016463, 1.017940, 1.019434, 1.020944, 1.022472,
+ 1.024016, 1.025577, 1.027153, 1.028746, 1.030355,
+ 1.031979, 1.033619, 1.035274, 1.036945, 1.038630,
+ 1.040330, 1.042044, 1.043773, 1.045516, 1.047273,
+ 1.049044, 1.050828, 1.052626, 1.054437, 1.056262,
+ 1.058099, 1.059950, 1.061813, 1.063688, 1.065576,
+ 1.067476, 1.069388, 1.071312, 1.073248, 1.075195,
+ 1.077154, 1.079124, 1.081105, 1.083097, 1.085100,
+ 1.087114, 1.089138, 1.091173, 1.093218, 1.095274,
+ 1.097339, 1.099414, 1.101499, 1.103593, 1.105697,
+ 1.107811, 1.109934, 1.112065, 1.114206, 1.116356,
+ 1.118514, 1.120682, 1.122857, 1.125041, 1.127233,
+ 1.129434, 1.131643, 1.133859, 1.136083, 1.138315,
+ 1.140555, 1.142802, 1.145057, 1.147319, 1.149588,
+ 1.151864, 1.154147, 1.156437, 1.158734, 1.161037,
+ 1.163347, 1.165664, 1.167987, 1.170316, 1.172651,
+ 1.174993, 1.177340, 1.179694, 1.182053, 1.184418,
+ 1.186788, 1.189164, 1.191546, 1.193933, 1.196325,
+ 1.198723, 1.201125, 1.203533, 1.205945, 1.208363,
+ 1.210785, 1.213212, 1.215644, 1.218080, 1.220520,
+ 1.222965, 1.225414, 1.227868, 1.230326, 1.232787,
+ 1.235253, 1.237723, 1.240197, 1.242674, 1.245155,
+ 1.247640, 1.250128, 1.252620, 1.255115, 1.257614,
+ 1.260116, 1.262621, 1.265130, 1.267641, 1.270156,
+ 1.272674, 1.275194, 1.277717, 1.280244, 1.282773,
+ 1.285304, 1.287838, 1.290375, 1.292914, 1.295456,
+ 1.298000, 1.300546, 1.303095, 1.305646, 1.308199,
+ 1.310754, 1.313311, 1.315870, 1.318431, 1.320994,
+ 1.323559, 1.326125, 1.328693, 1.331263, 1.333835,
+ 1.336408, 1.338982, 1.341558, 1.344135, 1.346714,
+ 1.349294, 1.351876, 1.354458, 1.357042, 1.359627,
+ 1.362212, 1.364799, 1.367387, 1.369976, 1.372566,
+ 1.375156, 1.377748, 1.380340, 1.382933, 1.385526,
+ 1.388120, 1.390715, 1.393311, 1.395906, 1.398503,
+ 1.401099, 1.403696, 1.406294, 1.408892, 1.411490,
+ 1.414088, 1.416686, 1.419285, 1.421883, 1.424482,
+ 1.427081, 1.429680, 1.432278, 1.434877, 1.437476,
+ 1.440074, 1.442672, 1.445270, 1.447868, 1.450465,
+ 1.453063, 1.455659, 1.458256, 1.460852, 1.463447,
+ 1.466042, 1.468637, 1.471231, 1.473824, 1.476417,
+ 1.479009, 1.481601, 1.484192, 1.486782, 1.489371,
+ 1.491960, 1.494547, 1.497134, 1.499720, 1.502305,
+ 1.504889, 1.507473, 1.510055, 1.512636, 1.515216,
+ 1.517795, 1.520373, 1.522950, 1.525525, 1.528100,
+ 1.530673, 1.533245, 1.535816, 1.538385, 1.540953,
+ 1.543520, 1.546085, 1.548649, 1.551212, 1.553773,
+ 1.556333, 1.558891, 1.561448, 1.564003, 1.566557,
+ 1.569109, 1.571660, 1.574208, 1.576756, 1.579301,
+ 1.581845, 1.584387, 1.586928, 1.589467, 1.592004,
+ 1.594539, 1.597072, 1.599604, 1.602133, 1.604661,
+ 1.607187, 1.609711, 1.612233, 1.614753, 1.617271,
+ 1.619788, 1.622302, 1.624814, 1.627324, 1.629832,
+ 1.632338, 1.634842, 1.637344, 1.639843, 1.642341,
+ 1.644836, 1.647329, 1.649820, 1.652309, 1.654795,
+ 1.657279, 1.659761, 1.662241, 1.664718, 1.667193,
+ 1.669666, 1.672136, 1.674604, 1.677070, 1.679533,
+ 1.681994, 1.684452, 1.686908, 1.689362, 1.691813,
+ 1.694261, 1.696707, 1.699151, 1.701592, 1.704030,
+ 1.706466, 1.708900, 1.711331, 1.713759, 1.716184,
+ 1.718607, 1.721028, 1.723445, 1.725860, 1.728273,
+ 1.730683, 1.733090, 1.735494, 1.737896, 1.740294,
+ 1.742691, 1.745084, 1.747475, 1.749862, 1.752248,
+ 1.754630, 1.757009, 1.759386, 1.761760, 1.764131,
+ 1.766499, 1.768864, 1.771227, 1.773586, 1.775943,
+ 1.778297, 1.780648, 1.782995, 1.785340, 1.787683,
+ 1.790022, 1.792358, 1.794691, 1.797021, 1.799349,
+ 1.801673, 1.803994, 1.806312, 1.808627, 1.810940,
+ 1.813249, 1.815555, 1.817858, 1.820158, 1.822455,
+ 1.824749, 1.827040, 1.829327, 1.831612, 1.833893,
+ 1.836172, 1.838447, 1.840719, 1.842988, 1.845254,
+ 1.847517, 1.849776, 1.852033, 1.854286, 1.856536,
+ 1.858783, 1.861027, 1.863267, 1.865504, 1.867738,
+ 1.869969, 1.872197, 1.874421, 1.876643, 1.878860,
+ 1.881075, 1.883287, 1.885495, 1.887700, 1.889901,
+ 1.892100
}
},
{
- 189, 60.000000, 1000.000000,
+ 481, 40.000000, 1000.000000,
1.0,
{
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
@@ -5154,78 +6477,219 @@ static xspect illoc_Plankian_CIE_1931_2[3] = {
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
- 1.000000, 1.000000, 1.000000, 1.000000
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
}
},
{
- 189, 60.000000, 1000.000000,
+ 481, 40.000000, 1000.000000,
1.0,
{
- 1.807443, 1.767939, 1.728424, 1.688977, 1.649677,
- 1.610595, 1.571797, 1.533345, 1.495294, 1.457694,
- 1.420591, 1.384023, 1.348026, 1.312628, 1.277856,
- 1.243731, 1.210269, 1.177483, 1.145385, 1.113980,
- 1.083273, 1.053267, 1.023960, 0.995350, 0.967433,
- 0.940204, 0.913655, 0.887779, 0.862566, 0.838007,
- 0.814090, 0.790805, 0.768140, 0.746084, 0.724623,
- 0.703745, 0.683438, 0.663689, 0.644486, 0.625814,
- 0.607663, 0.590019, 0.572870, 0.556203, 0.540006,
- 0.524267, 0.508975, 0.494117, 0.479683, 0.465661,
- 0.452040, 0.438809, 0.425958, 0.413476, 0.401354,
- 0.389581, 0.378149, 0.367047, 0.356266, 0.345798,
- 0.335634, 0.325764, 0.316182, 0.306879, 0.297847,
- 0.289078, 0.280566, 0.272302, 0.264279, 0.256492,
- 0.248932, 0.241594, 0.234472, 0.227558, 0.220848,
- 0.214334, 0.208013, 0.201877, 0.195922, 0.190142,
- 0.184533, 0.179089, 0.173806, 0.168679, 0.163703,
- 0.158875, 0.154189, 0.149641, 0.145229, 0.140947,
- 0.136792, 0.132760, 0.128847, 0.125050, 0.121366,
- 0.117792, 0.114323, 0.110958, 0.107692, 0.104523,
- 0.101449, 0.098466, 0.095571, 0.092763, 0.090038,
- 0.087394, 0.084829, 0.082340, 0.079926, 0.077583,
- 0.075310, 0.073104, 0.070964, 0.068888, 0.066874,
- 0.064919, 0.063023, 0.061184, 0.059399, 0.057667,
- 0.055987, 0.054357, 0.052775, 0.051240, 0.049752,
- 0.048307, 0.046906, 0.045546, 0.044226, 0.042946,
- 0.041704, 0.040499, 0.039330, 0.038195, 0.037095,
- 0.036027, 0.034990, 0.033985, 0.033009, 0.032062,
- 0.031144, 0.030252, 0.029387, 0.028548, 0.027734,
- 0.026943, 0.026177, 0.025432, 0.024710, 0.024009,
- 0.023329, 0.022669, 0.022029, 0.021407, 0.020804,
- 0.020219, 0.019651, 0.019099, 0.018564, 0.018044,
- 0.017540, 0.017051, 0.016576, 0.016115, 0.015668,
- 0.015233, 0.014811, 0.014402, 0.014005, 0.013619,
- 0.013245, 0.012881, 0.012528, 0.012186, 0.011853,
- 0.011530, 0.011217, 0.010912, 0.010617, 0.010329,
- 0.010051, 0.009780, 0.009517, 0.009262, 0.009014,
- 0.008773, 0.008540, 0.008313, 0.008092
+ 1.964399, 1.949065, 1.933662, 1.918197, 1.902676,
+ 1.887104, 1.871488, 1.855833, 1.840145, 1.824431,
+ 1.808694, 1.792942, 1.777180, 1.761413, 1.745646,
+ 1.729884, 1.714133, 1.698398, 1.682683, 1.666994,
+ 1.651334, 1.635709, 1.620122, 1.604578, 1.589081,
+ 1.573634, 1.558243, 1.542909, 1.527638, 1.512431,
+ 1.497293, 1.482226, 1.467234, 1.452320, 1.437485,
+ 1.422732, 1.408065, 1.393485, 1.378994, 1.364595,
+ 1.350290, 1.336080, 1.321966, 1.307952, 1.294037,
+ 1.280224, 1.266513, 1.252907, 1.239405, 1.226009,
+ 1.212720, 1.199539, 1.186466, 1.173502, 1.160647,
+ 1.147903, 1.135268, 1.122745, 1.110333, 1.098031,
+ 1.085841, 1.073763, 1.061796, 1.049940, 1.038196,
+ 1.026563, 1.015041, 1.003630, 0.992329, 0.981138,
+ 0.970058, 0.959087, 0.948225, 0.937472, 0.926827,
+ 0.916289, 0.905859, 0.895535, 0.885318, 0.875206,
+ 0.865199, 0.855295, 0.845496, 0.835799, 0.826205,
+ 0.816712, 0.807319, 0.798027, 0.788834, 0.779739,
+ 0.770743, 0.761843, 0.753039, 0.744331, 0.735718,
+ 0.727199, 0.718772, 0.710438, 0.702195, 0.694043,
+ 0.685981, 0.678008, 0.670124, 0.662326, 0.654616,
+ 0.646991, 0.639451, 0.631995, 0.624623, 0.617333,
+ 0.610126, 0.602999, 0.595952, 0.588985, 0.582096,
+ 0.575286, 0.568552, 0.561895, 0.555313, 0.548805,
+ 0.542372, 0.536012, 0.529725, 0.523509, 0.517364,
+ 0.511289, 0.505284, 0.499347, 0.493478, 0.487677,
+ 0.481943, 0.476274, 0.470670, 0.465131, 0.459655,
+ 0.454243, 0.448893, 0.443605, 0.438378, 0.433211,
+ 0.428104, 0.423056, 0.418066, 0.413134, 0.408260,
+ 0.403442, 0.398679, 0.393972, 0.389320, 0.384722,
+ 0.380177, 0.375686, 0.371246, 0.366858, 0.362522,
+ 0.358235, 0.353999, 0.349812, 0.345675, 0.341585,
+ 0.337543, 0.333549, 0.329601, 0.325700, 0.321844,
+ 0.318033, 0.314267, 0.310545, 0.306866, 0.303231,
+ 0.299639, 0.296088, 0.292580, 0.289112, 0.285685,
+ 0.282299, 0.278952, 0.275645, 0.272376, 0.269147,
+ 0.265955, 0.262800, 0.259683, 0.256603, 0.253559,
+ 0.250551, 0.247578, 0.244640, 0.241737, 0.238869,
+ 0.236034, 0.233232, 0.230464, 0.227729, 0.225026,
+ 0.222354, 0.219715, 0.217106, 0.214529, 0.211982,
+ 0.209465, 0.206978, 0.204520, 0.202092, 0.199692,
+ 0.197321, 0.194978, 0.192663, 0.190375, 0.188114,
+ 0.185880, 0.183673, 0.181492, 0.179337, 0.177207,
+ 0.175103, 0.173024, 0.170969, 0.168939, 0.166933,
+ 0.164951, 0.162992, 0.161057, 0.159145, 0.157255,
+ 0.155388, 0.153543, 0.151720, 0.149919, 0.148140,
+ 0.146381, 0.144644, 0.142927, 0.141231, 0.139555,
+ 0.137899, 0.136262, 0.134646, 0.133048, 0.131470,
+ 0.129910, 0.128369, 0.126846, 0.125342, 0.123855,
+ 0.122387, 0.120935, 0.119502, 0.118085, 0.116685,
+ 0.115302, 0.113935, 0.112585, 0.111251, 0.109933,
+ 0.108631, 0.107344, 0.106072, 0.104816, 0.103575,
+ 0.102349, 0.101137, 0.099940, 0.098757, 0.097588,
+ 0.096434, 0.095293, 0.094166, 0.093052, 0.091952,
+ 0.090864, 0.089790, 0.088729, 0.087680, 0.086644,
+ 0.085620, 0.084609, 0.083610, 0.082622, 0.081647,
+ 0.080683, 0.079731, 0.078790, 0.077860, 0.076942,
+ 0.076035, 0.075138, 0.074252, 0.073377, 0.072512,
+ 0.071658, 0.070814, 0.069980, 0.069156, 0.068342,
+ 0.067537, 0.066743, 0.065958, 0.065182, 0.064415,
+ 0.063658, 0.062910, 0.062171, 0.061440, 0.060718,
+ 0.060006, 0.059301, 0.058605, 0.057917, 0.057238,
+ 0.056567, 0.055904, 0.055248, 0.054601, 0.053961,
+ 0.053329, 0.052705, 0.052088, 0.051478, 0.050876,
+ 0.050281, 0.049693, 0.049113, 0.048539, 0.047972,
+ 0.047411, 0.046858, 0.046311, 0.045771, 0.045237,
+ 0.044710, 0.044188, 0.043674, 0.043165, 0.042662,
+ 0.042166, 0.041675, 0.041190, 0.040711, 0.040238,
+ 0.039770, 0.039308, 0.038852, 0.038401, 0.037955,
+ 0.037515, 0.037080, 0.036650, 0.036226, 0.035806,
+ 0.035392, 0.034982, 0.034577, 0.034177, 0.033782,
+ 0.033392, 0.033006, 0.032625, 0.032249, 0.031877,
+ 0.031509, 0.031146, 0.030787, 0.030432, 0.030082,
+ 0.029736, 0.029394, 0.029056, 0.028722, 0.028392,
+ 0.028066, 0.027744, 0.027426, 0.027111, 0.026801,
+ 0.026494, 0.026190, 0.025891, 0.025594, 0.025302,
+ 0.025013, 0.024727, 0.024445, 0.024166, 0.023890,
+ 0.023618, 0.023349, 0.023083, 0.022820, 0.022560,
+ 0.022304, 0.022050, 0.021800, 0.021553, 0.021308,
+ 0.021066, 0.020828, 0.020592, 0.020359, 0.020128,
+ 0.019901, 0.019676, 0.019453, 0.019234, 0.019017,
+ 0.018802, 0.018590, 0.018381, 0.018174, 0.017970,
+ 0.017767, 0.017568, 0.017371, 0.017176, 0.016983,
+ 0.016793, 0.016604, 0.016418, 0.016235, 0.016053,
+ 0.015874, 0.015697, 0.015521, 0.015348, 0.015177,
+ 0.015008, 0.014841, 0.014676, 0.014513, 0.014352,
+ 0.014192, 0.014035, 0.013879, 0.013725, 0.013574,
+ 0.013423, 0.013275, 0.013128, 0.012983, 0.012840,
+ 0.012699, 0.012559, 0.012420, 0.012284, 0.012149,
+ 0.012015, 0.011883, 0.011753, 0.011624, 0.011497,
+ 0.011371, 0.011247, 0.011124, 0.011002, 0.010882,
+ 0.010764, 0.010647, 0.010531, 0.010416, 0.010303,
+ 0.010191, 0.010081, 0.009971, 0.009863, 0.009756,
+ 0.009651, 0.009547, 0.009444, 0.009342, 0.009241,
+ 0.009142, 0.009043, 0.008946, 0.008850, 0.008755,
+ 0.008661, 0.008568, 0.008477, 0.008386, 0.008296,
+ 0.008208
}
}
};
-static xspect illoc_Daylight_CIE_1964_10[3] = {
+static xspect illoc_ODaylight_CIE_1931_2[3] = {
{
- 69, 60.000000, 400.000000,
+ 181, 40.000000, 400.000000,
1.0,
{
- 0.949535, 0.948408, 0.947363, 0.946408, 0.945551,
- 0.944800, 0.944161, 0.943639, 0.943243, 0.942976,
- 0.942844, 0.942853, 0.943006, 0.943308, 0.943763,
- 0.944374, 0.945146, 0.946079, 0.947174, 0.948434,
- 0.949861, 0.951455, 0.953217, 0.955146, 0.957242,
- 0.959504, 0.961930, 0.964519, 0.967268, 0.970175,
- 0.973237, 0.976450, 0.979812, 0.983317, 0.986963,
- 0.990743, 0.994653, 0.998688, 1.002842, 1.007108,
- 1.011480, 1.015951, 1.020514, 1.025161, 1.029883,
- 1.034672, 1.039519, 1.044415, 1.049348, 1.054309,
- 1.059288, 1.064271, 1.069249, 1.074207, 1.079135,
- 1.084018, 1.088844, 1.093597, 1.098265, 1.102832,
- 1.107284, 1.111605, 1.115781, 1.119796, 1.123634,
- 1.127280, 1.130718, 1.133933, 1.136910
+ 0.980733, 0.979686, 0.978644, 0.977610, 0.976584,
+ 0.975566, 0.974557, 0.973559, 0.972572, 0.971597,
+ 0.970635, 0.969687, 0.968753, 0.967834, 0.966931,
+ 0.966045, 0.965176, 0.964324, 0.963492, 0.962678,
+ 0.961884, 0.961111, 0.960358, 0.959627, 0.958918,
+ 0.958232, 0.957568, 0.956929, 0.956313, 0.955721,
+ 0.955155, 0.954614, 0.954098, 0.953609, 0.953146,
+ 0.952710, 0.952302, 0.951920, 0.951567, 0.951242,
+ 0.950945, 0.950677, 0.950439, 0.950229, 0.950049,
+ 0.949899, 0.949779, 0.949690, 0.949630, 0.949602,
+ 0.949604, 0.949638, 0.949703, 0.949799, 0.949926,
+ 0.950085, 0.950275, 0.950497, 0.950750, 0.951035,
+ 0.951352, 0.951701, 0.952081, 0.952493, 0.952937,
+ 0.953413, 0.953920, 0.954459, 0.955030, 0.955632,
+ 0.956265, 0.956929, 0.957625, 0.958351, 0.959108,
+ 0.959896, 0.960715, 0.961563, 0.962442, 0.963351,
+ 0.964289, 0.965257, 0.966254, 0.967281, 0.968336,
+ 0.969419, 0.970531, 0.971670, 0.972838, 0.974033,
+ 0.975254, 0.976503, 0.977778, 0.979079, 0.980406,
+ 0.981759, 0.983136, 0.984538, 0.985965, 0.987415,
+ 0.988889, 0.990386, 0.991906, 0.993448, 0.995012,
+ 0.996597, 0.998203, 0.999830, 1.001477, 1.003143,
+ 1.004828, 1.006532, 1.008254, 1.009993, 1.011749,
+ 1.013522, 1.015310, 1.017114, 1.018932, 1.020765,
+ 1.022611, 1.024470, 1.026341, 1.028223, 1.030117,
+ 1.032021, 1.033935, 1.035858, 1.037789, 1.039727,
+ 1.041673, 1.043625, 1.045582, 1.047543, 1.049509,
+ 1.051478, 1.053449, 1.055422, 1.057396, 1.059369,
+ 1.061342, 1.063313, 1.065282, 1.067247, 1.069208,
+ 1.071163, 1.073113, 1.075056, 1.076991, 1.078917,
+ 1.080834, 1.082740, 1.084634, 1.086516, 1.088385,
+ 1.090239, 1.092078, 1.093900, 1.095705, 1.097492,
+ 1.099259, 1.101006, 1.102732, 1.104435, 1.106115,
+ 1.107771, 1.109401, 1.111004, 1.112581, 1.114128,
+ 1.115647, 1.117134, 1.118590, 1.120014, 1.121404,
+ 1.122759, 1.124078, 1.125361, 1.126607, 1.127813,
+ 1.128981
}
},
{
- 69, 60.000000, 400.000000,
+ 181, 40.000000, 400.000000,
1.0,
{
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
@@ -5241,78 +6705,183 @@ static xspect illoc_Daylight_CIE_1964_10[3] = {
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
- 1.000000, 1.000000, 1.000000, 1.000000
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
}
},
{
- 69, 60.000000, 400.000000,
+ 181, 40.000000, 400.000000,
1.0,
{
- 1.736104, 1.699156, 1.662051, 1.624867, 1.587679,
- 1.550555, 1.513559, 1.476750, 1.440182, 1.403904,
- 1.367961, 1.332394, 1.297239, 1.262528, 1.228292,
- 1.194555, 1.161341, 1.128728, 1.096782, 1.065445,
- 1.034742, 1.004693, 0.975315, 0.946623, 0.918626,
- 0.891332, 0.864747, 0.838873, 0.813712, 0.789262,
- 0.765521, 0.742485, 0.720149, 0.698506, 0.677549,
- 0.657271, 0.637662, 0.618713, 0.600415, 0.582756,
- 0.565728, 0.549318, 0.533516, 0.518310, 0.503690,
- 0.489644, 0.476161, 0.463230, 0.450839, 0.438977,
- 0.427633, 0.416797, 0.406457, 0.396605, 0.387228,
- 0.378318, 0.369864, 0.361858, 0.354290, 0.347151,
- 0.340434, 0.334131, 0.328233, 0.322735, 0.317629,
- 0.312911, 0.308575, 0.304616, 0.301031
+ 1.945100, 1.929640, 1.914098, 1.898479, 1.882791,
+ 1.867042, 1.851240, 1.835389, 1.819499, 1.803574,
+ 1.787622, 1.771648, 1.755660, 1.739661, 1.723659,
+ 1.707659, 1.691666, 1.675685, 1.659721, 1.643779,
+ 1.627864, 1.611981, 1.596132, 1.580324, 1.564559,
+ 1.548842, 1.533176, 1.517564, 1.502011, 1.486520,
+ 1.471093, 1.455733, 1.440444, 1.425228, 1.410088,
+ 1.395026, 1.380044, 1.365145, 1.350331, 1.335604,
+ 1.320965, 1.306416, 1.291960, 1.277597, 1.263330,
+ 1.249158, 1.235085, 1.221110, 1.207236, 1.193462,
+ 1.179790, 1.166222, 1.152787, 1.139490, 1.126302,
+ 1.113225, 1.100260, 1.087407, 1.074669, 1.062047,
+ 1.049542, 1.037153, 1.024884, 1.012733, 1.000701,
+ 0.988790, 0.977000, 0.965330, 0.953782, 0.942355,
+ 0.931050, 0.919867, 0.908805, 0.897866, 0.887048,
+ 0.876351, 0.865776, 0.855322, 0.844989, 0.834777,
+ 0.824684, 0.814712, 0.804859, 0.795125, 0.785509,
+ 0.776012, 0.766631, 0.757368, 0.748221, 0.739189,
+ 0.730272, 0.721470, 0.712781, 0.704205, 0.695742,
+ 0.687390, 0.679148, 0.671017, 0.662995, 0.655081,
+ 0.647275, 0.639576, 0.631984, 0.624496, 0.617113,
+ 0.609834, 0.602658, 0.595584, 0.588611, 0.581739,
+ 0.574967, 0.568293, 0.561718, 0.555239, 0.548858,
+ 0.542572, 0.536381, 0.530283, 0.524280, 0.518368,
+ 0.512549, 0.506820, 0.501181, 0.495632, 0.490171,
+ 0.484799, 0.479513, 0.474313, 0.469200, 0.464171,
+ 0.459226, 0.454364, 0.449586, 0.444889, 0.440273,
+ 0.435739, 0.431284, 0.426908, 0.422611, 0.418392,
+ 0.414250, 0.410184, 0.406195, 0.402281, 0.398442,
+ 0.394677, 0.390986, 0.387368, 0.383822, 0.380348,
+ 0.376946, 0.373614, 0.370353, 0.367162, 0.364039,
+ 0.360986, 0.358001, 0.355084, 0.352234, 0.349451,
+ 0.346735, 0.344085, 0.341501, 0.338982, 0.336528,
+ 0.334139, 0.331814, 0.329553, 0.327356, 0.325222,
+ 0.323151, 0.321143, 0.319198, 0.317315, 0.315494,
+ 0.313734, 0.312037, 0.310401, 0.308827, 0.307314,
+ 0.305862
}
}
};
static xspect illoc_Plankian_CIE_1964_10[3] = {
{
- 189, 60.000000, 1000.000000,
+ 481, 40.000000, 1000.000000,
1.0,
{
- 0.974241, 0.972539, 0.970952, 0.969490, 0.968163,
- 0.966977, 0.965941, 0.965060, 0.964340, 0.963785,
- 0.963398, 0.963183, 0.963140, 0.963272, 0.963578,
- 0.964058, 0.964713, 0.965540, 0.966539, 0.967707,
- 0.969041, 0.970540, 0.972201, 0.974020, 0.975994,
- 0.978121, 0.980396, 0.982816, 0.985378, 0.988077,
- 0.990911, 0.993876, 0.996967, 1.000182, 1.003517,
- 1.006968, 1.010533, 1.014206, 1.017986, 1.021868,
- 1.025851, 1.029929, 1.034101, 1.038362, 1.042711,
- 1.047144, 1.051659, 1.056252, 1.060921, 1.065663,
- 1.070476, 1.075357, 1.080304, 1.085314, 1.090384,
- 1.095514, 1.100699, 1.105939, 1.111231, 1.116573,
- 1.121962, 1.127398, 1.132878, 1.138400, 1.143962,
- 1.149564, 1.155202, 1.160875, 1.166582, 1.172320,
- 1.178090, 1.183888, 1.189713, 1.195565, 1.201441,
- 1.207340, 1.213262, 1.219204, 1.225165, 1.231144,
- 1.237140, 1.243152, 1.249179, 1.255219, 1.261272,
- 1.267336, 1.273410, 1.279494, 1.285586, 1.291686,
- 1.297792, 1.303903, 1.310020, 1.316140, 1.322264,
- 1.328390, 1.334517, 1.340646, 1.346774, 1.352902,
- 1.359028, 1.365152, 1.371274, 1.377392, 1.383506,
- 1.389615, 1.395720, 1.401819, 1.407911, 1.413996,
- 1.420075, 1.426145, 1.432207, 1.438260, 1.444304,
- 1.450337, 1.456361, 1.462374, 1.468376, 1.474367,
- 1.480346, 1.486312, 1.492266, 1.498207, 1.504134,
- 1.510048, 1.515948, 1.521834, 1.527705, 1.533561,
- 1.539402, 1.545228, 1.551037, 1.556831, 1.562609,
- 1.568370, 1.574114, 1.579842, 1.585552, 1.591245,
- 1.596920, 1.602578, 1.608217, 1.613839, 1.619442,
- 1.625026, 1.630592, 1.636139, 1.641668, 1.647177,
- 1.652666, 1.658137, 1.663587, 1.669019, 1.674430,
- 1.679822, 1.685193, 1.690544, 1.695876, 1.701187,
- 1.706477, 1.711747, 1.716997, 1.722226, 1.727434,
- 1.732621, 1.737788, 1.742934, 1.748058, 1.753162,
- 1.758245, 1.763306, 1.768347, 1.773366, 1.778364,
- 1.783341, 1.788296, 1.793230, 1.798143, 1.803034,
- 1.807904, 1.812753, 1.817580, 1.822386, 1.827170,
- 1.831933, 1.836674, 1.841394, 1.846092
+ 0.981980, 0.981153, 0.980335, 0.979528, 0.978732,
+ 0.977948, 0.977178, 0.976421, 0.975679, 0.974952,
+ 0.974241, 0.973547, 0.972870, 0.972212, 0.971572,
+ 0.970952, 0.970352, 0.969772, 0.969214, 0.968677,
+ 0.968163, 0.967671, 0.967202, 0.966758, 0.966337,
+ 0.965941, 0.965570, 0.965224, 0.964903, 0.964609,
+ 0.964340, 0.964098, 0.963883, 0.963694, 0.963532,
+ 0.963398, 0.963291, 0.963212, 0.963160, 0.963136,
+ 0.963140, 0.963172, 0.963231, 0.963319, 0.963434,
+ 0.963578, 0.963749, 0.963948, 0.964175, 0.964430,
+ 0.964713, 0.965023, 0.965361, 0.965726, 0.966119,
+ 0.966539, 0.966986, 0.967460, 0.967960, 0.968487,
+ 0.969041, 0.969621, 0.970227, 0.970859, 0.971517,
+ 0.972201, 0.972910, 0.973644, 0.974402, 0.975186,
+ 0.975994, 0.976827, 0.977683, 0.978564, 0.979468,
+ 0.980396, 0.981347, 0.982320, 0.983317, 0.984336,
+ 0.985378, 0.986441, 0.987526, 0.988633, 0.989762,
+ 0.990911, 0.992081, 0.993272, 0.994484, 0.995715,
+ 0.996967, 0.998238, 0.999529, 1.000840, 1.002169,
+ 1.003517, 1.004884, 1.006269, 1.007672, 1.009094,
+ 1.010533, 1.011989, 1.013463, 1.014954, 1.016462,
+ 1.017986, 1.019527, 1.021084, 1.022657, 1.024246,
+ 1.025851, 1.027470, 1.029106, 1.030756, 1.032421,
+ 1.034101, 1.035795, 1.037503, 1.039225, 1.040961,
+ 1.042711, 1.044475, 1.046251, 1.048041, 1.049844,
+ 1.051659, 1.053487, 1.055327, 1.057180, 1.059045,
+ 1.060921, 1.062809, 1.064709, 1.066621, 1.068543,
+ 1.070476, 1.072421, 1.074376, 1.076342, 1.078318,
+ 1.080304, 1.082300, 1.084307, 1.086323, 1.088349,
+ 1.090384, 1.092429, 1.094483, 1.096546, 1.098618,
+ 1.100699, 1.102789, 1.104887, 1.106993, 1.109108,
+ 1.111231, 1.113362, 1.115500, 1.117647, 1.119801,
+ 1.121962, 1.124131, 1.126307, 1.128491, 1.130681,
+ 1.132878, 1.135082, 1.137292, 1.139509, 1.141733,
+ 1.143962, 1.146198, 1.148440, 1.150688, 1.152942,
+ 1.155202, 1.157467, 1.159737, 1.162013, 1.164295,
+ 1.166582, 1.168873, 1.171170, 1.173472, 1.175778,
+ 1.178090, 1.180405, 1.182726, 1.185051, 1.187380,
+ 1.189713, 1.192051, 1.194392, 1.196738, 1.199088,
+ 1.201441, 1.203798, 1.206159, 1.208523, 1.210891,
+ 1.213262, 1.215636, 1.218014, 1.220394, 1.222778,
+ 1.225165, 1.227554, 1.229947, 1.232342, 1.234740,
+ 1.237140, 1.239543, 1.241949, 1.244357, 1.246767,
+ 1.249179, 1.251594, 1.254010, 1.256429, 1.258849,
+ 1.261272, 1.263696, 1.266122, 1.268550, 1.270979,
+ 1.273410, 1.275843, 1.278276, 1.280712, 1.283148,
+ 1.285586, 1.288025, 1.290465, 1.292906, 1.295348,
+ 1.297792, 1.300236, 1.302681, 1.305126, 1.307573,
+ 1.310020, 1.312468, 1.314916, 1.317365, 1.319814,
+ 1.322264, 1.324714, 1.327165, 1.329615, 1.332066,
+ 1.334517, 1.336969, 1.339420, 1.341871, 1.344323,
+ 1.346774, 1.349225, 1.351676, 1.354127, 1.356578,
+ 1.359028, 1.361478, 1.363927, 1.366377, 1.368825,
+ 1.371274, 1.373721, 1.376168, 1.378615, 1.381061,
+ 1.383506, 1.385950, 1.388394, 1.390837, 1.393279,
+ 1.395720, 1.398160, 1.400599, 1.403038, 1.405475,
+ 1.407911, 1.410346, 1.412780, 1.415213, 1.417644,
+ 1.420075, 1.422504, 1.424931, 1.427358, 1.429783,
+ 1.432207, 1.434629, 1.437050, 1.439469, 1.441887,
+ 1.444304, 1.446718, 1.449131, 1.451543, 1.453953,
+ 1.456361, 1.458768, 1.461173, 1.463576, 1.465977,
+ 1.468376, 1.470774, 1.473170, 1.475564, 1.477956,
+ 1.480346, 1.482734, 1.485120, 1.487504, 1.489886,
+ 1.492266, 1.494644, 1.497020, 1.499393, 1.501765,
+ 1.504134, 1.506501, 1.508867, 1.511229, 1.513590,
+ 1.515948, 1.518304, 1.520658, 1.523009, 1.525358,
+ 1.527705, 1.530049, 1.532391, 1.534730, 1.537067,
+ 1.539402, 1.541734, 1.544064, 1.546391, 1.548715,
+ 1.551037, 1.553357, 1.555674, 1.557988, 1.560300,
+ 1.562609, 1.564915, 1.567219, 1.569520, 1.571818,
+ 1.574114, 1.576407, 1.578698, 1.580985, 1.583270,
+ 1.585552, 1.587831, 1.590108, 1.592381, 1.594652,
+ 1.596920, 1.599185, 1.601448, 1.603707, 1.605964,
+ 1.608217, 1.610468, 1.612716, 1.614961, 1.617203,
+ 1.619442, 1.621678, 1.623911, 1.626141, 1.628368,
+ 1.630592, 1.632813, 1.635031, 1.637247, 1.639459,
+ 1.641668, 1.643873, 1.646076, 1.648276, 1.650473,
+ 1.652666, 1.654857, 1.657044, 1.659228, 1.661409,
+ 1.663587, 1.665762, 1.667934, 1.670103, 1.672268,
+ 1.674430, 1.676589, 1.678745, 1.680897, 1.683047,
+ 1.685193, 1.687336, 1.689476, 1.691612, 1.693746,
+ 1.695876, 1.698003, 1.700126, 1.702246, 1.704363,
+ 1.706477, 1.708588, 1.710695, 1.712799, 1.714899,
+ 1.716997, 1.719091, 1.721182, 1.723269, 1.725353,
+ 1.727434, 1.729511, 1.731586, 1.733656, 1.735724,
+ 1.737788, 1.739849, 1.741906, 1.743960, 1.746011,
+ 1.748058, 1.750102, 1.752143, 1.754180, 1.756214,
+ 1.758245, 1.760272, 1.762296, 1.764316, 1.766333,
+ 1.768347, 1.770357, 1.772364, 1.774367, 1.776367,
+ 1.778364, 1.780357, 1.782347, 1.784334, 1.786317,
+ 1.788296, 1.790272, 1.792245, 1.794214, 1.796180,
+ 1.798143, 1.800102, 1.802058, 1.804010, 1.805959,
+ 1.807904, 1.809846, 1.811785, 1.813720, 1.815652,
+ 1.817580, 1.819505, 1.821426, 1.823344, 1.825259,
+ 1.827170, 1.829078, 1.830982, 1.832883, 1.834780,
+ 1.836674, 1.838565, 1.840452, 1.842335, 1.844216,
+ 1.846092
}
},
{
- 189, 60.000000, 1000.000000,
+ 481, 40.000000, 1000.000000,
1.0,
{
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
@@ -5352,51 +6921,745 @@ static xspect illoc_Plankian_CIE_1964_10[3] = {
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
- 1.000000, 1.000000, 1.000000, 1.000000
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
+ }
+ },
+ {
+ 481, 40.000000, 1000.000000,
+ 1.0,
+ {
+ 1.923654, 1.909157, 1.894584, 1.879941, 1.865235,
+ 1.850470, 1.835651, 1.820786, 1.805878, 1.790933,
+ 1.775958, 1.760956, 1.745934, 1.730896, 1.715848,
+ 1.700795, 1.685741, 1.670691, 1.655651, 1.640624,
+ 1.625615, 1.610629, 1.595669, 1.580741, 1.565847,
+ 1.550992, 1.536180, 1.521413, 1.506697, 1.492034,
+ 1.477427, 1.462880, 1.448395, 1.433975, 1.419624,
+ 1.405344, 1.391137, 1.377005, 1.362952, 1.348979,
+ 1.335088, 1.321281, 1.307560, 1.293927, 1.280383,
+ 1.266930, 1.253569, 1.240302, 1.227130, 1.214053,
+ 1.201074, 1.188192, 1.175410, 1.162727, 1.150144,
+ 1.137662, 1.125282, 1.113004, 1.100828, 1.088756,
+ 1.076786, 1.064920, 1.053158, 1.041499, 1.029944,
+ 1.018493, 1.007146, 0.995903, 0.984764, 0.973728,
+ 0.962796, 0.951967, 0.941240, 0.930617, 0.920096,
+ 0.909677, 0.899359, 0.889143, 0.879028, 0.869013,
+ 0.859098, 0.849282, 0.839565, 0.829947, 0.820426,
+ 0.811003, 0.801676, 0.792445, 0.783310, 0.774269,
+ 0.765323, 0.756470, 0.747710, 0.739042, 0.730466,
+ 0.721980, 0.713585, 0.705279, 0.697062, 0.688933,
+ 0.680891, 0.672936, 0.665067, 0.657283, 0.649583,
+ 0.641968, 0.634435, 0.626984, 0.619616, 0.612328,
+ 0.605120, 0.597991, 0.590942, 0.583970, 0.577075,
+ 0.570257, 0.563515, 0.556848, 0.550255, 0.543736,
+ 0.537290, 0.530916, 0.524614, 0.518382, 0.512221,
+ 0.506129, 0.500106, 0.494151, 0.488264, 0.482443,
+ 0.476688, 0.470999, 0.465374, 0.459814, 0.454317,
+ 0.448883, 0.443510, 0.438200, 0.432950, 0.427760,
+ 0.422630, 0.417559, 0.412547, 0.407592, 0.402694,
+ 0.397852, 0.393067, 0.388337, 0.383662, 0.379041,
+ 0.374473, 0.369959, 0.365497, 0.361086, 0.356728,
+ 0.352420, 0.348162, 0.343953, 0.339794, 0.335684,
+ 0.331622, 0.327607, 0.323639, 0.319718, 0.315842,
+ 0.312013, 0.308228, 0.304487, 0.300791, 0.297138,
+ 0.293529, 0.289961, 0.286436, 0.282953, 0.279511,
+ 0.276109, 0.272748, 0.269426, 0.266144, 0.262900,
+ 0.259696, 0.256529, 0.253400, 0.250308, 0.247252,
+ 0.244234, 0.241251, 0.238303, 0.235391, 0.232513,
+ 0.229670, 0.226861, 0.224085, 0.221343, 0.218633,
+ 0.215956, 0.213311, 0.210697, 0.208115, 0.205564,
+ 0.203043, 0.200553, 0.198092, 0.195661, 0.193260,
+ 0.190887, 0.188543, 0.186227, 0.183939, 0.181678,
+ 0.179445, 0.177238, 0.175059, 0.172905, 0.170778,
+ 0.168676, 0.166600, 0.164549, 0.162523, 0.160521,
+ 0.158544, 0.156590, 0.154660, 0.152754, 0.150871,
+ 0.149010, 0.147172, 0.145357, 0.143563, 0.141792,
+ 0.140042, 0.138313, 0.136605, 0.134918, 0.133252,
+ 0.131606, 0.129980, 0.128373, 0.126787, 0.125220,
+ 0.123672, 0.122142, 0.120632, 0.119140, 0.117666,
+ 0.116210, 0.114772, 0.113352, 0.111949, 0.110563,
+ 0.109194, 0.107842, 0.106507, 0.105188, 0.103885,
+ 0.102598, 0.101327, 0.100071, 0.098831, 0.097606,
+ 0.096397, 0.095202, 0.094021, 0.092856, 0.091704,
+ 0.090567, 0.089444, 0.088335, 0.087239, 0.086157,
+ 0.085088, 0.084032, 0.082989, 0.081960, 0.080942,
+ 0.079938, 0.078946, 0.077966, 0.076998, 0.076042,
+ 0.075098, 0.074166, 0.073245, 0.072335, 0.071437,
+ 0.070550, 0.069674, 0.068808, 0.067954, 0.067110,
+ 0.066276, 0.065453, 0.064640, 0.063837, 0.063044,
+ 0.062260, 0.061487, 0.060723, 0.059969, 0.059223,
+ 0.058488, 0.057761, 0.057043, 0.056334, 0.055634,
+ 0.054943, 0.054260, 0.053586, 0.052920, 0.052263,
+ 0.051613, 0.050972, 0.050338, 0.049713, 0.049095,
+ 0.048485, 0.047883, 0.047288, 0.046700, 0.046120,
+ 0.045547, 0.044981, 0.044422, 0.043870, 0.043325,
+ 0.042787, 0.042255, 0.041730, 0.041212, 0.040700,
+ 0.040194, 0.039695, 0.039202, 0.038715, 0.038234,
+ 0.037760, 0.037291, 0.036828, 0.036370, 0.035919,
+ 0.035473, 0.035032, 0.034597, 0.034168, 0.033744,
+ 0.033325, 0.032911, 0.032503, 0.032099, 0.031701,
+ 0.031308, 0.030919, 0.030536, 0.030157, 0.029783,
+ 0.029413, 0.029048, 0.028688, 0.028332, 0.027981,
+ 0.027634, 0.027291, 0.026953, 0.026619, 0.026289,
+ 0.025963, 0.025642, 0.025324, 0.025010, 0.024700,
+ 0.024394, 0.024092, 0.023794, 0.023499, 0.023208,
+ 0.022921, 0.022637, 0.022357, 0.022080, 0.021807,
+ 0.021537, 0.021270, 0.021007, 0.020747, 0.020491,
+ 0.020237, 0.019987, 0.019740, 0.019496, 0.019255,
+ 0.019017, 0.018782, 0.018550, 0.018321, 0.018094,
+ 0.017871, 0.017650, 0.017432, 0.017217, 0.017004,
+ 0.016795, 0.016587, 0.016383, 0.016181, 0.015981,
+ 0.015784, 0.015589, 0.015397, 0.015207, 0.015020,
+ 0.014835, 0.014652, 0.014471, 0.014293, 0.014117,
+ 0.013943, 0.013771, 0.013602, 0.013434, 0.013269,
+ 0.013106, 0.012944, 0.012785, 0.012628, 0.012473,
+ 0.012319, 0.012168, 0.012018, 0.011871, 0.011725,
+ 0.011581, 0.011438, 0.011298, 0.011159, 0.011022,
+ 0.010887, 0.010753, 0.010621, 0.010491, 0.010363,
+ 0.010235, 0.010110, 0.009986, 0.009864, 0.009743,
+ 0.009623, 0.009506, 0.009389, 0.009274, 0.009161,
+ 0.009048, 0.008938, 0.008828, 0.008720, 0.008614,
+ 0.008508, 0.008404, 0.008302, 0.008200, 0.008100,
+ 0.008001, 0.007903, 0.007807, 0.007712, 0.007617,
+ 0.007524, 0.007433, 0.007342, 0.007252, 0.007164,
+ 0.007077, 0.006990, 0.006905, 0.006821, 0.006738,
+ 0.006656, 0.006575, 0.006495, 0.006416, 0.006338,
+ 0.006261
+ }
+ }
+};
+
+static xspect illoc_Daylight_CIE_1964_10[3] = {
+ {
+ 181, 40.000000, 400.000000,
+ 1.0,
+ {
+ 0.954594, 0.954039, 0.953491, 0.952950, 0.952416,
+ 0.951891, 0.951374, 0.950867, 0.950370, 0.949884,
+ 0.949409, 0.948945, 0.948494, 0.948056, 0.947632,
+ 0.947221, 0.946825, 0.946444, 0.946078, 0.945729,
+ 0.945395, 0.945079, 0.944780, 0.944498, 0.944235,
+ 0.943990, 0.943765, 0.943558, 0.943372, 0.943205,
+ 0.943059, 0.942934, 0.942830, 0.942748, 0.942687,
+ 0.942649, 0.942633, 0.942639, 0.942669, 0.942722,
+ 0.942799, 0.942900, 0.943024, 0.943174, 0.943347,
+ 0.943546, 0.943770, 0.944019, 0.944293, 0.944594,
+ 0.944920, 0.945273, 0.945651, 0.946054, 0.946484,
+ 0.946940, 0.947423, 0.947932, 0.948468, 0.949031,
+ 0.949620, 0.950237, 0.950880, 0.951550, 0.952247,
+ 0.952971, 0.953722, 0.954499, 0.955304, 0.956135,
+ 0.956992, 0.957876, 0.958787, 0.959724, 0.960688,
+ 0.961677, 0.962693, 0.963735, 0.964802, 0.965895,
+ 0.967013, 0.968157, 0.969326, 0.970520, 0.971739,
+ 0.972982, 0.974249, 0.975541, 0.976856, 0.978195,
+ 0.979557, 0.980943, 0.982351, 0.983782, 0.985235,
+ 0.986710, 0.988207, 0.989725, 0.991264, 0.992823,
+ 0.994403, 0.996003, 0.997623, 0.999262, 1.000920,
+ 1.002596, 1.004290, 1.006002, 1.007731, 1.009477,
+ 1.011239, 1.013018, 1.014811, 1.016620, 1.018443,
+ 1.020280, 1.022130, 1.023993, 1.025869, 1.027757,
+ 1.029655, 1.031565, 1.033485, 1.035414, 1.037353,
+ 1.039299, 1.041254, 1.043215, 1.045183, 1.047157,
+ 1.049136, 1.051120, 1.053107, 1.055098, 1.057090,
+ 1.059085, 1.061080, 1.063076, 1.065071, 1.067064,
+ 1.069055, 1.071044, 1.073028, 1.075009, 1.076983,
+ 1.078952, 1.080913, 1.082866, 1.084811, 1.086746,
+ 1.088670, 1.090583, 1.092484, 1.094371, 1.096244,
+ 1.098102, 1.099944, 1.101768, 1.103575, 1.105363,
+ 1.107131, 1.108878, 1.110603, 1.112305, 1.113984,
+ 1.115638, 1.117266, 1.118867, 1.120440, 1.121985,
+ 1.123500, 1.124984, 1.126436, 1.127856, 1.129241,
+ 1.130592, 1.131908, 1.133186, 1.134427, 1.135629,
+ 1.136792
+ }
+ },
+ {
+ 181, 40.000000, 400.000000,
+ 1.0,
+ {
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
+ }
+ },
+ {
+ 181, 40.000000, 400.000000,
+ 1.0,
+ {
+ 1.879446, 1.865348, 1.851156, 1.836877, 1.822518,
+ 1.808084, 1.793581, 1.779017, 1.764398, 1.749728,
+ 1.735014, 1.720261, 1.705476, 1.690662, 1.675827,
+ 1.660974, 1.646108, 1.631236, 1.616360, 1.601486,
+ 1.586618, 1.571761, 1.556919, 1.542095, 1.527294,
+ 1.512519, 1.497775, 1.483064, 1.468390, 1.453756,
+ 1.439166, 1.424623, 1.410129, 1.395688, 1.381302,
+ 1.366973, 1.352705, 1.338499, 1.324359, 1.310286,
+ 1.296282, 1.282349, 1.268490, 1.254705, 1.240998,
+ 1.227369, 1.213820, 1.200353, 1.186968, 1.173668,
+ 1.160454, 1.147326, 1.134316, 1.121427, 1.108633,
+ 1.095933, 1.083332, 1.070830, 1.058428, 1.046129,
+ 1.033933, 1.021842, 1.009857, 0.997979, 0.986209,
+ 0.974548, 0.962996, 0.951555, 0.940225, 0.929007,
+ 0.917901, 0.906907, 0.896026, 0.885259, 0.874605,
+ 0.864065, 0.853639, 0.843326, 0.833128, 0.823044,
+ 0.813073, 0.803217, 0.793474, 0.783845, 0.774329,
+ 0.764926, 0.755636, 0.746458, 0.737392, 0.728439,
+ 0.719596, 0.710865, 0.702244, 0.693733, 0.685332,
+ 0.677040, 0.668856, 0.660780, 0.652812, 0.644950,
+ 0.637194, 0.629545, 0.622000, 0.614559, 0.607222,
+ 0.599989, 0.592857, 0.585828, 0.578899, 0.572071,
+ 0.565342, 0.558713, 0.552181, 0.545747, 0.539410,
+ 0.533170, 0.527024, 0.520973, 0.515017, 0.509153,
+ 0.503382, 0.497703, 0.492115, 0.486617, 0.481209,
+ 0.475890, 0.470659, 0.465515, 0.460458, 0.455487,
+ 0.450602, 0.445801, 0.441084, 0.436451, 0.431899,
+ 0.427430, 0.423042, 0.418734, 0.414506, 0.410357,
+ 0.406287, 0.402294, 0.398378, 0.394539, 0.390776,
+ 0.387087, 0.383474, 0.379934, 0.376467, 0.373074,
+ 0.369752, 0.366502, 0.363322, 0.360213, 0.357174,
+ 0.354204, 0.351303, 0.348469, 0.345704, 0.343005,
+ 0.340373, 0.337807, 0.335306, 0.332871, 0.330501,
+ 0.328194, 0.325951, 0.323772, 0.321656, 0.319602,
+ 0.317611, 0.315681, 0.313813, 0.312005, 0.310259,
+ 0.308574, 0.306948, 0.305383, 0.303877, 0.302431,
+ 0.301045
+ }
+ }
+};
+
+static xspect illoc_OPlankian_CIE_1964_10[3] = {
+ {
+ 481, 40.000000, 1000.000000,
+ 1.0,
+ {
+ 0.982024, 0.981198, 0.980382, 0.979576, 0.978782,
+ 0.978000, 0.977230, 0.976474, 0.975733, 0.975007,
+ 0.974297, 0.973603, 0.972927, 0.972268, 0.971629,
+ 0.971008, 0.970408, 0.969828, 0.969269, 0.968731,
+ 0.968216, 0.967723, 0.967253, 0.966807, 0.966385,
+ 0.965987, 0.965613, 0.965265, 0.964942, 0.964645,
+ 0.964374, 0.964129, 0.963911, 0.963719, 0.963554,
+ 0.963416, 0.963305, 0.963222, 0.963166, 0.963138,
+ 0.963138, 0.963165, 0.963220, 0.963302, 0.963413,
+ 0.963551, 0.963717, 0.963911, 0.964133, 0.964382,
+ 0.964659, 0.964963, 0.965295, 0.965654, 0.966040,
+ 0.966453, 0.966894, 0.967361, 0.967855, 0.968375,
+ 0.968922, 0.969495, 0.970094, 0.970719, 0.971369,
+ 0.972045, 0.972746, 0.973473, 0.974224, 0.975000,
+ 0.975800, 0.976625, 0.977473, 0.978346, 0.979242,
+ 0.980161, 0.981103, 0.982069, 0.983057, 0.984068,
+ 0.985100, 0.986155, 0.987232, 0.988330, 0.989450,
+ 0.990590, 0.991752, 0.992934, 0.994136, 0.995359,
+ 0.996601, 0.997864, 0.999146, 1.000447, 1.001767,
+ 1.003106, 1.004463, 1.005839, 1.007233, 1.008645,
+ 1.010075, 1.011522, 1.012986, 1.014468, 1.015966,
+ 1.017481, 1.019012, 1.020560, 1.022123, 1.023703,
+ 1.025298, 1.026908, 1.028534, 1.030175, 1.031830,
+ 1.033500, 1.035184, 1.036883, 1.038596, 1.040322,
+ 1.042063, 1.043816, 1.045583, 1.047363, 1.049156,
+ 1.050962, 1.052781, 1.054611, 1.056454, 1.058309,
+ 1.060176, 1.062055, 1.063945, 1.065847, 1.067760,
+ 1.069684, 1.071618, 1.073564, 1.075520, 1.077487,
+ 1.079463, 1.081450, 1.083447, 1.085454, 1.087470,
+ 1.089496, 1.091532, 1.093576, 1.095630, 1.097692,
+ 1.099764, 1.101844, 1.103933, 1.106030, 1.108135,
+ 1.110249, 1.112370, 1.114500, 1.116637, 1.118782,
+ 1.120934, 1.123094, 1.125260, 1.127435, 1.129616,
+ 1.131804, 1.133998, 1.136200, 1.138408, 1.140622,
+ 1.142843, 1.145070, 1.147303, 1.149542, 1.151787,
+ 1.154037, 1.156293, 1.158555, 1.160823, 1.163095,
+ 1.165373, 1.167656, 1.169944, 1.172237, 1.174535,
+ 1.176838, 1.179145, 1.181457, 1.183773, 1.186094,
+ 1.188419, 1.190748, 1.193081, 1.195418, 1.197759,
+ 1.200104, 1.202453, 1.204805, 1.207161, 1.209521,
+ 1.211884, 1.214250, 1.216619, 1.218992, 1.221367,
+ 1.223746, 1.226128, 1.228512, 1.230899, 1.233289,
+ 1.235682, 1.238077, 1.240475, 1.242875, 1.245277,
+ 1.247682, 1.250088, 1.252497, 1.254908, 1.257321,
+ 1.259736, 1.262153, 1.264571, 1.266992, 1.269414,
+ 1.271837, 1.274262, 1.276689, 1.279116, 1.281546,
+ 1.283976, 1.286408, 1.288841, 1.291275, 1.293710,
+ 1.296146, 1.298583, 1.301021, 1.303460, 1.305899,
+ 1.308340, 1.310780, 1.313222, 1.315664, 1.318106,
+ 1.320549, 1.322993, 1.325437, 1.327881, 1.330325,
+ 1.332770, 1.335214, 1.337659, 1.340104, 1.342549,
+ 1.344994, 1.347438, 1.349883, 1.352328, 1.354772,
+ 1.357216, 1.359660, 1.362103, 1.364546, 1.366989,
+ 1.369431, 1.371872, 1.374314, 1.376754, 1.379194,
+ 1.381633, 1.384072, 1.386509, 1.388946, 1.391383,
+ 1.393818, 1.396252, 1.398686, 1.401119, 1.403550,
+ 1.405981, 1.408410, 1.410839, 1.413266, 1.415692,
+ 1.418117, 1.420541, 1.422963, 1.425384, 1.427804,
+ 1.430222, 1.432640, 1.435055, 1.437469, 1.439882,
+ 1.442293, 1.444703, 1.447111, 1.449518, 1.451923,
+ 1.454326, 1.456728, 1.459128, 1.461526, 1.463922,
+ 1.466317, 1.468710, 1.471101, 1.473490, 1.475877,
+ 1.478263, 1.480646, 1.483028, 1.485407, 1.487785,
+ 1.490160, 1.492534, 1.494905, 1.497274, 1.499642,
+ 1.502007, 1.504370, 1.506730, 1.509089, 1.511445,
+ 1.513799, 1.516151, 1.518501, 1.520848, 1.523193,
+ 1.525536, 1.527876, 1.530214, 1.532549, 1.534883,
+ 1.537213, 1.539541, 1.541867, 1.544191, 1.546511,
+ 1.548830, 1.551145, 1.553459, 1.555769, 1.558077,
+ 1.560383, 1.562686, 1.564986, 1.567284, 1.569579,
+ 1.571871, 1.574160, 1.576447, 1.578732, 1.581013,
+ 1.583292, 1.585568, 1.587841, 1.590111, 1.592379,
+ 1.594644, 1.596906, 1.599165, 1.601422, 1.603675,
+ 1.605926, 1.608173, 1.610418, 1.612660, 1.614899,
+ 1.617135, 1.619369, 1.621599, 1.623826, 1.626051,
+ 1.628272, 1.630490, 1.632706, 1.634918, 1.637127,
+ 1.639334, 1.641537, 1.643737, 1.645935, 1.648129,
+ 1.650320, 1.652508, 1.654693, 1.656875, 1.659053,
+ 1.661229, 1.663401, 1.665571, 1.667737, 1.669900,
+ 1.672060, 1.674217, 1.676370, 1.678521, 1.680668,
+ 1.682812, 1.684953, 1.687091, 1.689225, 1.691357,
+ 1.693485, 1.695609, 1.697731, 1.699849, 1.701965,
+ 1.704076, 1.706185, 1.708290, 1.710393, 1.712491,
+ 1.714587, 1.716679, 1.718768, 1.720854, 1.722936,
+ 1.725016, 1.727091, 1.729164, 1.731233, 1.733299,
+ 1.735362, 1.737421, 1.739477, 1.741530, 1.743579,
+ 1.745625, 1.747667, 1.749707, 1.751743, 1.753775,
+ 1.755804, 1.757830, 1.759853, 1.761872, 1.763888,
+ 1.765900, 1.767909, 1.769915, 1.771917, 1.773916,
+ 1.775911, 1.777904, 1.779892, 1.781878, 1.783860,
+ 1.785838, 1.787814, 1.789785, 1.791754, 1.793719,
+ 1.795680, 1.797639, 1.799593, 1.801545, 1.803493,
+ 1.805437, 1.807379, 1.809316, 1.811251, 1.813182,
+ 1.815109, 1.817034, 1.818954, 1.820872, 1.822786,
+ 1.824696, 1.826603, 1.828507, 1.830407, 1.832304,
+ 1.834197, 1.836087, 1.837974, 1.839857, 1.841737,
+ 1.843613
+ }
+ },
+ {
+ 481, 40.000000, 1000.000000,
+ 1.0,
+ {
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
+ }
+ },
+ {
+ 481, 40.000000, 1000.000000,
+ 1.0,
+ {
+ 1.924417, 1.909963, 1.895433, 1.880833, 1.866169,
+ 1.851446, 1.836670, 1.821847, 1.806982, 1.792079,
+ 1.777145, 1.762185, 1.747204, 1.732207, 1.717200,
+ 1.702186, 1.687172, 1.672162, 1.657160, 1.642171,
+ 1.627200, 1.612250, 1.597327, 1.582434, 1.567576,
+ 1.552755, 1.537977, 1.523244, 1.508560, 1.493928,
+ 1.479353, 1.464836, 1.450380, 1.435990, 1.421667,
+ 1.407414, 1.393233, 1.379128, 1.365099, 1.351151,
+ 1.337283, 1.323499, 1.309801, 1.296189, 1.282666,
+ 1.269233, 1.255891, 1.242643, 1.229488, 1.216429,
+ 1.203466, 1.190600, 1.177833, 1.165164, 1.152595,
+ 1.140127, 1.127759, 1.115493, 1.103328, 1.091266,
+ 1.079307, 1.067450, 1.055696, 1.044046, 1.032499,
+ 1.021055, 1.009714, 0.998477, 0.987344, 0.976313,
+ 0.965385, 0.954560, 0.943837, 0.933217, 0.922698,
+ 0.912282, 0.901966, 0.891751, 0.881636, 0.871622,
+ 0.861707, 0.851891, 0.842173, 0.832554, 0.823032,
+ 0.813606, 0.804277, 0.795044, 0.785906, 0.776862,
+ 0.767912, 0.759056, 0.750292, 0.741619, 0.733038,
+ 0.724548, 0.716148, 0.707836, 0.699613, 0.691478,
+ 0.683430, 0.675469, 0.667593, 0.659802, 0.652096,
+ 0.644473, 0.636932, 0.629474, 0.622098, 0.614802,
+ 0.607586, 0.600449, 0.593390, 0.586410, 0.579507,
+ 0.572679, 0.565928, 0.559252, 0.552649, 0.546121,
+ 0.539665, 0.533281, 0.526969, 0.520728, 0.514556,
+ 0.508454, 0.502421, 0.496455, 0.490557, 0.484726,
+ 0.478960, 0.473260, 0.467625, 0.462053, 0.456545,
+ 0.451100, 0.445716, 0.440394, 0.435133, 0.429932,
+ 0.424791, 0.419708, 0.414684, 0.409718, 0.404808,
+ 0.399955, 0.395158, 0.390417, 0.385730, 0.381097,
+ 0.376517, 0.371991, 0.367517, 0.363095, 0.358724,
+ 0.354404, 0.350135, 0.345915, 0.341744, 0.337621,
+ 0.333547, 0.329520, 0.325540, 0.321607, 0.317720,
+ 0.313878, 0.310081, 0.306329, 0.302621, 0.298956,
+ 0.295335, 0.291756, 0.288219, 0.284723, 0.281269,
+ 0.277856, 0.274483, 0.271149, 0.267855, 0.264600,
+ 0.261384, 0.258205, 0.255064, 0.251961, 0.248894,
+ 0.245864, 0.242869, 0.239910, 0.236986, 0.234097,
+ 0.231243, 0.228422, 0.225635, 0.222881, 0.220161,
+ 0.217472, 0.214816, 0.212191, 0.209598, 0.207035,
+ 0.204504, 0.202002, 0.199531, 0.197089, 0.194677,
+ 0.192293, 0.189938, 0.187612, 0.185313, 0.183042,
+ 0.180798, 0.178581, 0.176391, 0.174227, 0.172090,
+ 0.169978, 0.167891, 0.165830, 0.163794, 0.161782,
+ 0.159794, 0.157831, 0.155891, 0.153975, 0.152082,
+ 0.150211, 0.148364, 0.146539, 0.144736, 0.142954,
+ 0.141195, 0.139457, 0.137739, 0.136043, 0.134367,
+ 0.132712, 0.131077, 0.129462, 0.127866, 0.126290,
+ 0.124733, 0.123194, 0.121675, 0.120174, 0.118692,
+ 0.117227, 0.115781, 0.114352, 0.112940, 0.111546,
+ 0.110169, 0.108808, 0.107465, 0.106137, 0.104826,
+ 0.103531, 0.102252, 0.100988, 0.099740, 0.098508,
+ 0.097290, 0.096087, 0.094899, 0.093726, 0.092567,
+ 0.091422, 0.090291, 0.089174, 0.088071, 0.086981,
+ 0.085905, 0.084842, 0.083792, 0.082755, 0.081731,
+ 0.080719, 0.079720, 0.078733, 0.077759, 0.076796,
+ 0.075845, 0.074906, 0.073978, 0.073062, 0.072157,
+ 0.071264, 0.070381, 0.069509, 0.068648, 0.067798,
+ 0.066958, 0.066128, 0.065309, 0.064500, 0.063701,
+ 0.062911, 0.062132, 0.061362, 0.060602, 0.059851,
+ 0.059109, 0.058376, 0.057653, 0.056938, 0.056233,
+ 0.055536, 0.054848, 0.054168, 0.053497, 0.052834,
+ 0.052179, 0.051532, 0.050893, 0.050263, 0.049640,
+ 0.049025, 0.048417, 0.047817, 0.047224, 0.046639,
+ 0.046061, 0.045490, 0.044927, 0.044370, 0.043820,
+ 0.043277, 0.042741, 0.042211, 0.041688, 0.041172,
+ 0.040662, 0.040158, 0.039660, 0.039169, 0.038684,
+ 0.038205, 0.037731, 0.037264, 0.036802, 0.036347,
+ 0.035897, 0.035452, 0.035013, 0.034579, 0.034151,
+ 0.033728, 0.033311, 0.032899, 0.032491, 0.032089,
+ 0.031692, 0.031300, 0.030912, 0.030530, 0.030152,
+ 0.029779, 0.029411, 0.029047, 0.028688, 0.028333,
+ 0.027982, 0.027636, 0.027295, 0.026957, 0.026624,
+ 0.026295, 0.025970, 0.025649, 0.025332, 0.025019,
+ 0.024709, 0.024404, 0.024103, 0.023805, 0.023511,
+ 0.023221, 0.022934, 0.022651, 0.022371, 0.022095,
+ 0.021822, 0.021553, 0.021287, 0.021024, 0.020765,
+ 0.020509, 0.020256, 0.020006, 0.019759, 0.019515,
+ 0.019275, 0.019037, 0.018803, 0.018571, 0.018342,
+ 0.018116, 0.017893, 0.017672, 0.017455, 0.017240,
+ 0.017028, 0.016818, 0.016611, 0.016406, 0.016205,
+ 0.016005, 0.015808, 0.015614, 0.015422, 0.015232,
+ 0.015045, 0.014860, 0.014677, 0.014497, 0.014319,
+ 0.014143, 0.013969, 0.013798, 0.013628, 0.013461,
+ 0.013296, 0.013132, 0.012971, 0.012812, 0.012655,
+ 0.012500, 0.012346, 0.012195, 0.012046, 0.011898,
+ 0.011752, 0.011608, 0.011466, 0.011325, 0.011187,
+ 0.011050, 0.010915, 0.010781, 0.010649, 0.010519,
+ 0.010390, 0.010263, 0.010137, 0.010013, 0.009891,
+ 0.009770, 0.009651, 0.009533, 0.009416, 0.009301,
+ 0.009188, 0.009076, 0.008965, 0.008856, 0.008747,
+ 0.008641, 0.008535, 0.008431, 0.008328, 0.008227,
+ 0.008127, 0.008028, 0.007930, 0.007833, 0.007738,
+ 0.007644, 0.007551, 0.007459, 0.007368, 0.007278,
+ 0.007190, 0.007102, 0.007016, 0.006931, 0.006847,
+ 0.006763, 0.006681, 0.006600, 0.006520, 0.006441,
+ 0.006363
+ }
+ }
+};
+
+static xspect illoc_ODaylight_CIE_1964_10[3] = {
+ {
+ 181, 40.000000, 400.000000,
+ 1.0,
+ {
+ 0.954689, 0.954137, 0.953592, 0.953054, 0.952523,
+ 0.952001, 0.951488, 0.950984, 0.950490, 0.950007,
+ 0.949535, 0.949074, 0.948627, 0.948192, 0.947770,
+ 0.947363, 0.946970, 0.946591, 0.946229, 0.945882,
+ 0.945551, 0.945238, 0.944942, 0.944663, 0.944402,
+ 0.944161, 0.943938, 0.943734, 0.943550, 0.943386,
+ 0.943243, 0.943120, 0.943019, 0.942939, 0.942880,
+ 0.942844, 0.942831, 0.942840, 0.942872, 0.942927,
+ 0.943006, 0.943109, 0.943235, 0.943387, 0.943562,
+ 0.943763, 0.943988, 0.944239, 0.944516, 0.944818,
+ 0.945146, 0.945500, 0.945880, 0.946285, 0.946716,
+ 0.947174, 0.947658, 0.948168, 0.948706, 0.949270,
+ 0.949861, 0.950478, 0.951123, 0.951794, 0.952492,
+ 0.953217, 0.953969, 0.954747, 0.955552, 0.956384,
+ 0.957242, 0.958127, 0.959039, 0.959976, 0.960940,
+ 0.961930, 0.962946, 0.963988, 0.965056, 0.966149,
+ 0.967268, 0.968412, 0.969581, 0.970775, 0.971994,
+ 0.973237, 0.974504, 0.975796, 0.977111, 0.978450,
+ 0.979812, 0.981197, 0.982605, 0.984035, 0.985488,
+ 0.986963, 0.988459, 0.989976, 0.991515, 0.993074,
+ 0.994653, 0.996252, 0.997871, 0.999509, 1.001166,
+ 1.002842, 1.004535, 1.006246, 1.007974, 1.009719,
+ 1.011480, 1.013257, 1.015050, 1.016857, 1.018679,
+ 1.020514, 1.022363, 1.024225, 1.026100, 1.027986,
+ 1.029883, 1.031791, 1.033710, 1.035637, 1.037574,
+ 1.039519, 1.041472, 1.043432, 1.045399, 1.047371,
+ 1.049348, 1.051330, 1.053315, 1.055304, 1.057295,
+ 1.059288, 1.061281, 1.063275, 1.065268, 1.067259,
+ 1.069249, 1.071235, 1.073218, 1.075196, 1.077168,
+ 1.079135, 1.081094, 1.083046, 1.084988, 1.086921,
+ 1.088844, 1.090754, 1.092653, 1.094538, 1.096409,
+ 1.098265, 1.100105, 1.101927, 1.103732, 1.105518,
+ 1.107284, 1.109029, 1.110752, 1.112453, 1.114129,
+ 1.115781, 1.117407, 1.119007, 1.120578, 1.122121,
+ 1.123634, 1.125116, 1.126567, 1.127985, 1.129369,
+ 1.130718, 1.132032, 1.133309, 1.134548, 1.135749,
+ 1.136910
+ }
+ },
+ {
+ 181, 40.000000, 400.000000,
+ 1.0,
+ {
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
+ 1.000000
}
},
{
- 189, 60.000000, 1000.000000,
+ 181, 40.000000, 400.000000,
1.0,
{
- 1.775958, 1.738417, 1.700795, 1.663169, 1.625615,
- 1.588201, 1.550992, 1.514049, 1.477427, 1.441177,
- 1.405344, 1.369969, 1.335088, 1.300732, 1.266930,
- 1.233704, 1.201074, 1.169056, 1.137662, 1.106903,
- 1.076786, 1.047315, 1.018493, 0.990321, 0.962796,
- 0.935916, 0.909677, 0.884073, 0.859098, 0.834744,
- 0.811003, 0.787866, 0.765323, 0.743365, 0.721980,
- 0.701159, 0.680891, 0.661164, 0.641968, 0.623290,
- 0.605120, 0.587446, 0.570257, 0.553542, 0.537290,
- 0.521489, 0.506129, 0.491199, 0.476688, 0.462586,
- 0.448883, 0.435567, 0.422630, 0.410062, 0.397852,
- 0.385993, 0.374473, 0.363285, 0.352420, 0.341868,
- 0.331622, 0.321672, 0.312013, 0.302634, 0.293529,
- 0.284689, 0.276109, 0.267780, 0.259696, 0.251849,
- 0.244234, 0.236843, 0.229670, 0.222710, 0.215956,
- 0.209402, 0.203043, 0.196873, 0.190887, 0.185079,
- 0.179445, 0.173979, 0.168676, 0.163533, 0.158544,
- 0.153704, 0.149010, 0.144457, 0.140042, 0.135759,
- 0.131606, 0.127578, 0.123672, 0.119884, 0.116210,
- 0.112648, 0.109194, 0.105845, 0.102598, 0.099449,
- 0.096397, 0.093437, 0.090567, 0.087785, 0.085088,
- 0.082473, 0.079938, 0.077480, 0.075098, 0.072788,
- 0.070550, 0.068380, 0.066276, 0.064237, 0.062260,
- 0.060345, 0.058488, 0.056688, 0.054943, 0.053252,
- 0.051613, 0.050025, 0.048485, 0.046993, 0.045547,
- 0.044145, 0.042787, 0.041470, 0.040194, 0.038958,
- 0.037760, 0.036598, 0.035473, 0.034382, 0.033325,
- 0.032300, 0.031308, 0.030346, 0.029413, 0.028510,
- 0.027634, 0.026786, 0.025963, 0.025166, 0.024394,
- 0.023646, 0.022921, 0.022218, 0.021537, 0.020877,
- 0.020237, 0.019618, 0.019017, 0.018435, 0.017871,
- 0.017324, 0.016795, 0.016281, 0.015784, 0.015302,
- 0.014835, 0.014382, 0.013943, 0.013518, 0.013106,
- 0.012706, 0.012319, 0.011944, 0.011581, 0.011228,
- 0.010887, 0.010556, 0.010235, 0.009925, 0.009623,
- 0.009331, 0.009048, 0.008774, 0.008508, 0.008251,
- 0.008001, 0.007759, 0.007524, 0.007297, 0.007077,
- 0.006863, 0.006656, 0.006455, 0.006261
+ 1.880550, 1.866451, 1.852259, 1.837979, 1.823618,
+ 1.809182, 1.794679, 1.780113, 1.765491, 1.750820,
+ 1.736104, 1.721349, 1.706561, 1.691745, 1.676907,
+ 1.662051, 1.647182, 1.632306, 1.617427, 1.602550,
+ 1.587679, 1.572818, 1.557971, 1.543143, 1.528338,
+ 1.513559, 1.498810, 1.484094, 1.469415, 1.454777,
+ 1.440182, 1.425633, 1.411134, 1.396687, 1.382295,
+ 1.367961, 1.353687, 1.339475, 1.325329, 1.311249,
+ 1.297239, 1.283299, 1.269433, 1.255642, 1.241928,
+ 1.228292, 1.214736, 1.201262, 1.187870, 1.174563,
+ 1.161341, 1.148206, 1.135188, 1.122292, 1.109489,
+ 1.096782, 1.084173, 1.071663, 1.059253, 1.046946,
+ 1.034742, 1.022643, 1.010649, 0.998763, 0.986985,
+ 0.975315, 0.963755, 0.952306, 0.940967, 0.929740,
+ 0.918626, 0.907623, 0.896734, 0.885958, 0.875296,
+ 0.864747, 0.854312, 0.843991, 0.833784, 0.823691,
+ 0.813712, 0.803847, 0.794095, 0.784457, 0.774933,
+ 0.765521, 0.756222, 0.747036, 0.737962, 0.729000,
+ 0.720149, 0.711409, 0.702779, 0.694260, 0.685850,
+ 0.677549, 0.669357, 0.661272, 0.653296, 0.645425,
+ 0.637662, 0.630004, 0.622450, 0.615002, 0.607657,
+ 0.600415, 0.593275, 0.586237, 0.579301, 0.572464,
+ 0.565728, 0.559090, 0.552551, 0.546109, 0.539764,
+ 0.533516, 0.527363, 0.521304, 0.515340, 0.509469,
+ 0.503690, 0.498004, 0.492408, 0.486903, 0.481488,
+ 0.476161, 0.470923, 0.465772, 0.460709, 0.455731,
+ 0.450839, 0.446031, 0.441307, 0.436667, 0.432109,
+ 0.427633, 0.423238, 0.418924, 0.414689, 0.410534,
+ 0.406457, 0.402459, 0.398537, 0.394691, 0.390922,
+ 0.387228, 0.383608, 0.380063, 0.376591, 0.373191,
+ 0.369864, 0.366608, 0.363424, 0.360309, 0.357265,
+ 0.354290, 0.351383, 0.348545, 0.345774, 0.343071,
+ 0.340434, 0.337863, 0.335359, 0.332919, 0.330544,
+ 0.328233, 0.325986, 0.323803, 0.321683, 0.319625,
+ 0.317629, 0.315696, 0.313824, 0.312014, 0.310264,
+ 0.308575, 0.306946, 0.305378, 0.303869, 0.302420,
+ 0.301031
}
}
};
@@ -5453,16 +7716,13 @@ static double cct2_func(void *fdata, double tp[]) {
}
-/* Given a choice of temperature dependent illuminant (icxIT_Dtemp or icxIT_Ptemp), */
-/* return the closest correlated color temperature to the XYZ. */
-/* An observer type can be chosen for interpretting the spectrum of the input and */
-/* the illuminant. */
+/* Given a particular locus indexed in Mired, */
+/* return the closest color temperature to the XYZ. */
/* Return -1.0 on erorr */
-double icx_XYZ2ill_ct2(
+static double icx_XYZ2ill_ct3(
double txyz[3], /* If not NULL, return the XYZ of the locus temperature */
-icxIllumeType ilType, /* Type of illuminant, icxIT_Dtemp or icxIT_Ptemp */
-icxObserverType obType, /* Observer, CIE_1931_2 or CIE_1964_10 */
-double xyz[3], /* Input XYZ value */
+xspect *iloc, /* Locus to match to */
+double xyz[3], /* Input XYZ value in given observer space. */
int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
) {
cct2ctx x; /* Context for callback */
@@ -5472,27 +7732,7 @@ int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
double tc, ber, bct = 0.0;
x.viscct = viscct;
-
- if (ilType != icxIT_Dtemp && ilType != icxIT_Ptemp)
- return -1.0;
- if (obType != icxOT_CIE_1931_2 && obType != icxOT_CIE_1964_10)
- return -1.0;
-
- /* Locus to use */
- if (obType == icxOT_CIE_1931_2) {
- if (ilType == icxIT_Dtemp) {
- x.iloc = illoc_Daylight_CIE_1931_2;
- } else {
- x.iloc = illoc_Plankian_CIE_1931_2;
- }
- } else {
- if (ilType == icxIT_Dtemp) {
- x.iloc = illoc_Daylight_CIE_1964_10;
- } else {
- x.iloc = illoc_Plankian_CIE_1964_10;
- }
- }
-
+ x.iloc = iloc;
icmAry2Ary(x.xyz, xyz);
/* Normalise target */
@@ -5536,14 +7776,61 @@ int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
return 1e6/cp[0];
}
-/* Given a choice of temperature dependent illuminant (icxIT_Dtemp or icxIT_Ptemp), */
+/* Given a choice of temperature dependent illuminant (icxIT_[O]Dtemp or icxIT_[O]Ptemp), */
+/* return the closest correlated color temperature to the XYZ. */
+/* An observer type can be chosen for interpretting the spectrum of the input and */
+/* the illuminant. */
+/* Return -1.0 on erorr */
+double icx_XYZ2ill_ct2(
+double txyz[3], /* If not NULL, return the XYZ of the locus temperature */
+icxIllumeType ilType, /* Type of illuminant, icxIT_[O]Dtemp or icxIT_[O]Ptemp */
+icxObserverType obType, /* Observer, CIE_1931_2 or CIE_1964_10 */
+double xyz[3], /* Input XYZ value in given observer space. */
+int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
+) {
+ xspect *iloc = NULL;
+
+ if (ilType != icxIT_Dtemp && ilType != icxIT_Ptemp
+ && ilType != icxIT_ODtemp && ilType != icxIT_OPtemp)
+ return -1.0;
+ if (obType != icxOT_CIE_1931_2 && obType != icxOT_CIE_1964_10)
+ return -1.0;
+
+ /* Locus to use */
+ if (obType == icxOT_CIE_1931_2) {
+ if (ilType == icxIT_Dtemp) {
+ iloc = illoc_Daylight_CIE_1931_2;
+ } else if (ilType == icxIT_Ptemp) {
+ iloc = illoc_Plankian_CIE_1931_2;
+ } else if (ilType == icxIT_ODtemp) {
+ iloc = illoc_ODaylight_CIE_1931_2;
+ } else if (ilType == icxIT_OPtemp) {
+ iloc = illoc_OPlankian_CIE_1931_2;
+ }
+ } else {
+ if (ilType == icxIT_Dtemp) {
+ iloc = illoc_Daylight_CIE_1964_10;
+ } else if (ilType == icxIT_Ptemp) {
+ iloc = illoc_Plankian_CIE_1964_10;
+ } else if (ilType == icxIT_ODtemp) {
+ iloc = illoc_ODaylight_CIE_1964_10;
+ } else if (ilType == icxIT_OPtemp) {
+ iloc = illoc_OPlankian_CIE_1964_10;
+ }
+ }
+
+ /* Let icx_XYZ2ill_ct3() do all the hard work */
+ return icx_XYZ2ill_ct3(txyz, iloc, xyz, viscct);
+}
+
+/* Given a choice of temperature dependent illuminant (icxIT_[O]Dtemp or icxIT_[O]Ptemp), */
/* a color temperature and a Y value, return the corresponding XYZ */
/* An observer type can be chosen for interpretting the spectrum of the input and */
/* the illuminant. */
/* Return xyz[0] = -1.0 on erorr */
void icx_ill_ct2XYZ(
double xyz[3], /* Return the XYZ value */
-icxIllumeType ilType, /* Type of illuminant, icxIT_Dtemp or icxIT_Ptemp */
+icxIllumeType ilType, /* Type of illuminant, icxIT_[O]Dtemp or icxIT_[O]Ptemp */
icxObserverType obType, /* Observer, CIE_1931_2 or CIE_1964_10 */
int viscct, /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
double tin, /* Input temperature */
@@ -5553,7 +7840,8 @@ double Yin /* Input Y value */
double cp[1], s[1];
- if (ilType != icxIT_Dtemp && ilType != icxIT_Ptemp) {
+ if (ilType != icxIT_Dtemp && ilType != icxIT_Ptemp
+ && ilType != icxIT_ODtemp && ilType != icxIT_OPtemp) {
xyz[0] = -1.0;
return;
}
@@ -5566,14 +7854,22 @@ double Yin /* Input Y value */
if (obType == icxOT_CIE_1931_2) {
if (ilType == icxIT_Dtemp) {
iloc = illoc_Daylight_CIE_1931_2;
- } else {
+ } else if (ilType == icxIT_Ptemp) {
iloc = illoc_Plankian_CIE_1931_2;
+ } else if (ilType == icxIT_ODtemp) {
+ iloc = illoc_ODaylight_CIE_1931_2;
+ } else if (ilType == icxIT_OPtemp) {
+ iloc = illoc_OPlankian_CIE_1931_2;
}
} else {
if (ilType == icxIT_Dtemp) {
iloc = illoc_Daylight_CIE_1964_10;
- } else {
+ } else if (ilType == icxIT_Ptemp) {
iloc = illoc_Plankian_CIE_1964_10;
+ } else if (ilType == icxIT_ODtemp) {
+ iloc = illoc_ODaylight_CIE_1964_10;
+ } else if (ilType == icxIT_OPtemp) {
+ iloc = illoc_OPlankian_CIE_1964_10;
}
}
@@ -6491,7 +8787,7 @@ int icx_ill_sp2XYZ(
double xyz[3], /* Return XYZ value with Y == 1 */
icxObserverType obType, /* Observer */
xspect custObserver[3], /* Optional custom observer */
-icxIllumeType ilType, /* Type of illuminant, icxIT_Dtemp or icxIT_Ptemp */
+icxIllumeType ilType, /* Type of illuminant, icxIT_[O]Dtemp or icxIT_[O]Ptemp */
double ct, /* Input temperature in degrees K */
xspect *custIllum /* Optional custom illuminant */
) {
@@ -6519,10 +8815,48 @@ xspect *custIllum /* Optional custom illuminant */
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - */
+/* Aproximate CCT using polinomial. No good < 3000K */
+/* Use this for sanity check */
+#ifdef NEVER
+static double aprox_CCT(double xyz[3]) {
+ double xe = 0.3366;
+ double ye = 0.1735;
+ double A0 = -949.86315;
+ double A1 = 6253.80338;
+ double t1 = 0.92159;
+ double A2 = 28.70599;
+ double t2 = 0.20039;
+ double A3 = 0.00004;
+ double t3 = 0.07125;
+ double Yxy[3];
+ double n;
+ double cct;
+
+ icmXYZ2Yxy(Yxy, xyz);
+ n = (Yxy[1] - xe)/(Yxy[2] - ye);
+ cct = A0 + A1 * exp(-n/t1) + A2 * exp(-n/t2) + A3 * exp(-n/t3);
+
+ return cct;
+}
+#else
+static double aprox_CCT(double xyz[3]) {
+ double Yxy[3];
+ double n;
+ double cct;
+
+ icmXYZ2Yxy(Yxy, xyz);
+ n = (Yxy[1] - 0.3320)/(Yxy[2] - 0.1858);
+ cct = -449.0 * n * n * n + 3525.0 * n * n - 6823.3 * n + 5520.33;
+ return cct;
+}
+#endif
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - */
+/* Full precision CCT */
/* Context for optimiser callback */
typedef struct {
- icxIllumeType ilType; /* Type of illuminant, icxIT_Dtemp or icxIT_Ptemp */
+ icxIllumeType ilType; /* Type of illuminant, icxIT_[O]Dtemp or icx[O]IT_Ptemp */
double xyz[3]; /* Target XYZ */
icmXYZNumber XYZ; /* Target as XYZ number */
xsp2cie *conv; /* Means of converting spectrum to XYZ */
@@ -6541,9 +8875,15 @@ static double cct_func(void *fdata, double tp[]) {
if (x->ilType == icxIT_Dtemp) {
if (daylight_il(&sp, tp[0]) != 0)
rv = 1e6;
- } else {
+ } else if (x->ilType == icxIT_Ptemp) {
if (planckian_il(&sp, tp[0]) != 0)
rv = 1e6;
+ } else if (x->ilType == icxIT_ODtemp) {
+ if (daylight_old_il(&sp, tp[0]) != 0)
+ rv = 1e6;
+ } else if (x->ilType == icxIT_OPtemp) {
+ if (planckian_old_il(&sp, tp[0]) != 0)
+ rv = 1e6;
}
if (rv == 0.0) {
@@ -6570,14 +8910,14 @@ static double cct_func(void *fdata, double tp[]) {
}
-/* Given a choice of temperature dependent illuminant (icxIT_Dtemp or icxIT_Ptemp), */
+/* Given a choice of temperature dependent illuminant (icxIT_[O]Dtemp or icxIT_[O]Ptemp), */
/* return the closest correlated color temperature to the given spectrum or XYZ. */
/* An observer type can be chosen for interpretting the spectrum of the input and */
/* the illuminant. */
/* Return -1 on erorr */
double icx_XYZ2ill_ct(
double txyz[3], /* If not NULL, return the XYZ of the locus temperature */
-icxIllumeType ilType, /* Type of illuminant, icxIT_Dtemp or icxIT_Ptemp */
+icxIllumeType ilType, /* Type of illuminant, icxIT_[O]Dtemp or icx[O]IT_Ptemp */
icxObserverType obType, /* Observer */
xspect custObserver[3], /* Optional custom observer */
double xyz[3], /* Input XYZ value, NULL if spectrum intead */
@@ -6592,7 +8932,8 @@ int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
x.viscct = viscct;
- if (ilType != icxIT_Dtemp && ilType != icxIT_Ptemp)
+ if (ilType != icxIT_Dtemp && ilType != icxIT_Ptemp
+ && ilType != icxIT_ODtemp && ilType != icxIT_OPtemp)
return -1.0;
x.ilType = ilType;
@@ -6606,6 +8947,7 @@ int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
} else {
icmAry2Ary(x.xyz, xyz);
}
+//printf("~1 aprox CCT = %f\n",aprox_CCT(x.xyz));
/* Normalise target */
x.xyz[0] /= x.xyz[1];
@@ -6640,12 +8982,24 @@ int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
txyz[0] = txyz[2] = txyz[1] = cp[0] = 0.0;
return cp[0];
}
- } else {
+ } else if (x.ilType == icxIT_Ptemp) {
if (planckian_il(&sp, cp[0]) != 0) {
x.conv->del(x.conv);
txyz[0] = txyz[2] = txyz[1] = cp[0] = 0.0;
return cp[0];
}
+ } else if (x.ilType == icxIT_ODtemp) {
+ if (daylight_old_il(&sp, cp[0]) != 0) {
+ x.conv->del(x.conv);
+ txyz[0] = txyz[2] = txyz[1] = cp[0] = 0.0;
+ return cp[0];
+ }
+ } else if (x.ilType == icxIT_OPtemp) {
+ if (planckian_old_il(&sp, cp[0]) != 0) {
+ x.conv->del(x.conv);
+ txyz[0] = txyz[2] = txyz[1] = cp[0] = 0.0;
+ return cp[0];
+ }
}
x.conv->convert(x.conv, txyz, &sp);
/* Make sure locus XYZ is Normalised */
@@ -6655,7 +9009,7 @@ int viscct /* nz to use visual CIEDE2000, 0 to use CCT CIE 1960 UCS. */
}
x.conv->del(x.conv);
-//DBGF((DBGA,"returning %f with error %f delta E94 %f\n",cp[0],sqrt(rv)));
+//DBGF((DBGA,"returning CT %f with error %f\n",cp[0],sqrt(rv)));
return cp[0];
}
@@ -6671,14 +9025,13 @@ static void UCSYuv2Ycd(double *out, double *in) {
out[2] = (1.708 * v - 1.481 * u + 0.404)/v;
}
-
-
/* Compute the CIE1995 CRI: Ra */
/* Return < 0.0 on error */
/* If invalid is not NULL, set it to nz if CRI */
/* is invalid because the sample is not white enough. */
double icx_CIE1995_CRI(
int *invalid, /* if not NULL, set to nz if invalid */
+double cris[14], /* If not NULL, return the TCS01-14 CRI's */
xspect *sample /* Illuminant sample to compute CRI of */
) {
int i;
@@ -6691,15 +9044,21 @@ xspect *sample /* Illuminant sample to compute CRI of */
double sa[3]; /* Sample white in CIE 1960 UCS */
double sa_Ycd[3]; /* Ycd sample white */
double dc; /* delta of sample to reference white in 1960 UCS */
- double ref[8][3]; /* reference XYZ/1964 color space */
- double sam[8][3]; /* sample XYZ/1964 color space */
+ double ref[14][3]; /* reference XYZ/1964 color space */
+ double sam[14][3]; /* sample XYZ/1964 color space */
double c_ad, d_ad; /* Chromatic adaptation scaling factors */
double cri = 0.0;
+ double sampnorm; /* Original sample norm value */
//DBGF((DBGA,"icx_CIE1995_CRI called\n"));
- /* First find the standard 2 degree observer plankian CCT */
- if ((cct = icx_XYZ2ill_ct(NULL, icxIT_Ptemp, icxOT_CIE_1931_2, NULL, NULL, sample, 0)) < 0.0)
+ if ((tocie = new_xsp2cie(icxIT_none, NULL, icxOT_CIE_1931_2, NULL, icSigXYZData, 1)) == NULL)
+ return -1.0;
+
+ /* Compute the XYZ of the sample */
+ tocie->convert(tocie, sa, sample);
+
+ if ((cct = icx_XYZ2ill_ct(NULL, icxIT_Ptemp, icxOT_CIE_1931_2, NULL, sa, NULL, 0)) < 0.0)
return -1.0;
//DBGF((DBGA,"CCT = %f\n", cct));
@@ -6713,19 +9072,16 @@ xspect *sample /* Illuminant sample to compute CRI of */
return -1.0;
}
- if ((tocie = new_xsp2cie(icxIT_none, NULL, icxOT_CIE_1931_2, NULL, icSigXYZData, 1)) == NULL)
- return -1.0;
-
- /* Compute the XYZ of the reference white and sample */
+ /* Compute the XYZ of the reference white */
tocie->convert(tocie, wt, &wts);
- tocie->convert(tocie, sa, sample);
//DBGF((DBGA,"XYZ white = %f %f %f\n",wt[0],wt[1],wt[2]));
//DBGF((DBGA,"XYZ sampl = %f %f %f\n",sa[0],sa[1],sa[2]));
/* Normalize the spectra so as to create a normalized white */
wts.norm *= wt[1];
- sample->norm *= sa[1]; /* ~~~ shouldn't change sample!!!! ~~~~ */
+ sampnorm = sample->norm; /* Save this so we can restore it */
+ sample->norm *= sa[1];
tocie->convert(tocie, wt, &wts);
tocie->convert(tocie, sa, sample);
tocie->del(tocie);
@@ -6761,18 +9117,25 @@ xspect *sample /* Illuminant sample to compute CRI of */
}
/* Check out the delta E for each reflective sample */
- if ((tocie = new_xsp2cie(icxIT_custom, &wts, icxOT_CIE_1931_2, NULL, icSigXYZData, 1)) == NULL)
+ if ((tocie = new_xsp2cie(icxIT_custom, &wts, icxOT_CIE_1931_2, NULL, icSigXYZData, 1)) == NULL) {
+ sample->norm = sampnorm; /* Restore this */
return -1.0;
- for (i = 0; i < 8; i++) {
+ }
+
+ /* We compute the CRI of each of the 14 samples, */
+ /* even though only the first 8 are used to compute Ra */
+ for (i = 0; i < 14; i++) {
tocie->convert(tocie, ref[i], &CIE1995_TCS[i]);
icmXYZ21964WUV(&wtn, ref[i], ref[i]);
//DBGF((DBGA,"ref samp %d = WUV %f %f %f\n", i,ref[i][0],ref[i][1],ref[i][2]));
}
tocie->del(tocie);
- if ((tocie = new_xsp2cie(icxIT_custom, sample, icxOT_CIE_1931_2, NULL, icSigXYZData, 1)) == NULL)
+ if ((tocie = new_xsp2cie(icxIT_custom, sample, icxOT_CIE_1931_2, NULL, icSigXYZData, 1)) == NULL) {
+ sample->norm = sampnorm; /* Restore this */
return -1.0;
- for (i = 0; i < 8; i++) {
+ }
+ for (i = 0; i < 14; i++) {
double c, d;
tocie->convert(tocie, sam[i], &CIE1995_TCS[i]);
@@ -6794,24 +9157,315 @@ xspect *sample /* Illuminant sample to compute CRI of */
}
tocie->del(tocie);
- /* Compute the CRI */
- for (i = 0; i < 8; i++) {
+ /* Compute the CRI of all 14, but only average the first 8. */
+ for (i = 0; i < 14; i++) {
double de, tcri;
de = icmLabDE(ref[i], sam[i]);
tcri = 100.0 - 4.6 * de;
//DBGF((DBGA,"sample %d: de = %f, CRI = %f\n",i,de,tcri));
- cri += tcri;
+ if (cris != NULL) {
+ /* Should we clip -ve values ? */
+ cris[i] = tcri;
+ }
+ if (i < 8)
+ cri += tcri;
}
cri /= 8.0;
-//DBGF((DBGA,"average CRI = %f\n",cri));
+//DBGF((DBGA,"average CRI of first 8 = %f\n",cri));
if (cri < 0.0)
cri = -1.0;
//DBGF((DBGA,"returning CRI = %f\n",cri));
+ sample->norm = sampnorm; /* Restore this */
return cri;
}
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+/* EBU TLCI-2012 - used for the assessment of light sources for use in television lighting */
+
+/* Camera and display model. Converts camera RGB into XYZ */
+static void TLCI_camdisp(double *out, double *in, double *wb) {
+ double cam[3][3] = {
+ { 1.182, -0.209, 0.027 },
+ { 0.107, 0.890, 0.003 },
+ { 0.040, -0.134, 1.094 }
+ };
+ double a = (1.0 - 90.0/100)/3.0;
+ double aa = 1.0 - 2.0 * a;
+ double sat[3][3] = {
+ { aa, a, a },
+ { a, aa, a },
+ { a, a, aa }
+ };
+ double disp[3][3] = {
+ { 0.412391, 0.357584, 0.180481 },
+ { 0.212639, 0.715169, 0.072192 },
+ { 0.019331, 0.119195, 0.950532 }
+ };
+ int i;
+
+//DBGF((DBGA,"raw camera RGB %f %f %f\n",in[0],in[1],in[2]));
+ icmMul3(out, wb, in); /* Apply white balance */
+//DBGF((DBGA,"white balanced camera RGB %f %f %f\n",out[0],out[1],out[2]));
+ icmMulBy3x3(out, cam, out); /* Camera matrix RGB->RGB*/
+//DBGF((DBGA,"Rec709 optimized camera RGB %f %f %f\n",out[0],out[1],out[2]));
+ icmMulBy3x3(out, sat, out); /* Saturation matrix */
+//DBGF((DBGA,"Sat adjusted Rec709 camera RGB %f %f %f\n",out[0],out[1],out[2]));
+
+ for (i = 0; i < 3; i++) { /* Camera OETF */
+ if (out[i] < 0.018)
+ out[i] = 4.5 * out[i];
+ else
+ out[i] = 1.099 * pow(out[i], 0.45) - 0.099;
+ }
+//DBGF((DBGA,"Gamma encoded Rec709 camera RGB %f %f %f\n",out[0],out[1],out[2]));
+ for (i = 0; i < 3; i++) { /* Display OETF */
+ if (out[i] < 0.0)
+ out[i] = 0.0;
+ else
+ out[i] = pow(out[i], 2.4);
+ }
+//DBGF((DBGA,"Display RGB %f %f %f\n",out[0],out[1],out[2]));
+ icmMulBy3x3(out, disp, out); /* Display matrix RGB->XYZ */
+ {
+ double lab[3];
+ icmXYZ2Lab(&icmD65, lab, out);
+//DBGF((DBGA,"Lab %f %f %f\n", lab[0], lab[1], lab[2]));
+ }
+}
+
+/* Compute the EBU Television Lighting Consistency Index TLCI-2012 Qa (R 137) */
+/* Return < 0.0 on error */
+/* If invalid is not NULL, set it to nz if TLCI is invalid because the sample is */
+/* not white enough. */
+/* While it is not clear from the specification itself, it appears that it is expected */
+/* that the accuracy of this computation be deliberately crippled to 5nm integration, */
+/* resulting in agreement with TLCI-2012.exe is within 0.01 Qa. */
+/* When computed to higher 1nm accuracy, the resulting Qa values are typically 0.6-0.8 greater. */
+double icx_EBU2012_TLCI(
+int *invalid, /* if not NULL, set to nz if invalid */
+xspect *sample /* Illuminant sample to compute TLCI of */
+) {
+ int i;
+ double cct;
+
+ xsp2cie *tocie; /* spectral to XYZ conversion */
+
+ xspect wts; /* Reference white spectrum */
+ double wt[3]; /* Reference white in CIE 1960 UCS */
+ xsp2cie *reftoRGB; /* Spectrum to reference camera RGB */
+ double refwb[3]; /* Reference camera RGB white balance scale */
+ icmXYZNumber wtn; /* Lab reference white XYZ */
+
+ double sa[3]; /* Sample white in CIE 1960 UCS */
+ xsp2cie *satoRGB; /* Spectrum to sample camera RGB */
+ double sawb[3]; /* Sample camera RGB white balance scale */
+
+ double dc; /* delta of sample to reference white in 1960 UCS */
+ double ref[24][3]; /* reference XYZ/1964 color space */
+ double sam[24][3]; /* sample XYZ/1964 color space */
+ double c_ad, d_ad; /* Chromatic adaptation scaling factors */
+ double tlci = 0.0;
+ double sampnorm; /* Original sample norm value */
+
+ int dolowres = 1; /* [1] Use 5nm integration for better match with TLCI-2012.exe */
+
+//DBGF((DBGA,"icx_EBU2012_TLCI called\n"));
+
+ /* Create spectral to XYZ for UCS space delta */
+ if ((tocie = new_xsp2cie(icxIT_none, NULL, icxOT_CIE_1931_2, NULL, icSigXYZData, 1)) == NULL) {
+//DBGF((DBGA,"Ref new_xsp2cie failed\n"));
+ return -1.0;
+ }
+
+ /* Compute the XYZ of the sample */
+ tocie->convert(tocie, sa, sample);
+
+ /* Find the standard 2 degree observer (Old) Plankian CCT */
+ /* (This is a few degrees lower than the current Plankian CCT) */
+ if ((cct = icx_XYZ2ill_ct(NULL, icxIT_OPtemp, icxOT_CIE_1931_2, NULL, sa, NULL, 0)) < 0.0)
+ {
+//DBGF((DBGA,"Ref icx_XYZ2ill_ct failed\n"));
+ return -1.0;
+ }
+//DBGF((DBGA,"CCT = %f\n", cct));
+
+ /* If it is 5000 or over, use the CDT instead, */
+ if (cct > 5000.0) {
+ if ((cct = icx_XYZ2ill_ct(NULL, icxIT_Dtemp, icxOT_CIE_1931_2, NULL, sa, NULL, 0)) < 0.0)
+ {
+//DBGF((DBGA,"Ref icx_XYZ2ill_ct failed\n"));
+ return -1.0;
+ }
+//DBGF((DBGA,"CDT = %f\n", cct));
+ }
+
+ /* Create a reference white spectrum with the same CCT. */
+ if (cct < 3400.0) {
+ if (planckian_old_il(&wts, cct)) {
+//DBGF((DBGA,"planckian_old_il failed\n"));
+ return -1.0;
+ }
+ } else if (cct > 5000.0) {
+ if (daylight_il(&wts, cct)) {
+//DBGF((DBGA,"daylight_il failed\n"));
+ return -1.0;
+ }
+ /* It's a blend between plankian(3400) and daylight(5000) */
+ } else {
+ double dwt; /* Blend weight */
+ xspect dwts;
+ if (planckian_old_il(&wts, 3400.0)) {
+//DBGF((DBGA,"planckian_il failed\n"));
+ return -1.0;
+ }
+ if (daylight_il(&dwts, 5000.0)) {
+//DBGF((DBGA,"daylight_il failed\n"));
+ return -1.0;
+ }
+
+ dwt = (cct - 3400)/(5000.0 - 3400.0);
+//DBGF((DBGA,"creating hybrid spectrum with %f Plankian & %f Daylight\n",(1.0 - dwt),dwt));
+ for (i = 0; i < wts.spec_n; i++) {
+ double wl = XSPECT_XWL(&wts, i); /* Wavelength in meters */
+ wts.spec[i] = dwt * value_xspect(&dwts, wl) + (1.0 - dwt) * wts.spec[i];
+ }
+ }
+
+ /* Compute the XYZ of the reference white */
+ tocie->convert(tocie, wt, &wts);
+
+//DBGF((DBGA,"XYZ white = %f %f %f\n",wt[0],wt[1],wt[2]));
+//DBGF((DBGA,"XYZ sampl = %f %f %f\n",sa[0],sa[1],sa[2]));
+
+ /* Normalize the spectra so as to create a normalized white */
+ wts.norm *= wt[1];
+ sampnorm = sample->norm; /* Save this so we can restore it */
+ sample->norm *= sa[1];
+ tocie->convert(tocie, wt, &wts);
+ tocie->convert(tocie, sa, sample);
+ tocie->del(tocie);
+ tocie = NULL;
+
+//DBGF((DBGA,"norm XYZ white = %f %f %f\n",wt[0],wt[1],wt[2]));
+//DBGF((DBGA,"norm XYZ sampl = %f %f %f\n",sa[0],sa[1],sa[2]));
+
+ /* Convert to perceptual CIE 1960 UCS */
+ icmXYZ21960UCS(wt, wt); /* 1960 UCS Yuv reference white */
+ icmXYZ21960UCS(sa, sa); /* 1960 UCS Yuv sample white */
+
+//DBGF((DBGA,"UCS white = %f %f %f\n",wt[0],wt[1],wt[2]));
+//DBGF((DBGA,"UCS sampl = %f %f %f\n",sa[0],sa[1],sa[2]));
+
+ dc = sqrt((wt[1] - sa[1]) * (wt[1] - sa[1]) + (wt[2] - sa[2]) * (wt[2] - sa[2]));
+
+//DBGF((DBGA,"dc = %f (normalized dist %f)\n",dc,dc/0.0054));
+//if (dc > 0.0054) DBGF((DBGA,"TLCI is invalid\n"));
+
+ /* If dc > 0.0054 we should abort computing the TLCI, */
+ /* but this means we fail on lots of real world lighting. */
+ if (invalid != NULL) {
+ if (dc > 0.0054)
+ *invalid = 1;
+ else
+ *invalid = 0;
+ }
+
+ /* Create spectral to camera RGB conversion for reference and sample illuminants */
+ /* Note that xsp2cie will normalise the values such that the "Y" value */
+ /* (actually G here) to be 1.0 for the perfect diffusor for the given illuminant, */
+ /* but that the white balancing scaling would do this anyway. */
+ if ((reftoRGB = new_xsp2cie(icxIT_custom, &wts, icxOT_EBU_2012, NULL, icSigXYZData, 1)) == NULL) {
+//DBGF((DBGA,"new_xsp2cie for ref failed\n"));
+ sample->norm = sampnorm; /* Restore this */
+ return -1.0;
+ }
+ if ((satoRGB = new_xsp2cie(icxIT_custom, sample, icxOT_EBU_2012, NULL, icSigXYZData, 1)) == NULL) {
+//DBGF((DBGA,"new_xsp2cie for samp failed\n"));
+ sample->norm = sampnorm; /* Restore this */
+ reftoRGB->del(reftoRGB);
+ return -1.0;
+ }
+
+ /* Emulate TLCI-2012.exe */
+ if (dolowres) {
+ reftoRGB->set_int_steps(reftoRGB, 5.0, 380.0, 760.0);
+ satoRGB->set_int_steps(satoRGB, 5.0, 380.0, 760.0);
+ }
+
+ /* Compute a white balance for the reference and sample illuminants */
+ /* such that 90% spectral flat produce camera RGB = 1.0 for the perfect reflector */
+ reftoRGB->convert(reftoRGB, refwb, &il_none);
+//DBGF((DBGA,"Ref white RGB = %f %f %f\n",refwb[0],refwb[1],refwb[2]));
+ refwb[0] = 1.0/(0.9 * refwb[0]); /* White balance scale factors */
+ refwb[1] = 1.0/(0.9 * refwb[1]);
+ refwb[2] = 1.0/(0.9 * refwb[2]);
+//DBGF((DBGA,"Ref white balance scale = %f %f %f\n",refwb[0],refwb[1],refwb[2]));
+
+ satoRGB->convert(satoRGB, sawb, &il_none);
+//DBGF((DBGA,"Samp white RGB = %f %f %f\n",sawb[0],sawb[1],sawb[2]));
+ sawb[0] = 1.0/(0.9 * sawb[0]); /* White balance scale factors */
+ sawb[1] = 1.0/(0.9 * sawb[1]);
+ sawb[2] = 1.0/(0.9 * sawb[2]);
+//DBGF((DBGA,"Samp white balance scale = %f %f %f\n",sawb[0],sawb[1],sawb[2]));
+
+ /* Compute the display reference white (should be D65) */
+ {
+ double dispw[3] = { 1.0, 1.0, 1.0 };
+
+ TLCI_camdisp(dispw, dispw, dispw); /* Display white XYZ */
+ icmAry2XYZ(wtn, dispw); /* Reference Lab white */
+//DBGF((DBGA,"display white XYZ %f %f %f\n", dispw[0], dispw[1], dispw[2]));
+ }
+
+ /* Compute the XYZ and DE for all 24 samples, */
+ /* but sum TLCI for only the first 18 samples */
+ tlci = 0.0;
+ for (i = 0; i < 24; i++) {
+ double de;
+
+//DBGF((DBGA,"\npatch %d\n",i+1));
+ reftoRGB->convert(reftoRGB, ref[i], &TLCI_2012_TCS[i]);
+ TLCI_camdisp(ref[i], ref[i], refwb);
+//DBGF((DBGA,"Ref[%d] XYZ = %f %f %f\n\n",i,ref[i][0],ref[i][1],ref[i][2]));
+
+ satoRGB->convert(satoRGB, sam[i], &TLCI_2012_TCS[i]);
+ TLCI_camdisp(sam[i], sam[i], sawb);
+//DBGF((DBGA,"Samp[%d] XYZ = %f %f %f\n\n",i,sam[i][0],sam[i][1],sam[i][2]));
+
+#ifdef DEBUG
+// {
+// double lab[3];
+// icmXYZ2Lab(&wtn, lab, ref[i]);
+// fprintf(stderr,"~1 ref Lab %f %f %f\n", lab[0], lab[1], lab[2]);
+// icmXYZ2Lab(&wtn, lab, sam[i]);
+// fprintf(stderr,"~1 sam Lab %f %f %f\n", lab[0], lab[1], lab[2]);
+// }
+#endif /* DEBUG */
+
+ de = icmXYZCIE2K(&wtn, ref[i], sam[i]);
+//DBGF((DBGA,"%d: DE2K = %f\n",i+1,de));
+//DBGF((DBGA,"%d: Q = %f\n",i+1,100.0/(1.0 + pow(de/3.16, 2.4))));
+
+ if (i < 18)
+ tlci += pow(de, 4.0);
+ }
+ tlci = pow(tlci/18.0, 1.0/4.0); /* Power average */
+//DBGF((DBGA,"Power average = %f\n",tlci));
+
+ tlci = 100.0/(1.0 + pow(tlci/3.16, 2.4));
+
+ reftoRGB->del(reftoRGB);
+ satoRGB->del(satoRGB);
+
+//DBGF((DBGA,"returning TLCI = %f\n",tlci));
+ sample->norm = sampnorm; /* Restore this */
+ return tlci;
+}
+
/* - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Compute Australian Radiation Protection and Nuclear Safety Agency (ARPANSA) */
/* Exposure to Ultraviolet Radiation exposure limits from a spectrum in mw/m-2/nm. */