fromJchInViewingConditions static method

Cam16 fromJchInViewingConditions(
  1. double J,
  2. double C,
  3. double h,
  4. ViewingConditions viewingConditions,
)

Create a CAM16 color from lightness j, chroma C, and hue h, in viewingConditions.

Implementation

static Cam16 fromJchInViewingConditions(
    double J, double C, double h, ViewingConditions viewingConditions) {
  final double Q = (4.0 / viewingConditions.c) *
      math.sqrt(J / 100.0) *
      (viewingConditions.aw + 4.0) *
      (viewingConditions.fLRoot);
  final double M = C * viewingConditions.fLRoot;
  final double alpha = C / math.sqrt(J / 100.0);
  final double s = 50.0 *
      math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));

  final double hueRadians = h * math.pi / 180.0;
  final double jstar = (1.0 + 100.0 * 0.007) * J / (1.0 + 0.007 * J);
  final double mstar = 1.0 / 0.0228 * math.log(1.0 + 0.0228 * M);
  final double astar = mstar * math.cos(hueRadians);
  final double bstar = mstar * math.sin(hueRadians);
  return Cam16(h, C, J, Q, M, s, jstar, astar, bstar);
}