Coverage for colour/models/datasets/pointer_gamut.py: 100%
17 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-15 19:01 +1300
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-15 19:01 +1300
1"""
2Pointer's Gamut
3===============
5Define the *Pointer's Gamut* data for real surface colours.
7This module provides the data representing the gamut of real surface colours
8as measured by Pointer (1980). The data includes the gamut volume in
9*CIE L\\*C\\*Hab* colourspace and boundary chromaticity coordinates.
11References
12----------
13- :cite:`Pointer1980a` : Pointer, M. R. (1980). Pointer's Gamut Data.
14 http://www.cis.rit.edu/research/mcsl2/online/PointerData.xls
15"""
17from __future__ import annotations
19import typing
21import numpy as np
23from colour.colorimetry import CCS_LIGHT_SOURCES
25if typing.TYPE_CHECKING:
26 from colour.hints import NDArrayFloat
28__author__ = "Colour Developers"
29__copyright__ = "Copyright 2013 Colour Developers"
30__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
31__maintainer__ = "Colour Developers"
32__email__ = "colour-developers@colour-science.org"
33__status__ = "Production"
35__all__ = [
36 "CCS_ILLUMINANT_POINTER_GAMUT",
37 "DATA_POINTER_GAMUT_VOLUME",
38 "CCS_POINTER_GAMUT_BOUNDARY",
39]
41CCS_ILLUMINANT_POINTER_GAMUT: NDArrayFloat = CCS_LIGHT_SOURCES[
42 "CIE 1931 2 Degree Standard Observer"
43]["SC"]
44"""
45*Pointer's Gamut* illuminant, i.e., *SC*.
47References
48----------
49:cite:`Pointer1980a`
50"""
52DATA_POINTER_GAMUT_VOLUME: NDArrayFloat = np.array(
53 [
54 [15, 10, 0],
55 [15, 15, 10],
56 [15, 14, 20],
57 [15, 35, 30],
58 [15, 27, 40],
59 [15, 10, 50],
60 [15, 4, 60],
61 [15, 5, 70],
62 [15, 6, 80],
63 [15, 4, 90],
64 [15, 9, 100],
65 [15, 9, 110],
66 [15, 4, 120],
67 [15, 5, 130],
68 [15, 7, 140],
69 [15, 7, 150],
70 [15, 8, 160],
71 [15, 13, 170],
72 [15, 10, 180],
73 [15, 7, 190],
74 [15, 5, 200],
75 [15, 0, 210],
76 [15, 2, 220],
77 [15, 10, 230],
78 [15, 8, 240],
79 [15, 9, 250],
80 [15, 12, 260],
81 [15, 14, 270],
82 [15, 10, 280],
83 [15, 20, 290],
84 [15, 30, 300],
85 [15, 62, 310],
86 [15, 60, 320],
87 [15, 20, 330],
88 [15, 26, 340],
89 [15, 15, 350],
90 [20, 30, 0],
91 [20, 30, 10],
92 [20, 34, 20],
93 [20, 48, 30],
94 [20, 40, 40],
95 [20, 21, 50],
96 [20, 15, 60],
97 [20, 15, 70],
98 [20, 15, 80],
99 [20, 12, 90],
100 [20, 16, 100],
101 [20, 18, 110],
102 [20, 14, 120],
103 [20, 18, 130],
104 [20, 20, 140],
105 [20, 21, 150],
106 [20, 24, 160],
107 [20, 25, 170],
108 [20, 25, 180],
109 [20, 19, 190],
110 [20, 19, 200],
111 [20, 12, 210],
112 [20, 12, 220],
113 [20, 20, 230],
114 [20, 16, 240],
115 [20, 21, 250],
116 [20, 24, 260],
117 [20, 31, 270],
118 [20, 29, 280],
119 [20, 40, 290],
120 [20, 55, 300],
121 [20, 76, 310],
122 [20, 71, 320],
123 [20, 50, 330],
124 [20, 49, 340],
125 [20, 37, 350],
126 [25, 43, 0],
127 [25, 45, 10],
128 [25, 49, 20],
129 [25, 59, 30],
130 [25, 53, 40],
131 [25, 34, 50],
132 [25, 26, 60],
133 [25, 25, 70],
134 [25, 24, 80],
135 [25, 20, 90],
136 [25, 23, 100],
137 [25, 27, 110],
138 [25, 23, 120],
139 [25, 30, 130],
140 [25, 32, 140],
141 [25, 34, 150],
142 [25, 36, 160],
143 [25, 36, 170],
144 [25, 38, 180],
145 [25, 30, 190],
146 [25, 29, 200],
147 [25, 17, 210],
148 [25, 20, 220],
149 [25, 29, 230],
150 [25, 26, 240],
151 [25, 32, 250],
152 [25, 34, 260],
153 [25, 42, 270],
154 [25, 45, 280],
155 [25, 60, 290],
156 [25, 72, 300],
157 [25, 85, 310],
158 [25, 79, 320],
159 [25, 72, 330],
160 [25, 63, 340],
161 [25, 52, 350],
162 [30, 56, 0],
163 [30, 56, 10],
164 [30, 61, 20],
165 [30, 68, 30],
166 [30, 66, 40],
167 [30, 45, 50],
168 [30, 37, 60],
169 [30, 36, 70],
170 [30, 32, 80],
171 [30, 28, 90],
172 [30, 30, 100],
173 [30, 35, 110],
174 [30, 32, 120],
175 [30, 40, 130],
176 [30, 42, 140],
177 [30, 45, 150],
178 [30, 48, 160],
179 [30, 47, 170],
180 [30, 48, 180],
181 [30, 40, 190],
182 [30, 37, 200],
183 [30, 26, 210],
184 [30, 28, 220],
185 [30, 36, 230],
186 [30, 34, 240],
187 [30, 40, 250],
188 [30, 41, 260],
189 [30, 50, 270],
190 [30, 55, 280],
191 [30, 69, 290],
192 [30, 81, 300],
193 [30, 88, 310],
194 [30, 84, 320],
195 [30, 86, 330],
196 [30, 73, 340],
197 [30, 65, 350],
198 [35, 68, 0],
199 [35, 64, 10],
200 [35, 69, 20],
201 [35, 75, 30],
202 [35, 79, 40],
203 [35, 60, 50],
204 [35, 48, 60],
205 [35, 46, 70],
206 [35, 40, 80],
207 [35, 36, 90],
208 [35, 37, 100],
209 [35, 44, 110],
210 [35, 41, 120],
211 [35, 48, 130],
212 [35, 52, 140],
213 [35, 57, 150],
214 [35, 58, 160],
215 [35, 57, 170],
216 [35, 57, 180],
217 [35, 48, 190],
218 [35, 42, 200],
219 [35, 34, 210],
220 [35, 35, 220],
221 [35, 42, 230],
222 [35, 41, 240],
223 [35, 49, 250],
224 [35, 46, 260],
225 [35, 55, 270],
226 [35, 60, 280],
227 [35, 71, 290],
228 [35, 79, 300],
229 [35, 85, 310],
230 [35, 85, 320],
231 [35, 89, 330],
232 [35, 82, 340],
233 [35, 73, 350],
234 [40, 77, 0],
235 [40, 70, 10],
236 [40, 74, 20],
237 [40, 82, 30],
238 [40, 90, 40],
239 [40, 75, 50],
240 [40, 59, 60],
241 [40, 56, 70],
242 [40, 48, 80],
243 [40, 44, 90],
244 [40, 45, 100],
245 [40, 52, 110],
246 [40, 49, 120],
247 [40, 56, 130],
248 [40, 60, 140],
249 [40, 68, 150],
250 [40, 68, 160],
251 [40, 65, 170],
252 [40, 64, 180],
253 [40, 55, 190],
254 [40, 45, 200],
255 [40, 43, 210],
256 [40, 40, 220],
257 [40, 46, 230],
258 [40, 47, 240],
259 [40, 54, 250],
260 [40, 51, 260],
261 [40, 60, 270],
262 [40, 61, 280],
263 [40, 69, 290],
264 [40, 72, 300],
265 [40, 80, 310],
266 [40, 86, 320],
267 [40, 89, 330],
268 [40, 87, 340],
269 [40, 79, 350],
270 [45, 79, 0],
271 [45, 73, 10],
272 [45, 76, 20],
273 [45, 84, 30],
274 [45, 94, 40],
275 [45, 90, 50],
276 [45, 70, 60],
277 [45, 67, 70],
278 [45, 55, 80],
279 [45, 53, 90],
280 [45, 51, 100],
281 [45, 59, 110],
282 [45, 57, 120],
283 [45, 64, 130],
284 [45, 69, 140],
285 [45, 75, 150],
286 [45, 76, 160],
287 [45, 70, 170],
288 [45, 69, 180],
289 [45, 59, 190],
290 [45, 46, 200],
291 [45, 49, 210],
292 [45, 45, 220],
293 [45, 49, 230],
294 [45, 49, 240],
295 [45, 55, 250],
296 [45, 55, 260],
297 [45, 60, 270],
298 [45, 60, 280],
299 [45, 65, 290],
300 [45, 64, 300],
301 [45, 71, 310],
302 [45, 82, 320],
303 [45, 86, 330],
304 [45, 87, 340],
305 [45, 82, 350],
306 [50, 77, 0],
307 [50, 73, 10],
308 [50, 76, 20],
309 [50, 83, 30],
310 [50, 93, 40],
311 [50, 100, 50],
312 [50, 82, 60],
313 [50, 76, 70],
314 [50, 64, 80],
315 [50, 60, 90],
316 [50, 58, 100],
317 [50, 66, 110],
318 [50, 64, 120],
319 [50, 70, 130],
320 [50, 76, 140],
321 [50, 81, 150],
322 [50, 82, 160],
323 [50, 75, 170],
324 [50, 71, 180],
325 [50, 62, 190],
326 [50, 46, 200],
327 [50, 51, 210],
328 [50, 48, 220],
329 [50, 51, 230],
330 [50, 50, 240],
331 [50, 55, 250],
332 [50, 56, 260],
333 [50, 57, 270],
334 [50, 57, 280],
335 [50, 58, 290],
336 [50, 57, 300],
337 [50, 62, 310],
338 [50, 74, 320],
339 [50, 80, 330],
340 [50, 83, 340],
341 [50, 84, 350],
342 [55, 72, 0],
343 [55, 71, 10],
344 [55, 74, 20],
345 [55, 80, 30],
346 [55, 88, 40],
347 [55, 102, 50],
348 [55, 93, 60],
349 [55, 85, 70],
350 [55, 72, 80],
351 [55, 68, 90],
352 [55, 65, 100],
353 [55, 74, 110],
354 [55, 71, 120],
355 [55, 77, 130],
356 [55, 82, 140],
357 [55, 84, 150],
358 [55, 85, 160],
359 [55, 76, 170],
360 [55, 72, 180],
361 [55, 62, 190],
362 [55, 45, 200],
363 [55, 54, 210],
364 [55, 51, 220],
365 [55, 52, 230],
366 [55, 50, 240],
367 [55, 52, 250],
368 [55, 51, 260],
369 [55, 50, 270],
370 [55, 53, 280],
371 [55, 50, 290],
372 [55, 50, 300],
373 [55, 55, 310],
374 [55, 66, 320],
375 [55, 72, 330],
376 [55, 78, 340],
377 [55, 79, 350],
378 [60, 65, 0],
379 [60, 65, 10],
380 [60, 68, 20],
381 [60, 75, 30],
382 [60, 82, 40],
383 [60, 99, 50],
384 [60, 103, 60],
385 [60, 94, 70],
386 [60, 82, 80],
387 [60, 75, 90],
388 [60, 72, 100],
389 [60, 82, 110],
390 [60, 78, 120],
391 [60, 82, 130],
392 [60, 87, 140],
393 [60, 84, 150],
394 [60, 83, 160],
395 [60, 75, 170],
396 [60, 69, 180],
397 [60, 60, 190],
398 [60, 43, 200],
399 [60, 50, 210],
400 [60, 49, 220],
401 [60, 50, 230],
402 [60, 47, 240],
403 [60, 48, 250],
404 [60, 46, 260],
405 [60, 45, 270],
406 [60, 46, 280],
407 [60, 43, 290],
408 [60, 42, 300],
409 [60, 47, 310],
410 [60, 57, 320],
411 [60, 63, 330],
412 [60, 71, 340],
413 [60, 73, 350],
414 [65, 57, 0],
415 [65, 57, 10],
416 [65, 61, 20],
417 [65, 67, 30],
418 [65, 72, 40],
419 [65, 88, 50],
420 [65, 106, 60],
421 [65, 102, 70],
422 [65, 94, 80],
423 [65, 83, 90],
424 [65, 80, 100],
425 [65, 87, 110],
426 [65, 84, 120],
427 [65, 85, 130],
428 [65, 89, 140],
429 [65, 83, 150],
430 [65, 78, 160],
431 [65, 71, 170],
432 [65, 64, 180],
433 [65, 55, 190],
434 [65, 39, 200],
435 [65, 46, 210],
436 [65, 45, 220],
437 [65, 45, 230],
438 [65, 42, 240],
439 [65, 43, 250],
440 [65, 40, 260],
441 [65, 39, 270],
442 [65, 40, 280],
443 [65, 36, 290],
444 [65, 35, 300],
445 [65, 41, 310],
446 [65, 48, 320],
447 [65, 54, 330],
448 [65, 62, 340],
449 [65, 63, 350],
450 [70, 50, 0],
451 [70, 48, 10],
452 [70, 51, 20],
453 [70, 56, 30],
454 [70, 60, 40],
455 [70, 75, 50],
456 [70, 98, 60],
457 [70, 108, 70],
458 [70, 105, 80],
459 [70, 90, 90],
460 [70, 86, 100],
461 [70, 92, 110],
462 [70, 90, 120],
463 [70, 88, 130],
464 [70, 90, 140],
465 [70, 80, 150],
466 [70, 69, 160],
467 [70, 65, 170],
468 [70, 60, 180],
469 [70, 49, 190],
470 [70, 35, 200],
471 [70, 40, 210],
472 [70, 38, 220],
473 [70, 39, 230],
474 [70, 36, 240],
475 [70, 36, 250],
476 [70, 33, 260],
477 [70, 33, 270],
478 [70, 34, 280],
479 [70, 29, 290],
480 [70, 30, 300],
481 [70, 34, 310],
482 [70, 40, 320],
483 [70, 45, 330],
484 [70, 51, 340],
485 [70, 53, 350],
486 [75, 40, 0],
487 [75, 39, 10],
488 [75, 40, 20],
489 [75, 45, 30],
490 [75, 47, 40],
491 [75, 59, 50],
492 [75, 85, 60],
493 [75, 103, 70],
494 [75, 115, 80],
495 [75, 98, 90],
496 [75, 94, 100],
497 [75, 95, 110],
498 [75, 94, 120],
499 [75, 89, 130],
500 [75, 83, 140],
501 [75, 72, 150],
502 [75, 59, 160],
503 [75, 57, 170],
504 [75, 51, 180],
505 [75, 41, 190],
506 [75, 30, 200],
507 [75, 32, 210],
508 [75, 32, 220],
509 [75, 32, 230],
510 [75, 29, 240],
511 [75, 29, 250],
512 [75, 27, 260],
513 [75, 26, 270],
514 [75, 25, 280],
515 [75, 24, 290],
516 [75, 24, 300],
517 [75, 27, 310],
518 [75, 31, 320],
519 [75, 36, 330],
520 [75, 40, 340],
521 [75, 40, 350],
522 [80, 30, 0],
523 [80, 30, 10],
524 [80, 30, 20],
525 [80, 33, 30],
526 [80, 35, 40],
527 [80, 45, 50],
528 [80, 66, 60],
529 [80, 82, 70],
530 [80, 115, 80],
531 [80, 106, 90],
532 [80, 100, 100],
533 [80, 100, 110],
534 [80, 95, 120],
535 [80, 84, 130],
536 [80, 71, 140],
537 [80, 58, 150],
538 [80, 49, 160],
539 [80, 45, 170],
540 [80, 41, 180],
541 [80, 32, 190],
542 [80, 22, 200],
543 [80, 24, 210],
544 [80, 23, 220],
545 [80, 24, 230],
546 [80, 21, 240],
547 [80, 21, 250],
548 [80, 20, 260],
549 [80, 20, 270],
550 [80, 18, 280],
551 [80, 18, 290],
552 [80, 17, 300],
553 [80, 20, 310],
554 [80, 24, 320],
555 [80, 27, 330],
556 [80, 28, 340],
557 [80, 30, 350],
558 [85, 19, 0],
559 [85, 18, 10],
560 [85, 19, 20],
561 [85, 21, 30],
562 [85, 22, 40],
563 [85, 30, 50],
564 [85, 45, 60],
565 [85, 58, 70],
566 [85, 83, 80],
567 [85, 111, 90],
568 [85, 106, 100],
569 [85, 96, 110],
570 [85, 83, 120],
571 [85, 64, 130],
572 [85, 54, 140],
573 [85, 44, 150],
574 [85, 34, 160],
575 [85, 30, 170],
576 [85, 29, 180],
577 [85, 23, 190],
578 [85, 14, 200],
579 [85, 14, 210],
580 [85, 15, 220],
581 [85, 15, 230],
582 [85, 12, 240],
583 [85, 13, 250],
584 [85, 13, 260],
585 [85, 13, 270],
586 [85, 11, 280],
587 [85, 12, 290],
588 [85, 12, 300],
589 [85, 14, 310],
590 [85, 16, 320],
591 [85, 18, 330],
592 [85, 18, 340],
593 [85, 17, 350],
594 [90, 8, 0],
595 [90, 7, 10],
596 [90, 9, 20],
597 [90, 10, 30],
598 [90, 10, 40],
599 [90, 15, 50],
600 [90, 23, 60],
601 [90, 34, 70],
602 [90, 48, 80],
603 [90, 90, 90],
604 [90, 108, 100],
605 [90, 84, 110],
606 [90, 50, 120],
607 [90, 35, 130],
608 [90, 30, 140],
609 [90, 20, 150],
610 [90, 15, 160],
611 [90, 15, 170],
612 [90, 16, 180],
613 [90, 13, 190],
614 [90, 7, 200],
615 [90, 4, 210],
616 [90, 6, 220],
617 [90, 7, 230],
618 [90, 4, 240],
619 [90, 4, 250],
620 [90, 6, 260],
621 [90, 6, 270],
622 [90, 4, 280],
623 [90, 5, 290],
624 [90, 5, 300],
625 [90, 6, 310],
626 [90, 8, 320],
627 [90, 9, 330],
628 [90, 4, 340],
629 [90, 6, 350],
630 ]
631)
632"""
633*CIE L\\*C\\*Hab* colourspace array of *Pointer's Gamut* volume.
635References
636----------
637:cite:`Pointer1980a`
638"""
640CCS_POINTER_GAMUT_BOUNDARY: NDArrayFloat = np.array(
641 [
642 [0.659, 0.316],
643 [0.634, 0.351],
644 [0.594, 0.391],
645 [0.557, 0.427],
646 [0.523, 0.462],
647 [0.482, 0.491],
648 [0.444, 0.515],
649 [0.409, 0.546],
650 [0.371, 0.558],
651 [0.332, 0.573],
652 [0.288, 0.584],
653 [0.242, 0.576],
654 [0.202, 0.530],
655 [0.177, 0.454],
656 [0.151, 0.389],
657 [0.151, 0.330],
658 [0.162, 0.295],
659 [0.157, 0.266],
660 [0.159, 0.245],
661 [0.142, 0.214],
662 [0.141, 0.195],
663 [0.129, 0.168],
664 [0.138, 0.141],
665 [0.145, 0.129],
666 [0.145, 0.106],
667 [0.161, 0.094],
668 [0.188, 0.084],
669 [0.252, 0.104],
670 [0.324, 0.127],
671 [0.393, 0.165],
672 [0.451, 0.199],
673 [0.508, 0.226],
674 ]
675)
676"""
677*CIE xy* chromaticity coordinates of *Pointer's Gamut* boundaries.
679References
680----------
681:cite:`Pointer1980a`
682"""