geoConicEqualAreaRaw function Conic projections Projections

GeoRawProjection geoConicEqualAreaRaw([
  1. List? y
])

The raw Albers’ equal-area conic projection.

Implementation

GeoRawProjection geoConicEqualAreaRaw([List? y]) {
  var sy0 = sin(y![0]), n = (sy0 + sin(y[1])) / 2;

  // Are the parallels symmetrical around the Equator?
  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y[0].toDouble());

  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;

  project(num x, num y, [_]) {
    var r = sqrt(c - 2 * n * sin(y)) / n;
    return [r * sin(x *= n), r0 - r * cos(x)];
  }

  invert(num x, num y, [_]) {
    var r0y = r0 - y, l = atan2(x, abs(r0y)) * sign(r0y);
    if (r0y * n < 0) l -= pi * sign(x) * sign(r0y);
    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];
  }

  return GeoRawProjection(project, invert);
}