/// <summary> /// Generate colors evely spaced out on a given gradient. /// </summary> /// <param name="colorCount"></param> /// <param name="gradient"></param> /// <param name="jitter"></param> /// <returns></returns> public static List<ColorHSL> GenerateColorsEvenGradient( int colorCount, GradientHSL gradient, float jitter) { return gradient.SampleEvenly(colorCount, jitter).ToList(); }
/// <summary> /// Returns a gradient that represents a linear interpolation between two colors. /// </summary> /// <param name="color1">The left end of the gradient.</param> /// <param name="color2">The right end of the gradient.</param> /// <returns>A GradientHSL that represents a linear interpolation between color1 and color2.</returns> public static GradientHSL GetLerp(ColorHSL color1, ColorHSL color2) { var gradient = new GradientHSL(); var leftColorKey = new GradientHSLColorKey(color1, 0); var rightColorKey = new GradientHSLColorKey(color2, 1); gradient.SetKeys( new[] { leftColorKey, rightColorKey }); return gradient; }
/// <summary> /// Returns a gradient that represents a linear interpolation between two colors. /// </summary> /// <param name="color1"></param> /// <param name="color2"></param> /// <returns></returns> public static GradientHSL GetLerp(ColorHSL color1, ColorHSL color2) { var gradient = new GradientHSL {curve = ResponseCurveHSL.GetLerp(0, 1, color1, color2)}; return gradient; }
/// <summary> /// Gives a list of colors where that maximises distance on /// the gradient between consecutaive colors. /// </summary> /// <param name="colorCount"></param> /// <param name="gradient"></param> /// <returns></returns> public static List<ColorHSL> GenerateColorsGoldenRatioGradient(int colorCount, GradientHSL gradient) { var colors = new List<ColorHSL>(); var t = Random.value; for (int i = 0; i < colorCount; i++) { var newColor = gradient.Evaluate(t); colors.Add(newColor); t += GoldenRatioConjugate; t %= 1.0f; } return colors; }
/// <summary> /// Generates a list of colours randomly sampled from a gradient. /// </summary> /// <param name="colorCount"></param> /// <param name="gradient"></param> /// <returns></returns> public static List<ColorHSL> GenerateColorsRandomGradient(int colorCount, GradientHSL gradient) { var colors = new List<ColorHSL>(); for (int i = 0; i < colorCount; i++) { var color = gradient.Evaluate(Random.value); colors.Add(color); } return colors; }