using System;
namespace Colourful.Implementation.Conversion
{
///
/// Converts from to .
///
public sealed class LChabToLabConverter : IColorConversion
{
///
/// Default singleton instance of the converter.
///
public static readonly LChabToLabConverter Default = new LChabToLabConverter();
///
/// Converts from to .
///
public LabColor Convert(in LChabColor input)
{
double L = input.L, C = input.C, hDegrees = input.h;
var hRadians = Angle.DegreeToRadian(hDegrees);
var a = C * Math.Cos(hRadians);
var b = C * Math.Sin(hRadians);
var output = new LabColor(L, a, b, input.WhitePoint);
return output;
}
#region Overrides
///
public override bool Equals(object obj) => obj is LChabToLabConverter;
///
public override int GetHashCode() => 1;
///
public static bool operator ==(LChabToLabConverter left, LChabToLabConverter right) => Equals(left, right);
///
public static bool operator !=(LChabToLabConverter left, LChabToLabConverter right) => !Equals(left, right);
#endregion
}
}