colour.volume.solid_RoschMacAdam

colour.volume.solid_RoschMacAdam(cmfs=XYZ_ColourMatchingFunctions(name='CIE 1931 2 Degree Standard Observer', ...), illuminant=SpectralDistribution(name='1 Constant', ...), point_order='Bins', filter_jagged_points=False, **kwargs)

Generates the Rösch-MacAdam colour solid, i.e. CIE XYZ colourspace outer surface, for given colour matching functions using multi-spectral conversion of pulse waves to CIE XYZ tristimulus values.

Parameters
  • cmfs (XYZ_ColourMatchingFunctions, optional) – Standard observer colour matching functions.

  • illuminant (SpectralDistribution, optional) – Illuminant spectral distribution.

  • point_order (unicode, optional) – {‘Bins’, ‘Pulse Wave Width’}, Method for ordering the underlying pulse waves used to generate the Rösch-MacAdam colour solid. Bins is the default order, with Pulse Wave Width ordering, instead of iterating over the pulse wave widths first, iteration occurs over the bins, producing blocks of pulse waves with increasing width.

  • filter_jagged_points (bool, optional) –

    Whether to filter the underlying jagged pulses. When point_order is set to Pulse Wave Width, the pulses are ordered by increasing width. Because of the discrete nature of the underlying signal, the resulting pulses will be jagged. For example assuming 5 bins, the center block with the two extreme values added would be as follows:

    0 0 0 0 0
    0 0 1 0 0
    0 0 1 1 0 <--
    0 1 1 1 0
    0 1 1 1 1 <--
    1 1 1 1 1
    

    Setting the filter_jagged_points parameter to True will result in the removal of the two marked pulse waves above thus avoiding jagged lines when plotting and having to resort to excessive bins values.

Other Parameters

**kwargs (dict, optional) – {colour.msds_to_XYZ()}, Please refer to the documentation of the previously listed definition.

Returns

Rösch-MacAdam colour solid, CIE XYZ outer surface tristimulus values.

Return type

ndarray

References

[Lin15], [Man18], [MartinezVerduPC+07]

Examples

>>> from colour.colorimetry import SPECTRAL_SHAPE_DEFAULT
>>> shape = SpectralShape(
...     SPECTRAL_SHAPE_DEFAULT.start, SPECTRAL_SHAPE_DEFAULT.end, 84)
>>> cmfs = MSDS_CMFS['CIE 1931 2 Degree Standard Observer']
>>> XYZ_outer_surface(cmfs.copy().align(shape))  
array([[  0.0000000...e+00,   0.0000000...e+00,   0.0000000...e+00],
       [  9.6361381...e-05,   2.9056776...e-06,   4.4961226...e-04],
       [  2.5910529...e-01,   2.1031298...e-02,   1.3207468...e+00],
       [  1.0561021...e-01,   6.2038243...e-01,   3.5423571...e-02],
       [  7.2647980...e-01,   3.5460869...e-01,   2.1005149...e-04],
       [  1.0971874...e-02,   3.9635453...e-03,   0.0000000...e+00],
       [  3.0792572...e-05,   1.1119762...e-05,   0.0000000...e+00],
       [  2.5920165...e-01,   2.1034203...e-02,   1.3211965...e+00],
       [  3.6471551...e-01,   6.4141373...e-01,   1.3561704...e+00],
       [  8.3209002...e-01,   9.7499113...e-01,   3.5633622...e-02],
       [  7.3745167...e-01,   3.5857224...e-01,   2.1005149...e-04],
       [  1.1002667...e-02,   3.9746651...e-03,   0.0000000...e+00],
       [  1.2715395...e-04,   1.4025439...e-05,   4.4961226...e-04],
       [  3.6481187...e-01,   6.4141663...e-01,   1.3566200...e+00],
       [  1.0911953...e+00,   9.9602242...e-01,   1.3563805...e+00],
       [  8.4306189...e-01,   9.7895467...e-01,   3.5633622...e-02],
       [  7.3748247...e-01,   3.5858336...e-01,   2.1005149...e-04],
       [  1.1099028...e-02,   3.9775708...e-03,   4.4961226...e-04],
       [  2.5923244...e-01,   2.1045323...e-02,   1.3211965...e+00],
       [  1.0912916...e+00,   9.9602533...e-01,   1.3568301...e+00],
       [  1.1021671...e+00,   9.9998597...e-01,   1.3563805...e+00],
       [  8.4309268...e-01,   9.7896579...e-01,   3.5633622...e-02],
       [  7.3757883...e-01,   3.5858626...e-01,   6.5966375...e-04],
       [  2.7020432...e-01,   2.5008868...e-02,   1.3211965...e+00],
       [  3.6484266...e-01,   6.4142775...e-01,   1.3566200...e+00],
       [  1.1022635...e+00,   9.9998888...e-01,   1.3568301...e+00],
       [  1.1021979...e+00,   9.9999709...e-01,   1.3563805...e+00],
       [  8.4318905...e-01,   9.7896870...e-01,   3.6083235...e-02],
       [  9.9668412...e-01,   3.7961756...e-01,   1.3214065...e+00],
       [  3.7581454...e-01,   6.4539130...e-01,   1.3566200...e+00],
       [  1.0913224...e+00,   9.9603645...e-01,   1.3568301...e+00],
       [  1.1022943...e+00,   1.0000000...e+00,   1.3568301...e+00]])