colorspace 0.1.0

A crate for colorimetry covering spectral, RGB, XYZ, L*a'b' and conversions thereof
Documentation
pub mod xy {
    use crate::*;

    pub const D50: XYY<f64> = XYY {
        x: 0.34570,
        y: 0.35850,
        Y: 1.0,
    };
    pub const D55: XYY<f64> = XYY {
        x: 0.33243,
        y: 0.34744,
        Y: 1.0,
    };
    pub const D60: XYY<f64> = XYY {
        x: 0.321626242047397,
        y: 0.337736995955436,
        Y: 1.0,
    };
    pub const D65: XYY<f64> = XYY {
        x: 0.31270,
        y: 0.32900,
        Y: 1.0,
    };
    pub const DCI_P3: XYY<f64> = XYY {
        x: 0.31400,
        y: 0.35100,
        Y: 1.0,
    };
    pub const ACES: XYY<f64> = XYY {
        x: 0.32168,
        y: 0.33767,
        Y: 1.0,
    };

}

pub mod spd {
    use crate::*;
    use lazy_static::lazy_static;

    lazy_static! {
        pub static ref D50: VSPD = vspd!(
        300.0 => 0.019,
        305.0 => 1.035,
        310.0 => 2.051,
        315.0 => 4.914,
        320.0 => 7.778,
        325.0 => 11.263,
        330.0 => 14.748,
        335.0 => 16.348,
        340.0 => 17.948,
        345.0 => 19.479,
        350.0 => 21.010,
        355.0 => 22.476,
        360.0 => 23.942,
        365.0 => 25.451,
        370.0 => 26.961,
        375.0 => 25.724,
        380.0 => 24.488,
        385.0 => 27.179,
        390.0 => 29.871,
        395.0 => 39.589,
        400.0 => 49.308,
        405.0 => 52.910,
        410.0 => 56.513,
        415.0 => 58.273,
        420.0 => 60.034,
        425.0 => 58.926,
        430.0 => 57.818,
        435.0 => 66.321,
        440.0 => 74.825,
        445.0 => 81.036,
        450.0 => 87.247,
        455.0 => 88.930,
        460.0 => 90.612,
        465.0 => 90.990,
        470.0 => 91.368,
        475.0 => 93.238,
        480.0 => 95.109,
        485.0 => 93.536,
        490.0 => 91.963,
        495.0 => 93.843,
        500.0 => 95.724,
        505.0 => 96.169,
        510.0 => 96.613,
        515.0 => 96.871,
        520.0 => 97.129,
        525.0 => 99.614,
        530.0 => 102.099,
        535.0 => 101.427,
        540.0 => 100.755,
        545.0 => 101.536,
        550.0 => 102.317,
        555.0 => 101.159,
        560.0 => 100.000,
        565.0 => 98.868,
        570.0 => 97.735,
        575.0 => 98.327,
        580.0 => 98.918,
        585.0 => 96.208,
        590.0 => 93.499,
        595.0 => 95.593,
        600.0 => 97.688,
        605.0 => 98.478,
        610.0 => 99.269,
        615.0 => 99.155,
        620.0 => 99.042,
        625.0 => 97.382,
        630.0 => 95.722,
        635.0 => 97.290,
        640.0 => 98.857,
        645.0 => 97.262,
        650.0 => 95.667,
        655.0 => 96.929,
        660.0 => 98.190,
        665.0 => 100.597,
        670.0 => 103.003,
        675.0 => 101.068,
        680.0 => 99.133,
        685.0 => 93.257,
        690.0 => 87.381,
        695.0 => 89.492,
        700.0 => 91.604,
        705.0 => 92.246,
        710.0 => 92.889,
        715.0 => 84.872,
        720.0 => 76.854,
        725.0 => 81.683,
        730.0 => 86.511,
        735.0 => 89.546,
        740.0 => 92.580,
        745.0 => 85.405,
        750.0 => 78.230,
        755.0 => 67.961,
        760.0 => 57.692,
        765.0 => 70.307,
        770.0 => 82.923,
        775.0 => 80.599,
        780.0 => 78.274
        );
        pub static ref D55: VSPD = vspd!(
        300.0 => 0.024,
        305.0 => 1.048,
        310.0 => 2.072,
        315.0 => 6.648,
        320.0 => 11.224,
        325.0 => 15.936,
        330.0 => 20.647,
        335.0 => 22.266,
        340.0 => 23.885,
        345.0 => 25.851,
        350.0 => 27.817,
        355.0 => 29.219,
        360.0 => 30.621,
        365.0 => 32.464,
        370.0 => 34.308,
        375.0 => 33.446,
        380.0 => 32.584,
        385.0 => 35.335,
        390.0 => 38.087,
        395.0 => 49.518,
        400.0 => 60.949,
        405.0 => 64.751,
        410.0 => 68.554,
        415.0 => 70.065,
        420.0 => 71.577,
        425.0 => 69.746,
        430.0 => 67.914,
        435.0 => 76.760,
        440.0 => 85.605,
        445.0 => 91.799,
        450.0 => 97.993,
        455.0 => 99.228,
        460.0 => 100.463,
        465.0 => 100.188,
        470.0 => 99.913,
        475.0 => 101.326,
        480.0 => 102.739,
        485.0 => 100.409,
        490.0 => 98.078,
        495.0 => 99.379,
        500.0 => 100.680,
        505.0 => 100.688,
        510.0 => 100.695,
        515.0 => 100.341,
        520.0 => 99.987,
        525.0 => 102.098,
        530.0 => 104.210,
        535.0 => 103.156,
        540.0 => 102.102,
        545.0 => 102.535,
        550.0 => 102.968,
        555.0 => 101.484,
        560.0 => 100.000,
        565.0 => 98.608,
        570.0 => 97.216,
        575.0 => 97.482,
        580.0 => 97.749,
        585.0 => 94.590,
        590.0 => 91.432,
        595.0 => 92.926,
        600.0 => 94.419,
        605.0 => 94.780,
        610.0 => 95.140,
        615.0 => 94.680,
        620.0 => 94.220,
        625.0 => 92.334,
        630.0 => 90.448,
        635.0 => 91.389,
        640.0 => 92.330,
        645.0 => 90.592,
        650.0 => 88.854,
        655.0 => 89.586,
        660.0 => 90.317,
        665.0 => 92.133,
        670.0 => 93.950,
        675.0 => 91.953,
        680.0 => 89.956,
        685.0 => 84.817,
        690.0 => 79.677,
        695.0 => 81.258,
        700.0 => 82.840,
        705.0 => 83.842,
        710.0 => 84.844,
        715.0 => 77.539,
        720.0 => 70.235,
        725.0 => 74.768,
        730.0 => 79.301,
        735.0 => 82.147,
        740.0 => 84.993,
        745.0 => 78.437,
        750.0 => 71.880,
        755.0 => 62.337,
        760.0 => 52.793,
        765.0 => 64.360,
        770.0 => 75.927,
        775.0 => 73.872,
        780.0 => 71.818
        );
        pub static ref D60: VSPD = vspd!(
        300.0 => 0.029300000000000,
        305.0 => 1.289900000000000,
        310.0 => 2.550500000000000,
        315.0 => 9.041250000000000,
        320.0 => 15.532000000000000,
        325.0 => 21.966749999999998,
        330.0 => 28.401499999999999,
        335.0 => 29.958349999999996,
        340.0 => 31.515199999999993,
        345.0 => 33.784249999999993,
        350.0 => 36.053299999999993,
        355.0 => 37.231000000000002,
        360.0 => 38.408700000000003,
        365.0 => 40.673299999999998,
        370.0 => 42.937899999999999,
        375.0 => 42.088699999999989,
        380.0 => 41.239499999999992,
        385.0 => 43.844649999999994,
        390.0 => 46.449799999999996,
        395.0 => 59.301949999999998,
        400.0 => 72.154099999999985,
        405.0 => 76.222049999999996,
        410.0 => 80.289999999999992,
        415.0 => 81.534099999999995,
        420.0 => 82.778199999999998,
        425.0 => 80.177449999999993,
        430.0 => 77.576700000000002,
        435.0 => 86.598399999999998,
        440.0 => 95.620100000000008,
        445.0 => 101.762249999999995,
        450.0 => 107.904399999999995,
        455.0 => 108.711099999999988,
        460.0 => 109.517799999999994,
        465.0 => 108.622950000000003,
        470.0 => 107.728099999999998,
        475.0 => 108.691100000000006,
        480.0 => 109.654100000000000,
        485.0 => 106.669200000000004,
        490.0 => 103.684299999999993,
        495.0 => 104.449399999999997,
        500.0 => 105.214499999999987,
        505.0 => 104.814899999999994,
        510.0 => 104.415300000000002,
        515.0 => 103.469750000000005,
        520.0 => 102.524200000000008,
        525.0 => 104.290850000000006,
        530.0 => 106.057500000000005,
        535.0 => 104.685499999999990,
        540.0 => 103.313499999999991,
        545.0 => 103.426649999999995,
        550.0 => 103.539800000000014,
        555.0 => 101.769899999999993,
        560.0 => 100.000000000000000,
        565.0 => 98.375900000000001,
        570.0 => 96.751799999999989,
        575.0 => 96.731899999999996,
        580.0 => 96.712000000000003,
        585.0 => 93.295199999999994,
        590.0 => 89.878399999999999,
        595.0 => 90.907100000000000,
        600.0 => 91.935800000000000,
        605.0 => 91.975850000000008,
        610.0 => 92.015900000000002,
        615.0 => 91.284099999999995,
        620.0 => 90.552300000000002,
        625.0 => 88.488850000000014,
        630.0 => 86.425399999999996,
        635.0 => 86.933099999999996,
        640.0 => 87.440799999999996,
        645.0 => 85.631000000000000,
        650.0 => 83.821200000000005,
        655.0 => 84.180300000000003,
        660.0 => 84.539400000000001,
        665.0 => 85.911799999999999,
        670.0 => 87.284199999999998,
        675.0 => 85.272999999999996,
        680.0 => 83.261799999999994,
        685.0 => 78.628749999999997,
        690.0 => 73.995699999999999,
        695.0 => 75.204800000000006,
        700.0 => 76.413899999999998,
        705.0 => 77.643449999999987,
        710.0 => 78.873000000000005,
        715.0 => 72.098499999999987,
        720.0 => 65.323999999999998,
        725.0 => 69.635199999999998,
        730.0 => 73.946400000000011,
        735.0 => 76.652699999999996,
        740.0 => 79.358999999999995,
        745.0 => 73.262649999999994,
        750.0 => 67.166299999999993,
        755.0 => 58.165050000000001,
        760.0 => 49.163800000000002,
        765.0 => 59.950200000000002,
        770.0 => 70.736599999999996,
        775.0 => 68.878900000000002,
        780.0 => 67.021200000000007,
        785.0 => 67.522600000000011,
        790.0 => 68.024000000000001,
        795.0 => 65.439549999999997,
        800.0 => 62.855099999999993,
        805.0 => 58.865049999999997,
        810.0 => 54.875000000000000,
        815.0 => 57.786200000000001,
        820.0 => 60.697400000000002,
        825.0 => 62.226949999999995,
        830.0 => 63.756500000000003
        );
        pub static ref D65: VSPD = vspd!(
        300.0 => 0.034100f64,
        305.0 => 1.664300,
        310.0 => 3.294500,
        315.0 => 11.765200,
        320.0 => 20.236000,
        325.0 => 28.644700,
        330.0 => 37.053500,
        335.0 => 38.501100,
        340.0 => 39.948800,
        345.0 => 42.430200,
        350.0 => 44.911700,
        355.0 => 45.775000,
        360.0 => 46.638300,
        365.0 => 49.363700,
        370.0 => 52.089100,
        375.0 => 51.032300,
        380.0 => 49.975500,
        385.0 => 52.311800,
        390.0 => 54.648200,
        395.0 => 68.701500,
        400.0 => 82.754900,
        405.0 => 87.120400,
        410.0 => 91.486000,
        415.0 => 92.458900,
        420.0 => 93.431800,
        425.0 => 90.057000,
        430.0 => 86.682300,
        435.0 => 95.773600,
        440.0 => 104.865000,
        445.0 => 110.936000,
        450.0 => 117.008000,
        455.0 => 117.410000,
        460.0 => 117.812000,
        465.0 => 116.336000,
        470.0 => 114.861000,
        475.0 => 115.392000,
        480.0 => 115.923000,
        485.0 => 112.367000,
        490.0 => 108.811000,
        495.0 => 109.082000,
        500.0 => 109.354000,
        505.0 => 108.578000,
        510.0 => 107.802000,
        515.0 => 106.296000,
        520.0 => 104.790000,
        525.0 => 106.239000,
        530.0 => 107.689000,
        535.0 => 106.047000,
        540.0 => 104.405000,
        545.0 => 104.225000,
        550.0 => 104.046000,
        555.0 => 102.023000,
        560.0 => 100.000000,
        565.0 => 98.167100,
        570.0 => 96.334200,
        575.0 => 96.061100,
        580.0 => 95.788000,
        585.0 => 92.236800,
        590.0 => 88.685600,
        595.0 => 89.345900,
        600.0 => 90.006200,
        605.0 => 89.802600,
        610.0 => 89.599100,
        615.0 => 88.648900,
        620.0 => 87.698700,
        625.0 => 85.493600,
        630.0 => 83.288600,
        635.0 => 83.493900,
        640.0 => 83.699200,
        645.0 => 81.863000,
        650.0 => 80.026800,
        655.0 => 80.120700,
        660.0 => 80.214600,
        665.0 => 81.246200,
        670.0 => 82.277800,
        675.0 => 80.281000,
        680.0 => 78.284200,
        685.0 => 74.002700,
        690.0 => 69.721300,
        695.0 => 70.665200,
        700.0 => 71.609100,
        705.0 => 72.979000,
        710.0 => 74.349000,
        715.0 => 67.976500,
        720.0 => 61.604000,
        725.0 => 65.744800,
        730.0 => 69.885600,
        735.0 => 72.486300,
        740.0 => 75.087000,
        745.0 => 69.339800,
        750.0 => 63.592700,
        755.0 => 55.005400,
        760.0 => 46.418200,
        765.0 => 56.611800,
        770.0 => 66.805400,
        775.0 => 65.094100,
        780.0 => 63.382800
        );
    }
}