Class ProjectionTransverseMercator

  • All Implemented Interfaces:
    GeographicProjection
    Direct Known Subclasses:
    ProjectionUTM

    public class ProjectionTransverseMercator
    extends AbstractGeographicProjection
    Provides a Transverse Mercator ellipsoidal projection using the WGS84 ellipsoid. The projection's central meridian may be specified and defaults to the Prime Meridian (0 longitude). By default, the projection computes values for 30 degrees either side of the central meridian. This may be changed via the setWidth(gov.nasa.worldwind.geom.Angle) method, but the projection may fail for large widths.

    The projection limits are modified to reflect the central meridian and the width, however the projection limits are clamped to a minimum of -180 degrees and a maximum of +180 degrees. It's therefore not possible to display a band whose central meridian is plus or minus 180.

    • Field Detail

      • DEFAULT_WIDTH

        protected static Angle DEFAULT_WIDTH
      • DEFAULT_CENTRAL_MERIDIAN

        protected static Angle DEFAULT_CENTRAL_MERIDIAN
      • DEFAULT_CENTRAL_LATITUDE

        protected static Angle DEFAULT_CENTRAL_LATITUDE
      • width

        protected Angle width
      • centralMeridian

        protected Angle centralMeridian
      • centralLatitude

        protected Angle centralLatitude
    • Constructor Detail

      • ProjectionTransverseMercator

        public ProjectionTransverseMercator()
        Creates a projection whose central meridian is the Prime Meridian and central latitude is 0.
      • ProjectionTransverseMercator

        public ProjectionTransverseMercator​(Angle centralMeridian)
        Creates a projection with a specified central meridian and a central latitude of 0.
        Parameters:
        centralMeridian - The projection's central meridian.
      • ProjectionTransverseMercator

        public ProjectionTransverseMercator​(Angle centralMeridian,
                                            Angle centralLatitude)
        Creates a projection with a specified central meridian and central latitude.
        Parameters:
        centralMeridian - The projection's central meridian.
        centralLatitude - The projection's central latitude.
    • Method Detail

      • getName

        public java.lang.String getName()
        Description copied from interface: GeographicProjection
        Returns the projection name.
        Returns:
        The projection name.
      • getCentralMeridian

        public Angle getCentralMeridian()
        Indicates this projection's central meridian.
        Returns:
        This projection's central meridian.
      • setCentralMeridian

        public void setCentralMeridian​(Angle centralMeridian)
        Specifies this projections central meridian.
        Parameters:
        centralMeridian - This projection's central meridian. The default is 0.
      • getCentralLatitude

        public Angle getCentralLatitude()
        Indicates this projection's central latitude.
        Returns:
        This projection's central latitude.
      • setCentralLatitude

        public void setCentralLatitude​(Angle centralLatitude)
        Set this projection's central latitude.
        Parameters:
        centralLatitude - This projection's central latitude. The default is 0.
      • getWidth

        public Angle getWidth()
        Indicates the region in which positions are mapped. The default is 30 degrees either side of this projection's central meridian.
        Returns:
        This projection's width.
      • setWidth

        public void setWidth​(Angle width)
        Specifies the region in which positions are mapped. The default is 30 degrees either side of this projection's central meridian.
        Parameters:
        width - This projection's width.
      • makeProjectionLimits

        protected static Sector makeProjectionLimits​(Angle centralMeridian,
                                                     Angle width)
      • getScale

        protected double getScale()
      • geographicToCartesian

        public Vec4 geographicToCartesian​(Globe globe,
                                          Angle latitude,
                                          Angle longitude,
                                          double metersElevation,
                                          Vec4 offset)
        Description copied from interface: GeographicProjection
        Converts a geographic position to meters in Cartesian coordinates.

        Note: The input arguments are not checked for null prior to being used. The caller, typically a Globe2D implementation, is expected do perform that check prior to calling this method.

        Parameters:
        globe - The globe this projection is applied to.
        latitude - The latitude of the position.
        longitude - The longitude of the position.
        metersElevation - The elevation of the position, in meters.
        offset - An optional offset to be applied to the Cartesian output. Typically only projections that are continuous (see GeographicProjection.isContinuous() apply this offset. Others ignore it. May be null.
        Returns:
        The Cartesian point, in meters, corresponding to the input position.
        See Also:
        GeographicProjection.cartesianToGeographic(Globe, gov.nasa.worldwind.geom.Vec4, gov.nasa.worldwind.geom.Vec4)
      • geographicToCartesian

        public void geographicToCartesian​(Globe globe,
                                          Sector sector,
                                          int numLat,
                                          int numLon,
                                          double[] metersElevation,
                                          Vec4 offset,
                                          Vec4[] out)
        Description copied from interface: GeographicProjection
        Converts a grid of geographic positions to a grid of points in Cartesian coordinates.

        This method provides an interface for efficient generation of a grid of cartesian points within a sector. The grid is constructed by dividing the sector into numLon x numLat evenly separated points in geographic coordinates. The first and last points in latitude and longitude are placed at the sector's minimum and maximum boundary, and the remaining points are spaced evenly between those boundary points.

        For each grid point within the sector, an elevation value is specified via an array of elevations. The calculation at each position incorporates the associated elevation.

        Parameters:
        globe - The globe this projection is applied to.
        sector - The sector over which to generate the points.
        numLat - The number of points to generate latitudinally.
        numLon - The number of points to generate longitudinally.
        metersElevation - An array of elevations to incorporate in the point calculations. There must be one elevation value in the array for each generated point, so the array must have a length of at least numLon x numLat. Elevations are read from this array in row major order, beginning with the row of minimum latitude.
        offset - An optional offset to be applied to the Cartesian output. Typically only projections that are continuous (see GeographicProjection.isContinuous() apply this offset. Others ignore it. May be null.
        out - An array to hold the computed cartesian points. It must have a length of at least numLon x numLat. Points are written to this array in row major order, beginning with the row of minimum latitude.
      • northPointingTangent

        public Vec4 northPointingTangent​(Globe globe,
                                         Angle latitude,
                                         Angle longitude)
        Description copied from interface: GeographicProjection
        Computes a Cartesian vector that points north and is tangent to the meridian at the specified geographic location.
        Parameters:
        globe - The globe this projection is applied to.
        latitude - The latitude of the location.
        longitude - The longitude of the location.
        Returns:
        The north pointing tangent corresponding to the input location.
      • isContinuous

        public boolean isContinuous()
        Description copied from interface: GeographicProjection
        Indicates whether it makes sense to treat this projection as contiguous with itself. If true, the scene controller will make the globe using the projection appear to scroll continuously horizontally.
        Returns:
        true if it makes sense to treat this projection as continuous, otherwise false.
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object