public static float[] ToHSV(Color3 color) { float val = Math.Max(Math.Max(color.R, color.G), color.B); if (Math.Abs(val) < 0.001f) { return new float[3] { 0, 0, 0 } } ; float hue = Math.Min(Math.Min(color.R, color.G), color.B); float sat = (val - hue) / val; if (Math.Abs(sat) >= 0.001f) { Vector3 rgbN = val - new Vector3(color.R, color.G, color.B); rgbN /= (val - hue); if (color.R == val) { hue = (color.G == hue) ? 5.0f + rgbN.Z : 1.0f - rgbN.Y; } else if (color.G == val) { hue = (color.B == hue) ? 1.0f + rgbN.X : 3.0f - rgbN.Z; } else { hue = (color.R == hue) ? 3.0f + rgbN.Y : 5.0f - rgbN.Z; } hue /= 6.0f; } return(new float[3] { hue, sat, val }); }
public static BrickColor FromColor3(Color3 color) { return(FromRGB(color.R, color.G, color.B)); }
public ColorSequence(Color3 c) : this(c, c) { }