geoConicConformalRaw function Conic projections Projections
The raw conic conformal projection.
Implementation
GeoRawProjection geoConicConformalRaw([List? y]) {
var y0 = y![0],
y1 = y[1],
cy0 = cos(y0),
n = y0 == y1 ? sin(y0) : log(cy0 / cos(y1)) / log(_tany(y1) / _tany(y0)),
f = cy0 * pow(_tany(y0), n) / n;
if (n == 0) return geoMercatorRaw;
project(num x, num y, [_]) {
if (f > 0) {
if (y < -halfPi + epsilon) y = -halfPi + epsilon;
} else {
if (y > halfPi - epsilon) y = halfPi - epsilon;
}
var r = f / pow(_tany(y), n);
return [r * sin(n * x), f - r * cos(n * x)];
}
invert(num x, num y, [_]) {
var fy = f - y,
r = sign(n) * sqrt(x * x + fy * fy),
l = atan2(x, abs(fy)) * sign(fy);
if (fy * n < 0) l -= pi * sign(x) * sign(fy);
return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];
}
return GeoRawProjection(project, invert);
}