public void SetupUPS(AzimuthalMode pole) { ProjectionLatitude = (pole == AzimuthalMode.SouthPole) ? -ProjectionMath.PiHalf : ProjectionMath.PiHalf; ProjectionLongitude = 0.0; ScaleFactor = 0.994; FalseEasting = 2000000.0; FalseNorthing = 2000000.0; TrueScaleLatitude = ProjectionMath.PiHalf; Initialize(); }
public override void Initialize() { base.Initialize(); if (Math.Abs(Math.Abs(ProjectionLatitude) - ProjectionMath.PiHalf) < EPS10) { _mode = ProjectionLatitude < 0.0 ? AzimuthalMode.SouthPole : AzimuthalMode.NorthPole; } else if (Math.Abs(ProjectionLatitude) > EPS10) { _mode = AzimuthalMode.Oblique; _sinphi0 = Math.Sin(ProjectionLatitude); _cosphi0 = Math.Cos(ProjectionLatitude); } else { _mode = AzimuthalMode.Equator; } }
public override void Initialize() { base.Initialize(); double t; phi0 = _projectionLatitude; if (Math.Abs((t = Math.Abs(phi0)) - ProjectionMath.PiHalf) < ProjectionMath.EPS10) { mode = phi0 < 0.0 ? AzimuthalMode.SouthPole : AzimuthalMode.NorthPole; } else if (Math.Abs(t) < ProjectionMath.EPS10) { mode = AzimuthalMode.Equator; } else { mode = AzimuthalMode.Oblique; } if (!_spherical) { double sinphi; _e = Math.Sqrt(_es); qp = ProjectionMath.Qsfn(1.0, _e, _oneEs); mmf = 0.5 / (1.0 - _es); apa = ProjectionMath.AuthSet(_es); switch (mode) { case AzimuthalMode.NorthPole: case AzimuthalMode.SouthPole: dd = 1.0; break; case AzimuthalMode.Equator: dd = 1.0 / (rq = Math.Sqrt(.5 * qp)); xmf = 1.0; ymf = .5 * qp; break; case AzimuthalMode.Oblique: rq = Math.Sqrt(.5 * qp); sinphi = Math.Sin(phi0); sinb1 = ProjectionMath.Qsfn(sinphi, _e, _oneEs) / qp; cosb1 = Math.Sqrt(1.0 - sinb1 * sinb1); dd = Math.Cos(phi0) / (Math.Sqrt(1.0 - _es * sinphi * sinphi) * rq * cosb1); ymf = (xmf = rq) / dd; xmf *= dd; break; } } else { if (mode == AzimuthalMode.Oblique) { sinph0 = Math.Sin(phi0); cosph0 = Math.Cos(phi0); } } }