Class MeridianArcBased

All Implemented Interfaces:
Serializable, Parameterized, LenientComparable, org.opengis.referencing.operation.MathTransform, org.opengis.referencing.operation.MathTransform2D
Direct Known Subclasses:
CassiniSoldner, Polyconic, Sinusoidal

abstract class MeridianArcBased extends NormalizedProjection
Base class of map projections based on distance along the meridian from equator to latitude φ. Except for some cases like "Sinusoidal equal area", those projections are neither conformal nor equal-area.
Since:
1.0
Version:
1.0
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      For cross-version compatibility.
      See Also:
    • cf0

      private final double cf0
      Coefficients for the forward transform implemented by the distance(double, double, double) method. Values are computed by the constructor and depend on the form of equation implemented by distance(…). We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information.
    • cf1

      private final double cf1
      Coefficients for the forward transform implemented by the distance(double, double, double) method. Values are computed by the constructor and depend on the form of equation implemented by distance(…). We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information.
    • cf2

      private final double cf2
      Coefficients for the forward transform implemented by the distance(double, double, double) method. Values are computed by the constructor and depend on the form of equation implemented by distance(…). We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information.
    • cf3

      private final double cf3
      Coefficients for the forward transform implemented by the distance(double, double, double) method. Values are computed by the constructor and depend on the form of equation implemented by distance(…). We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information.
    • cf4

      private final double cf4
      Coefficients for the forward transform implemented by the distance(double, double, double) method. Values are computed by the constructor and depend on the form of equation implemented by distance(…). We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information.
    • ci1

      private final double ci1
      Coefficients used in inverse transform. Same comment than for cf0… applies.
    • ci2

      private final double ci2
      Coefficients used in inverse transform. Same comment than for cf0… applies.
    • ci3

      private final double ci3
      Coefficients used in inverse transform. Same comment than for cf0… applies.
    • ci4

      private final double ci4
      Coefficients used in inverse transform. Same comment than for cf0… applies.
    • private final double 
      Denominator of rectifying latitude equation. The rectifying latitude is computed by µ = M/(1 – ℯ²/4 – 3ℯ⁴/64 – 5ℯ⁶/256 – …) (Snyder 7-19 with a=1).
  • Constructor Details

    • MeridianArcBased

      MeridianArcBased(Initializer initializer)
      Creates a new normalized projection from the parameters computed by the given initializer.
    • MeridianArcBased

      MeridianArcBased(MeridianArcBased other)
      Creates a new projection initialized to the same parameters than the given one.
  • Method Details

    • distance

      final double distance(double φ, double sinφ, double cosφ)
      Computes the distance (M) along meridian arc from equator to a given latitude φ. Special cases:
      • If φ is 0°, then this method returns 0.
      • If φ=+π/2, then this method returns a value slightly smaller than +π/2, depending on the eccentricity.
      • If φ=-π/2, then this method returns a value slightly greater than -π/2, depending on the eccentricity.
      This value is related to rectifying latitude by µ = (π/2)⋅(M/cf0) (derived from Snyder 3-20).
      Parameters:
      \u03c6 - latitude for which to compute the distance, in radians.
      sin\u03c6 - value of sin(φ).
      cos\u03c6 - value of cos(φ).
      Returns:
      distance for the given latitude on an ellipsoid of semi-major axis of 1.
    • dM_dφ

      final double dM_dφ(double sinφ2)
      Gets the derivative of this distance(double, double, double) method.
      Returns:
      the derivative at the specified latitude.
    • latitude

      final double latitude(double distance)
      Computes latitude φ from a meridian distance M.
      Parameters:
      distance - meridian distance for which to compute the latitude.
      Returns:
      the latitude of given meridian distance, in radians.