private static Tuple<Color, double, double>[] GenerateColors()
{
var result = new Tuple<Color, double, double>[256 * 256 * 256];
int i = 0;
for (short r = 0; r < 256; ++r)
{
for (short g = 0; g < 256; ++g)
{
for (short b = 0; b < 256; ++b)
{
ColorVector colorVector = new ColorVector(r / 255.0, g / 255.0, b / 255.0);
colorVector.ConvertSRgbToLinearSRgb();
colorVector.ConvertLinearSRgbToXyz();
colorVector.ConvertXyzToXyy();
double hue = Math.Atan2(colorVector.Component2 - D65.SmallY, colorVector.Component1 - D65.SmallX);
result[i] = new Tuple<Color, double, double>(Color.FromArgb(r, g, b), colorVector.Component3, hue);
if (i % 1000000 == 0)
{
Console.WriteLine(i);
}
i++;
}
}
}
return result;
}