001/*******************************************************************************
002 * This software is provided as a supplement to the authors' textbooks on digital
003 * image processing published by Springer-Verlag in various languages and editions.
004 * Permission to use and distribute this software is granted under the BSD 2-Clause
005 * "Simplified" License (see http://opensource.org/licenses/BSD-2-Clause).
006 * Copyright (c) 2006-2023 Wilhelm Burger, Mark J. Burge. All rights reserved.
007 * Visit https://imagingbook.com for additional details.
008 ******************************************************************************/
009package imagingbook.common.color.cie;
010
011import java.awt.geom.Path2D;
012
013/**
014 * This class renders the famous CIE xy-chromaticity diagram, also known as the "horeseshoe" curve, delineating the
015 * range of visible colors in the xy-diagram. The shape is created in a square canvas whose size can be specified.
016 * The result is "upside down", i.e., the vertical coordinate runs from top to bottom.
017 */
018public class CieXyPlot extends Path2D.Double {
019
020    private final double canvasSize;
021
022    /**
023     * Constructor, creates a xy-diagram in a canvas with the specified size.
024     *
025     * @param CanvasSize the size of the canvas
026     */
027    public CieXyPlot(double CanvasSize) {
028        this.canvasSize = CanvasSize;
029        this.drawSelf();
030    }
031
032    private void drawSelf() {
033        double[][] coords = CIE1964xyz;
034        for (int i = 0; i < coords.length; i++) {
035            double[] entry = coords[i];
036            double lambda = entry[0];
037            if (lambda > 720)           // limit to 720nm
038                break;
039            double X = entry[1];
040            double Y = entry[2];
041            double Z = entry[3];
042            double[] XYZ = {X, Y, Z};
043            double[] xy = CieUtils.XYZToxy(XYZ);
044            double xx = xy[0] * canvasSize;
045            double yy = (1 - xy[1]) * canvasSize;
046            if (i == 0) {
047                this.moveTo(xx, yy);
048            }
049            else {
050                this.lineTo(xx, yy);
051            }
052        }
053        this.closePath();
054    }
055
056    /**
057     * CIE 1964 10-deg chromaticity coordinates. Copied from
058     * <a href="http://www.cvrl.org/ccs.htm">http://www.cvrl.org/ccs.htm</a>.
059     * The entry format is [ λ, x(λ), y(λ), z(λ)], with wavelength λ (in nm) and xyz chromaticity coordinates. The array
060     * is truncated above 720nm, thereby skipping the "dangling" measurements.
061     */
062    public static final double[][] CIE1964xyz = {
063            {360, 0.182218, 0.019978, 0.797804},
064            {361, 0.182195, 0.019971, 0.797833},
065            {362, 0.182172, 0.019966, 0.797862},
066            {363, 0.182149, 0.019957, 0.797893},
067            {364, 0.182124, 0.019947, 0.797929},
068            {365, 0.182098, 0.019938, 0.797964},
069            {366, 0.182069, 0.019928, 0.798003},
070            {367, 0.182037, 0.019918, 0.798045},
071            {368, 0.182003, 0.019908, 0.798089},
072            {369, 0.181962, 0.019895, 0.798142},
073            {370, 0.181923, 0.019879, 0.798198},
074            {371, 0.181882, 0.019861, 0.798257},
075            {372, 0.181830, 0.019850, 0.798320},
076            {373, 0.181780, 0.019833, 0.798387},
077            {374, 0.181727, 0.019811, 0.798462},
078            {375, 0.181671, 0.019797, 0.798532},
079            {376, 0.181612, 0.019778, 0.798610},
080            {377, 0.181551, 0.019756, 0.798692},
081            {378, 0.181482, 0.019735, 0.798783},
082            {379, 0.181411, 0.019711, 0.798878},
083            {380, 0.181333, 0.019685, 0.798982},
084            {381, 0.181252, 0.019658, 0.799090},
085            {382, 0.181171, 0.019630, 0.799198},
086            {383, 0.181086, 0.019602, 0.799312},
087            {384, 0.180997, 0.019572, 0.799430},
088            {385, 0.180906, 0.019542, 0.799552},
089            {386, 0.180801, 0.019513, 0.799686},
090            {387, 0.180696, 0.019475, 0.799830},
091            {388, 0.180578, 0.019434, 0.799988},
092            {389, 0.180449, 0.019392, 0.800158},
093            {390, 0.180313, 0.019348, 0.800339},
094            {391, 0.180159, 0.019289, 0.800552},
095            {392, 0.180000, 0.019241, 0.800759},
096            {393, 0.179830, 0.019177, 0.800993},
097            {394, 0.179651, 0.019112, 0.801238},
098            {395, 0.179466, 0.019044, 0.801491},
099            {396, 0.179271, 0.018969, 0.801760},
100            {397, 0.179064, 0.018906, 0.802030},
101            {398, 0.178849, 0.018839, 0.802312},
102            {399, 0.178620, 0.018771, 0.802609},
103            {400, 0.178387, 0.018711, 0.802902},
104            {401, 0.178151, 0.018653, 0.803196},
105            {402, 0.177899, 0.018586, 0.803514},
106            {403, 0.177649, 0.018525, 0.803827},
107            {404, 0.177389, 0.018463, 0.804148},
108            {405, 0.177122, 0.018402, 0.804476},
109            {406, 0.176840, 0.018341, 0.804818},
110            {407, 0.176530, 0.018291, 0.805179},
111            {408, 0.176209, 0.018232, 0.805559},
112            {409, 0.175861, 0.018181, 0.805958},
113            {410, 0.175488, 0.018134, 0.806378},
114            {411, 0.175085, 0.018083, 0.806832},
115            {412, 0.174654, 0.018017, 0.807328},
116            {413, 0.174199, 0.017943, 0.807858},
117            {414, 0.173723, 0.017870, 0.808406},
118            {415, 0.173231, 0.017806, 0.808963},
119            {416, 0.172723, 0.017756, 0.809521},
120            {417, 0.172208, 0.017724, 0.810068},
121            {418, 0.171684, 0.017727, 0.810589},
122            {419, 0.171159, 0.017766, 0.811075},
123            {420, 0.170634, 0.017849, 0.811517},
124            {421, 0.170100, 0.017969, 0.811931},
125            {422, 0.169568, 0.018114, 0.812318},
126            {423, 0.169020, 0.018284, 0.812696},
127            {424, 0.168462, 0.018480, 0.813058},
128            {425, 0.167902, 0.018708, 0.813390},
129            {426, 0.167333, 0.018968, 0.813698},
130            {427, 0.166762, 0.019246, 0.813992},
131            {428, 0.166186, 0.019560, 0.814254},
132            {429, 0.165607, 0.019911, 0.814483},
133            {430, 0.165027, 0.020283, 0.814690},
134            {431, 0.164451, 0.020682, 0.814867},
135            {432, 0.163883, 0.021099, 0.815018},
136            {433, 0.163318, 0.021528, 0.815153},
137            {434, 0.162751, 0.021990, 0.815259},
138            {435, 0.162170, 0.022487, 0.815343},
139            {436, 0.161589, 0.023024, 0.815387},
140            {437, 0.160984, 0.023610, 0.815406},
141            {438, 0.160358, 0.024251, 0.815391},
142            {439, 0.159706, 0.024954, 0.815340},
143            {440, 0.159022, 0.025725, 0.815253},
144            {441, 0.158320, 0.026530, 0.815150},
145            {442, 0.157612, 0.027342, 0.815046},
146            {443, 0.156892, 0.028181, 0.814927},
147            {444, 0.156153, 0.029066, 0.814780},
148            {445, 0.155391, 0.030017, 0.814592},
149            {446, 0.154598, 0.031053, 0.814349},
150            {447, 0.153769, 0.032194, 0.814037},
151            {448, 0.152897, 0.033459, 0.813644},
152            {449, 0.151977, 0.034861, 0.813161},
153            {450, 0.151001, 0.036439, 0.812560},
154            {451, 0.150010, 0.038086, 0.811904},
155            {452, 0.149031, 0.039740, 0.811229},
156            {453, 0.148043, 0.041448, 0.810509},
157            {454, 0.147021, 0.043258, 0.809721},
158            {455, 0.145945, 0.045217, 0.808838},
159            {456, 0.144788, 0.047373, 0.807839},
160            {457, 0.143530, 0.049770, 0.806700},
161            {458, 0.142149, 0.052467, 0.805384},
162            {459, 0.140620, 0.055500, 0.803880},
163            {460, 0.138922, 0.058920, 0.802158},
164            {461, 0.137143, 0.062497, 0.800360},
165            {462, 0.135380, 0.066053, 0.798567},
166            {463, 0.133564, 0.069716, 0.796721},
167            {464, 0.131628, 0.073612, 0.794760},
168            {465, 0.129520, 0.077870, 0.792610},
169            {466, 0.127184, 0.082616, 0.790199},
170            {467, 0.124602, 0.087978, 0.787420},
171            {468, 0.121766, 0.094084, 0.784150},
172            {469, 0.118589, 0.101061, 0.780350},
173            {470, 0.115180, 0.109040, 0.775780},
174            {471, 0.111711, 0.117809, 0.770480},
175            {472, 0.108041, 0.127140, 0.764820},
176            {473, 0.104128, 0.137089, 0.758783},
177            {474, 0.100014, 0.147718, 0.752268},
178            {475, 0.095732, 0.159090, 0.745178},
179            {476, 0.091311, 0.171265, 0.737424},
180            {477, 0.086777, 0.184300, 0.728924},
181            {478, 0.082157, 0.198274, 0.719569},
182            {479, 0.077482, 0.213231, 0.709287},
183            {480, 0.072777, 0.229239, 0.697984},
184            {481, 0.067816, 0.246541, 0.685643},
185            {482, 0.062437, 0.265234, 0.672329},
186            {483, 0.056780, 0.285099, 0.658121},
187            {484, 0.050990, 0.305930, 0.643081},
188            {485, 0.045194, 0.327537, 0.627269},
189            {486, 0.039531, 0.349718, 0.610751},
190            {487, 0.034145, 0.372263, 0.593592},
191            {488, 0.029166, 0.394980, 0.575853},
192            {489, 0.024740, 0.417662, 0.557599},
193            {490, 0.020987, 0.440113, 0.538900},
194            {491, 0.017705, 0.463082, 0.519212},
195            {492, 0.014628, 0.487198, 0.498174},
196            {493, 0.011822, 0.512071, 0.476107},
197            {494, 0.009358, 0.537309, 0.453333},
198            {495, 0.007302, 0.562523, 0.430175},
199            {496, 0.005725, 0.587321, 0.406953},
200            {497, 0.004697, 0.611313, 0.383990},
201            {498, 0.004281, 0.634109, 0.361610},
202            {499, 0.004559, 0.655314, 0.340127},
203            {500, 0.005586, 0.674543, 0.319871},
204            {501, 0.007435, 0.692178, 0.300387},
205            {502, 0.010071, 0.708839, 0.281090},
206            {503, 0.013411, 0.724485, 0.262103},
207            {504, 0.017374, 0.739078, 0.243548},
208            {505, 0.021874, 0.752578, 0.225548},
209            {506, 0.026828, 0.764952, 0.208220},
210            {507, 0.032156, 0.776141, 0.191703},
211            {508, 0.037772, 0.786126, 0.176102},
212            {509, 0.043598, 0.794857, 0.161545},
213            {510, 0.049540, 0.802302, 0.148157},
214            {511, 0.055800, 0.808180, 0.136020},
215            {512, 0.062554, 0.812377, 0.125068},
216            {513, 0.069726, 0.815109, 0.115165},
217            {514, 0.077244, 0.816566, 0.106190},
218            {515, 0.085024, 0.816976, 0.098000},
219            {516, 0.092995, 0.816520, 0.090485},
220            {517, 0.101079, 0.815409, 0.083511},
221            {518, 0.109199, 0.813848, 0.076953},
222            {519, 0.117276, 0.812043, 0.070681},
223            {520, 0.125236, 0.810194, 0.064569},
224            {521, 0.133216, 0.807952, 0.058832},
225            {522, 0.141380, 0.804898, 0.053722},
226            {523, 0.149651, 0.801183, 0.049166},
227            {524, 0.158017, 0.796891, 0.045091},
228            {525, 0.166408, 0.792172, 0.041421},
229            {526, 0.174775, 0.787131, 0.038094},
230            {527, 0.183074, 0.781897, 0.035030},
231            {528, 0.191260, 0.776595, 0.032144},
232            {529, 0.199260, 0.771359, 0.029381},
233            {530, 0.207057, 0.766282, 0.026661},
234            {531, 0.214640, 0.761260, 0.024100},
235            {532, 0.222066, 0.756094, 0.021839},
236            {533, 0.229362, 0.750797, 0.019841},
237            {534, 0.236550, 0.745380, 0.018070},
238            {535, 0.243642, 0.739873, 0.016486},
239            {536, 0.250670, 0.734269, 0.015060},
240            {537, 0.257660, 0.728601, 0.013739},
241            {538, 0.264627, 0.722872, 0.012501},
242            {539, 0.271596, 0.717100, 0.011304},
243            {540, 0.278588, 0.711300, 0.010112},
244            {541, 0.285581, 0.705445, 0.008974},
245            {542, 0.292539, 0.699506, 0.007955},
246            {543, 0.299468, 0.693488, 0.007044},
247            {544, 0.306360, 0.687413, 0.006227},
248            {545, 0.313230, 0.681278, 0.005492},
249            {546, 0.320079, 0.675100, 0.004821},
250            {547, 0.326904, 0.668877, 0.004219},
251            {548, 0.333714, 0.662630, 0.003656},
252            {549, 0.340511, 0.656364, 0.003125},
253            {550, 0.347296, 0.650090, 0.002614},
254            {551, 0.354082, 0.643787, 0.002131},
255            {552, 0.360869, 0.637436, 0.001695},
256            {553, 0.367651, 0.631043, 0.001306},
257            {554, 0.374420, 0.624621, 0.000959},
258            {555, 0.381161, 0.618164, 0.000675},
259            {556, 0.387871, 0.611694, 0.000435},
260            {557, 0.394540, 0.605214, 0.000246},
261            {558, 0.401160, 0.598730, 0.000110},
262            {559, 0.407720, 0.592252, 0.000028},
263            {560, 0.414213, 0.585787, 0.000000 },
264            {561, 0.420698, 0.579302, 0.000000 },
265            {562, 0.427229, 0.572771, 0.000000},
266            {563, 0.433789, 0.566211, 0.000000},
267            {564, 0.440360, 0.559640, 0.000000},
268            {565, 0.446924, 0.553076, 0.000000},
269            {566, 0.453464, 0.546536, 0.000000},
270            {567, 0.459963, 0.540037, 0.000000},
271            {568, 0.466404, 0.533596, 0.000000},
272            {569, 0.472768, 0.527232, 0.000000},
273            {570, 0.479038, 0.520962, 0.000000},
274            {571, 0.485242, 0.514758, 0.000000},
275            {572, 0.491413, 0.508587, 0.000000},
276            {573, 0.497542, 0.502458, 0.000000},
277            {574, 0.503620, 0.496380, 0.000000},
278            {575, 0.509641, 0.490359, 0.000000},
279            {576, 0.515594, 0.484406, 0.000000},
280            {577, 0.521471, 0.478529, 0.000000},
281            {578, 0.527264, 0.472736, 0.000000},
282            {579, 0.532960, 0.467040, 0.000000},
283            {580, 0.538560, 0.461440, 0.000000},
284            {581, 0.544082, 0.455918, 0.000000},
285            {582, 0.549537, 0.450463, 0.000000},
286            {583, 0.554921, 0.445079, 0.000000},
287            {584, 0.560219, 0.439781, 0.000000},
288            {585, 0.565444, 0.434556, 0.000000},
289            {586, 0.570568, 0.429432, 0.000000},
290            {587, 0.575590, 0.424410, 0.000000},
291            {588, 0.580502, 0.419498, 0.000000},
292            {589, 0.585296, 0.414704, 0.000000},
293            {590, 0.589960, 0.410040, 0.000000},
294            {591, 0.594512, 0.405488, 0.000000},
295            {592, 0.598946, 0.401054, 0.000000},
296            {593, 0.603271, 0.396729, 0.000000},
297            {594, 0.607487, 0.392513, 0.000000},
298            {595, 0.611597, 0.388403, 0.000000},
299            {596, 0.615604, 0.384396, 0.000000},
300            {597, 0.619508, 0.380492, 0.000000},
301            {598, 0.623312, 0.376688, 0.000000},
302            {599, 0.627019, 0.372981, 0.000000},
303            {600, 0.630629, 0.369371, 0.000000},
304            {601, 0.634137, 0.365863, 0.000000},
305            {602, 0.637539, 0.362461, 0.000000},
306            {603, 0.640836, 0.359164, 0.000000},
307            {604, 0.644031, 0.355969, 0.000000},
308            {605, 0.647127, 0.352873, 0.000000},
309            {606, 0.650128, 0.349872, 0.000000},
310            {607, 0.653035, 0.346965, 0.000000},
311            {608, 0.655851, 0.344149, 0.000000},
312            {609, 0.658580, 0.341420, 0.000000},
313            {610, 0.661224, 0.338776, 0.000000},
314            {611, 0.663777, 0.336223, 0.000000},
315            {612, 0.666239, 0.333761, 0.000000},
316            {613, 0.668600, 0.331400, 0.000000},
317            {614, 0.670873, 0.329127, 0.000000},
318            {615, 0.673055, 0.326945, 0.000000},
319            {616, 0.675148, 0.324852, 0.000000},
320            {617, 0.677160, 0.322840, 0.000000},
321            {618, 0.679075, 0.320925, 0.000000},
322            {619, 0.680911, 0.319089, 0.000000},
323            {620, 0.682660, 0.317340, 0.000000},
324            {621, 0.684307, 0.315693, 0.000000},
325            {622, 0.685819, 0.314181, 0.000000},
326            {623, 0.687221, 0.312779, 0.000000},
327            {624, 0.688530, 0.311470, 0.000000},
328            {625, 0.689759, 0.310241, 0.000000},
329            {626, 0.690945, 0.309055, 0.000000},
330            {627, 0.692088, 0.307912, 0.000000},
331            {628, 0.693213, 0.306787, 0.000000},
332            {629, 0.694338, 0.305662, 0.000000},
333            {630, 0.695483, 0.304517, 0.000000},
334            {631, 0.696632, 0.303368, 0.000000},
335            {632, 0.697757, 0.302243, 0.000000},
336            {633, 0.698859, 0.301141, 0.000000},
337            {634, 0.699936, 0.300064, 0.000000},
338            {635, 0.700989, 0.299011, 0.000000},
339            {636, 0.702017, 0.297983, 0.000000},
340            {637, 0.703019, 0.296981, 0.000000},
341            {638, 0.703996, 0.296004, 0.000000},
342            {639, 0.704947, 0.295053, 0.000000},
343            {640, 0.705873, 0.294127, 0.000000},
344            {641, 0.706782, 0.293218, 0.000000},
345            {642, 0.707680, 0.292320, 0.000000},
346            {643, 0.708561, 0.291439, 0.000000},
347            {644, 0.709419, 0.290581, 0.000000},
348            {645, 0.710249, 0.289751, 0.000000},
349            {646, 0.711040, 0.288960, 0.000000},
350            {647, 0.711791, 0.288209, 0.000000},
351            {648, 0.712491, 0.287509, 0.000000},
352            {649, 0.713132, 0.286868, 0.000000},
353            {650, 0.713713, 0.286287, 0.000000},
354            {651, 0.714218, 0.285782, 0.000000},
355            {652, 0.714652, 0.285348, 0.000000},
356            {653, 0.715021, 0.284979, 0.000000},
357            {654, 0.715340, 0.284660, 0.000000},
358            {655, 0.715619, 0.284381, 0.000000},
359            {656, 0.715868, 0.284132, 0.000000},
360            {657, 0.716100, 0.283900, 0.000000},
361            {658, 0.716323, 0.283677, 0.000000},
362            {659, 0.716549, 0.283451, 0.000000},
363            {660, 0.716790, 0.283210, 0.000000},
364            {661, 0.717034, 0.282966, 0.000000},
365            {662, 0.717272, 0.282728, 0.000000},
366            {663, 0.717482, 0.282518, 0.000000},
367            {664, 0.717692, 0.282308, 0.000000},
368            {665, 0.717887, 0.282113, 0.000000},
369            {666, 0.718080, 0.281920, 0.000000},
370            {667, 0.718252, 0.281748, 0.000000},
371            {668, 0.718420, 0.281580, 0.000000},
372            {669, 0.718580, 0.281420, 0.000000},
373            {670, 0.718732, 0.281268, 0.000000},
374            {671, 0.718875, 0.281125, 0.000000},
375            {672, 0.719007, 0.280993, 0.000000},
376            {673, 0.719128, 0.280872, 0.000000},
377            {674, 0.719240, 0.280760, 0.000000},
378            {675, 0.719344, 0.280656, 0.000000},
379            {676, 0.719440, 0.280560, 0.000000},
380            {677, 0.719529, 0.280471, 0.000000},
381            {678, 0.719612, 0.280388, 0.000000},
382            {679, 0.719689, 0.280311, 0.000000},
383            {680, 0.719763, 0.280237, 0.000000},
384            {681, 0.719830, 0.280170, 0.000000},
385            {682, 0.719888, 0.280112, 0.000000},
386            {683, 0.719935, 0.280065, 0.000000},
387            {684, 0.719980, 0.280020, 0.000000},
388            {685, 0.720016, 0.279984, 0.000000},
389            {686, 0.720050, 0.279950, 0.000000},
390            {687, 0.720081, 0.279919, 0.000000},
391            {688, 0.720107, 0.279893, 0.000000},
392            {689, 0.720139, 0.279861, 0.000000},
393            {690, 0.720160, 0.279840, 0.000000},
394            {691, 0.720194, 0.279806, 0.000000},
395            {692, 0.720221, 0.279779, 0.000000},
396            {693, 0.720247, 0.279753, 0.000000},
397            {694, 0.720275, 0.279725, 0.000000},
398            {695, 0.720296, 0.279704, 0.000000},
399            {696, 0.720314, 0.279686, 0.000000},
400            {697, 0.720331, 0.279669, 0.000000},
401            {698, 0.720344, 0.279656, 0.000000},
402            {699, 0.720354, 0.279646, 0.000000},
403            {700, 0.720358, 0.279642, 0.000000},
404            {701, 0.720359, 0.279641, 0.000000},
405            {702, 0.720355, 0.279645, 0.000000},
406            {703, 0.720348, 0.279652, 0.000000},
407            {704, 0.720338, 0.279662, 0.000000},
408            {705, 0.720324, 0.279676, 0.000000},
409            {706, 0.720308, 0.279692, 0.000000},
410            {707, 0.720290, 0.279710, 0.000000},
411            {708, 0.720270, 0.279730, 0.000000},
412            {709, 0.720248, 0.279752, 0.000000},
413            {710, 0.720227, 0.279773, 0.000000},
414            {711, 0.720205, 0.279795, 0.000000},
415            {712, 0.720178, 0.279822, 0.000000},
416            {713, 0.720150, 0.279850, 0.000000},
417            {714, 0.720121, 0.279879, 0.000000},
418            {715, 0.720090, 0.279910, 0.000000},
419            {716, 0.720056, 0.279944, 0.000000},
420            {717, 0.720022, 0.279978, 0.000000},
421            {718, 0.719987, 0.280013, 0.000000},
422            {719, 0.719949, 0.280051, 0.000000},
423            {720, 0.719911, 0.280089, 0.000000},
424            {721, 0.719871, 0.280129, 0.000000},
425            {722, 0.719829, 0.280171, 0.000000},
426            {723, 0.719783, 0.280217, 0.000000},
427            {724, 0.719739, 0.280261, 0.000000},
428            {725, 0.719694, 0.280306, 0.000000},
429            {726, 0.719638, 0.280362, 0.000000},
430            {727, 0.719598, 0.280402, 0.000000},
431            {728, 0.719546, 0.280454, 0.000000},
432            {729, 0.719495, 0.280505, 0.000000},
433            {730, 0.719447, 0.280553, 0.000000},
434            {731, 0.719396, 0.280604, 0.000000},
435            {732, 0.719345, 0.280655, 0.000000},
436            {733, 0.719293, 0.280707, 0.000000},
437            {734, 0.719240, 0.280760, 0.000000},
438            {735, 0.719186, 0.280814, 0.000000},
439            {736, 0.719131, 0.280869, 0.000000},
440            {737, 0.719076, 0.280924, 0.000000},
441            {738, 0.719020, 0.280980, 0.000000},
442            {739, 0.718963, 0.281037, 0.000000},
443            {740, 0.718906, 0.281094, 0.000000},
444            {741, 0.718848, 0.281152, 0.000000},
445            {742, 0.718789, 0.281211, 0.000000},
446            {743, 0.718730, 0.281270, 0.000000},
447            {744, 0.718669, 0.281331, 0.000000},
448            {745, 0.718609, 0.281391, 0.000000},
449            {746, 0.718548, 0.281452, 0.000000},
450            {747, 0.718480, 0.281520, 0.000000},
451            {748, 0.718422, 0.281578, 0.000000},
452            {749, 0.718357, 0.281643, 0.000000},
453            {750, 0.718292, 0.281708, 0.000000},
454            {751, 0.718228, 0.281772, 0.000000},
455            {752, 0.718160, 0.281840, 0.000000},
456            {753, 0.718099, 0.281901, 0.000000},
457            {754, 0.718028, 0.281972, 0.000000},
458            {755, 0.717959, 0.282041, 0.000000},
459            {756, 0.717888, 0.282112, 0.000000},
460            {757, 0.717821, 0.282179, 0.000000},
461            {758, 0.717748, 0.282252, 0.000000},
462            {759, 0.717677, 0.282323, 0.000000},
463            {760, 0.717607, 0.282393, 0.000000},
464            {761, 0.717536, 0.282464, 0.000000},
465            {762, 0.717462, 0.282538, 0.000000},
466            {763, 0.717391, 0.282609, 0.000000},
467            {764, 0.717319, 0.282681, 0.000000},
468            {765, 0.717240, 0.282760, 0.000000},
469            {766, 0.717159, 0.282841, 0.000000},
470            {767, 0.717089, 0.282911, 0.000000},
471            {768, 0.717013, 0.282987, 0.000000},
472            {769, 0.716936, 0.283064, 0.000000},
473            {770, 0.716859, 0.283141, 0.000000},
474            {771, 0.716781, 0.283219, 0.000000},
475            {772, 0.716703, 0.283297, 0.000000},
476            {773, 0.716624, 0.283376, 0.000000},
477            {774, 0.716544, 0.283456, 0.000000},
478            {775, 0.716464, 0.283536, 0.000000},
479            {776, 0.716384, 0.283616, 0.000000},
480            {777, 0.716303, 0.283697, 0.000000},
481            {778, 0.716221, 0.283779, 0.000000},
482            {779, 0.716139, 0.283861, 0.000000},
483            {780, 0.716057, 0.283943, 0.000000},
484            {781, 0.715974, 0.284026, 0.000000},
485            {782, 0.715890, 0.284110, 0.000000},
486            {783, 0.715807, 0.284193, 0.000000},
487            {784, 0.715722, 0.284278, 0.000000},
488            {785, 0.715637, 0.284363, 0.000000},
489            {786, 0.715553, 0.284447, 0.000000},
490            {787, 0.715466, 0.284534, 0.000000},
491            {788, 0.715380, 0.284620, 0.000000},
492            {789, 0.715293, 0.284707, 0.000000},
493            {790, 0.715208, 0.284792, 0.000000},
494            {791, 0.715120, 0.284880, 0.000000},
495            {792, 0.715033, 0.284967, 0.000000},
496            {793, 0.714948, 0.285052, 0.000000},
497            {794, 0.714860, 0.285140, 0.000000},
498            {795, 0.714770, 0.285230, 0.000000},
499            {796, 0.714683, 0.285317, 0.000000},
500            {797, 0.714592, 0.285408, 0.000000},
501            {798, 0.714501, 0.285499, 0.000000},
502            {799, 0.714418, 0.285582, 0.000000},
503            {800, 0.714325, 0.285675, 0.000000},
504            {801, 0.714240, 0.285760, 0.000000},
505            {802, 0.714145, 0.285855, 0.000000},
506            {803, 0.714054, 0.285946, 0.000000},
507            {804, 0.713963, 0.286037, 0.000000},
508            {805, 0.713872, 0.286128, 0.000000},
509            {806, 0.713780, 0.286220, 0.000000},
510            {807, 0.713688, 0.286312, 0.000000},
511            {808, 0.713596, 0.286404, 0.000000},
512            {809, 0.713504, 0.286496, 0.000000},
513            {810, 0.713411, 0.286589, 0.000000},
514            {811, 0.713319, 0.286681, 0.000000},
515            {812, 0.713224, 0.286776, 0.000000},
516            {813, 0.713131, 0.286869, 0.000000},
517            {814, 0.713038, 0.286962, 0.000000},
518            {815, 0.712943, 0.287057, 0.000000},
519            {816, 0.712849, 0.287151, 0.000000},
520            {817, 0.712759, 0.287241, 0.000000},
521            {818, 0.712661, 0.287339, 0.000000},
522            {819, 0.712567, 0.287433, 0.000000},
523            {820, 0.712471, 0.287529, 0.000000},
524            {821, 0.712377, 0.287623, 0.000000},
525            {822, 0.712284, 0.287716, 0.000000},
526            {823, 0.712187, 0.287813, 0.000000},
527            {824, 0.712095, 0.287905, 0.000000},
528            {825, 0.711999, 0.288001, 0.000000},
529            {826, 0.711903, 0.288097, 0.000000},
530            {827, 0.711809, 0.288191, 0.000000},
531            {828, 0.711713, 0.288287, 0.000000},
532            {829, 0.711619, 0.288381, 0.000000},
533            {830, 0.711523, 0.288477, 0.000000}
534    };
535}