2D Graphics C#

using System;
using System.Drawing;
namespace SharpNeatLib.NetworkVisualization
{
  public class ColorUtilities
  {
    const float oneThird = 1F/3F;
    const float twoThirds = 2F/3F;
    /// 
    /// HSL values = From 0 to 1
    /// 

    /// 
    /// 
    /// 
    /// 
    public static Color FromHls(float H, float S, float L)
    {
      int R, G, B;
      
      if ( S == 0 )                      
      {
        R = (int)(L * 255F);                      //RGB results = From 0 to 255
        G = (int)(L * 255F);
        B = (int)(L * 255F);
      }
      else
      {
        float var_1, var_2;
        if (L<0.5F) 
          var_2 = L * (1F + S);
        else
          var_2 = (L + S) - (S * L);
        var_1 = 2F * L - var_2;
        R = (int)(255F * Hue_2_RGB(var_1, var_2, H + oneThird));
        G = (int)(255F * Hue_2_RGB(var_1, var_2, H));
        B = (int)(255F * Hue_2_RGB(var_1, var_2, H - oneThird));
      } 
      return Color.FromArgb(R,G,B);
    }
    private static float Hue_2_RGB(float v1, float v2, float vH)
    {
      
      if (vH < 0F) vH += 1F;
      if (vH > 1F) vH -= 1F;
      if ( (6F * vH) < 1F ) return v1 + (v2-v1) * 6F * vH;
      if ( (2F * vH) < 1F ) return v2;
      if ( (3F * vH) < 2F ) return v1 + (v2-v1) * (twoThirds - vH) * 6F;
      return v1;
    }
    /// 
    /// Blue-Red scale (blue to red). 
    /// 

    /// 0.0=blue, 1.0=red
    /// 
    public static Color FromBlueRedScale(float temp)
    {  
      // Trim invalid values.
      temp=(float)Math.Max(0.0, temp);
      temp=(float)Math.Min(1.0, temp);
      int red=(int)(temp*255F);
      int blue=(int)((1.0-temp)*255F);
      return Color.FromArgb(red, 0, blue);
    }
  }
}