/// <summary> /// 色が近似的に等価とみなせるか判定する /// </summary> /// <param name="a">色その1</param> /// <param name="b">色その2</param> /// <param name="hue_tolerance">色相の許容範囲</param> /// <param name="satulation_tolerance">飽和度の許容範囲</param> /// <param name="luminance_tolerance">明るさの許容範囲</param> /// <param name="alpha_tolerance">判定結果</param> /// <returns>近似的に等価と見做せる場合は true, それ以外は false</returns> static public bool NearlyEqualsInHSLA (this Color a, Color b , PlaneAngle hue_tolerance = null , double satulation_tolerance = 1.0e-2 , double luminance_tolerance = 1.0e-2 , double alpha_tolerance = 1.0e-2 ) { var(ha, sa, la, aa) = a.ToHSLA(); var(hb, sb, lb, ab) = b.ToHSLA(); return (ha.NormalizedNearlyEquals(hb, hue_tolerance ?? PlaneAngle.Degree) && sa.NearlyEquals(sb, satulation_tolerance) && la.NearlyEquals(lb, luminance_tolerance) && aa.NearlyEquals(aa, alpha_tolerance) ); }