public void ConvertXyzToLinearSRgb()
{
const double f11 = 286000.0 / 88229.0;
const double f12 = -407000.0 / 264687.0;
const double f13 = -44000.0 / 88229.0;
const double f21 = -107875.0 / 111303.0;
const double f22 = 626375.0 / 333909.0;
const double f23 = 4625.0 / 111303.0;
const double f31 = 5000.0 / 89889.0;
const double f32 = -55000.0 / 269667.0;
const double f33 = 5000.0 / 4731.0;
double x = Component1;
double y = Component2;
double z = Component3;
Component1 = f11 * x + f12 * y + f13 * z;
Component2 = f21 * x + f22 * y + f23 * z;
Component3 = f31 * x + f32 * y + f33 * z;
}
private static Color? GetColor(double main, double x, double y) { ColorVector color = new ColorVector(x, main, y); color.ConvertXyzToLinearSRgb(); if (color.IsCanonical()) { color.ConvertLinearSRgbToSRgb(); return color.ToColor(); } else { return null; } }