protected override void PostDrawObjects(DrawEventArgs e) { base.PostDrawObjects(e); if (_maxValue == 0) { calcMaxAndMin(); } foreach (Tuple <Brep, double> tuple in Breps) { double value = (tuple.Item2 - _minValue) / (_maxValue - _minValue); ColorRGB color = Utils.HSL2RGB(value, 0.5, 0.5); e.Display.DrawBrepShaded(tuple.Item1, new DisplayMaterial(color)); } }
/// <summary> /// HSL to RGB conversion. /// </summary> /// <param name="h">The h.</param> /// <param name="sl">The sl.</param> /// <param name="l">The l.</param> /// <returns></returns> public static ColorRGB HSL2RGB(double h, double sl, double l) { double v; double r, g, b; r = l; // default to gray g = l; b = l; v = (l <= 0.5) ? (l * (1.0 + sl)) : (l + sl - l * sl); if (v > 0) { double m; double sv; int sextant; double fract, vsf, mid1, mid2; m = l + l - v; sv = (v - m) / v; h *= 6.0; sextant = (int)h; fract = h - sextant; vsf = v * sv * fract; mid1 = m + vsf; mid2 = v - vsf; switch (sextant) { case 0: r = v; g = mid1; b = m; break; case 1: r = mid2; g = v; b = m; break; case 2: r = m; g = v; b = mid1; break; case 3: r = m; g = mid2; b = v; break; case 4: r = mid1; g = m; b = v; break; case 5: r = v; g = m; b = mid2; break; } } ColorRGB rgb = new ColorRGB(); rgb.R = Convert.ToByte(r * 255.0f); rgb.G = Convert.ToByte(g * 255.0f); rgb.B = Convert.ToByte(b * 255.0f); return(rgb); }