protected override Rgb ToRgb()
 {
     var hRad = H * System.Math.PI / 180.0;
     var lab = new Lab
     {
         L = L,
         A = System.Math.Cos(hRad) * C,
         B = System.Math.Sin(hRad) * C
     };
     return lab.ToColorSpace<Rgb>();
 }
        protected override void FromRgb(Rgb color)
        {
            var lab = new Lab(color);
            var hDeg = System.Math.Atan2(lab.B, lab.A);

            if (hDeg > 0)
            {
                hDeg = hDeg / System.Math.PI * 180.0;
            }
            else
            {
                hDeg = 360.0 - System.Math.Abs(hDeg) / System.Math.PI * 180.0;
            }

            if (hDeg < 0)
                hDeg += 360.0;
            else if (hDeg >= 360)
                hDeg -= 360.0;

            L = lab.L;
            C = System.Math.Sqrt(lab.A * lab.A + lab.B * lab.B);
            H = hDeg;
        }