Class TLcdLonLatBounds

All Implemented Interfaces:
ILcdBounded, ILcdBounds, ILcdShape, ILcd2DEditableBounds, ILcd2DEditableShape, ILcdCloneable, Serializable, Cloneable

public class TLcdLonLatBounds extends ALcd2DEditableBounds implements ILcd2DEditableBounds
This class provides an implementation of ILcd2DEditableBounds in the geodetic space.

All longitude/latitude coordinates are expressed in degrees.

This class is thread-safe for concurrent read-only access of its contents. For read-write access, external locking must be used. Such locking is typically done at the model level.

See Also:
  • Constructor Details

    • TLcdLonLatBounds

      public TLcdLonLatBounds(double aLon, double aLat, double aWidth, double aHeight)
      Constructs and initializes a rectangle with the specified parameters.
      Parameters:
      aLon - the longitude coordinate of the most south-western point.
      aLat - the latitude coordinate of the most south-western point.
      aWidth - the longitude-width of the rectangle, in degrees, must be positive.
      aHeight - the latitude-height of the rectangle, in degrees, must be positive.
    • TLcdLonLatBounds

      public TLcdLonLatBounds()
      Constructs a new rectangle, initialized to location (0, 0) and size (0, 0).

      The defined status of the instance is false.

    • TLcdLonLatBounds

      public TLcdLonLatBounds(ILcdBounds aBounds)
      Constructs a new rectangle, initialized to match the values of the specified rectangle.

      The defined status of the instance is also copied from the specified bounds.

      Parameters:
      aBounds - a rectangle from which to copy initial values.
    • TLcdLonLatBounds

      public TLcdLonLatBounds(ILcdPoint aPoint, double aWidth, double aHeight)
      Constructs a rectangle and initializes it with the parameters.
      Parameters:
      aPoint - the most south-western point of the rectangle.
      aWidth - the longitude-width of the rectangle, in degrees, must be positive.
      aHeight - the latitude-height of the rectangle, in degrees, must be positive.
    • TLcdLonLatBounds

      public TLcdLonLatBounds(ILcdPoint aPoint)
      Constructs a rectangle at the given point with width and height zero.
      Parameters:
      aPoint - the point at which the rectangle is located.
  • Method Details

    • getLocation

      public final ILcdPoint getLocation()
      Description copied from interface: ILcdBounds
      Returns the location of the bounding box (smallest x and y coordinates).
      Specified by:
      getLocation in interface ILcdBounds
      Returns:
      the location of the bounding box.
    • getMinX

      public double getMinX()
      Description copied from interface: ILcdBounds
      Returns the minimum X value (left boundary) of this bounds.

      By default, this does getLocation.getX(), but can be overridden for performance.

      Specified by:
      getMinX in interface ILcdBounds
      Returns:
      the minimum X boundary
      See Also:
    • getMinY

      public double getMinY()
      Description copied from interface: ILcdBounds
      Returns the minimum Y value (lower boundary) of this bounds.

      By default, this does getLocation.getY(), but can be overridden for performance.

      Specified by:
      getMinY in interface ILcdBounds
      Returns:
      the minimum Y boundary
      See Also:
    • getMinZ

      public double getMinZ()
      Description copied from interface: ILcdBounds
      Returns the minimum Z value (bottom boundary) of this bounds.

      By default, this does getLocation.getZ(), but can be overridden for performance.

      Specified by:
      getMinZ in interface ILcdBounds
      Returns:
      the minimum Z boundary
      See Also:
    • getMaxX

      public double getMaxX()
      Description copied from interface: ILcdBounds
      Returns the maximum X value (right boundary) of this bounds.

      By default, this does getLocation.getX() + getWidth(), but can be overridden for performance.

      Note that this is a derived property, the bounds are defined by their lower-left corner and width/height.

      For geodetic bounds, the returned value is not necessarily normalized to [-180, 180].

      Specified by:
      getMaxX in interface ILcdBounds
      Returns:
      the maximum X boundary
      See Also:
    • getMaxY

      public double getMaxY()
      Description copied from interface: ILcdBounds
      Returns the maximum Y value (upper boundary) of this bounds.

      By default, this does getLocation.getY() + getHeight(), but can be overridden for performance.

      Note that this is a derived property, the bounds are defined by their lower-left corner and width/height.

      Specified by:
      getMaxY in interface ILcdBounds
      Returns:
      the maximum Y boundary
      See Also:
    • getMaxZ

      public double getMaxZ()
      Description copied from interface: ILcdBounds
      Returns the maximum Z value (top boundary) of this bounds.

      By default, this does getLocation.getZ() + getDepth(), but can be overridden for performance.

      Note that this is a derived property, the bounds are defined by their lower-left corner and width/height.

      Specified by:
      getMaxZ in interface ILcdBounds
      Returns:
      the maximum Z boundary
      See Also:
    • getWidth

      public final double getWidth()
      Returns the width of the bounding box in degrees. The width is in range [0, 360].
      Specified by:
      getWidth in interface ILcdBounds
      Returns:
      the width of the bounding box, in degrees.
    • setWidth

      public void setWidth(double aWidth)
      Sets the width of the bounds (the extent along the x-axis). The width must be in degrees.

      A negative width will translate the bounds to the left.

      A width larger than 360 will be set to 360.

      Specified by:
      setWidth in interface ILcd2DEditableBounds
      Parameters:
      aWidth - the new width, in degrees.
    • getHeight

      public final double getHeight()
      Returns the height of the bounding box in degrees. The width is in range [0, 180].
      Specified by:
      getHeight in interface ILcdBounds
      Returns:
      the height of the bounding box, in degrees.
    • setHeight

      public void setHeight(double aHeight)
      Sets the height (in degrees) of this bounds so that it covers a valid area. When the height passed is so that the area covered with the bounds would have coordinates outside the valid latitude area, the height value is clipped to the largest value that would cover a valid longitude, latitude area. This implies that the result of getHeight() is not necessarily the same as the value passed here.
      Specified by:
      setHeight in interface ILcd2DEditableBounds
      Parameters:
      aHeight - the proposed new height, in degrees, for this bounds object. This value may be clipped to ensure that the bounds covers a valid latitude interval.
    • move2D

      public void move2D(double aLon, double aLat)
      Moves the bounds.
      Specified by:
      move2D in interface ILcd2DEditableBounds
      Specified by:
      move2D in interface ILcd2DEditableShape
      Parameters:
      aLon - the longitude coordinate of the new most south-western point.
      aLat - the latitude coordinate of the new most south-western point.
    • cloneAs2DEditableBounds

      public ILcd2DEditableBounds cloneAs2DEditableBounds()
      Description copied from interface: ILcdBounds
      Returns a copy of this ILcdBounds object that is also an ILcd2DEditableBounds. This makes sure that the first two dimensions of the copy are writable, even if the original ILcdBounds object may be read-only.
      Specified by:
      cloneAs2DEditableBounds in interface ILcdBounds
      Returns:
      a copy of this ILcdBounds object that is also an ILcd2DEditableBounds. This makes sure that the first two dimensions of the copy are writable, even if the original ILcdBounds object may be read-only.
      See Also:
    • cloneAs3DEditableBounds

      public ILcd3DEditableBounds cloneAs3DEditableBounds()
      Description copied from interface: ILcdBounds
      Returns a copy of this ILcdBounds object that is also an ILcd3DEditableBounds. This makes sure that all three dimensions of the copy are writable, even if the original ILcdBounds object may be read-only.
      Specified by:
      cloneAs3DEditableBounds in interface ILcdBounds
      Returns:
      a copy of this ILcdBounds object that is also an ILcd3DEditableBounds. This makes sure that all three dimensions of the copy are writable, even if the original ILcdBounds object may be read-only.
      See Also:
    • clone

      public Object clone()
      Creates and returns a copy of this object.

      The contained editable point representing the most south-western point of the rectangle is cloned.

      Specified by:
      clone in interface ILcdCloneable
      Overrides:
      clone in class ALcdShape
      See Also:
    • contains2D

      public boolean contains2D(double aLon, double aLat)
      Description copied from class: ALcdBounds
      Checks whether this ALcdBounds object contains the given point in the cartesian plane. Only the first two dimensions of the ILcdBounds are considered, that is, the x coordinate and y coordinate of its location, its width, and its height.
      Specified by:
      contains2D in interface ILcdShape
      Overrides:
      contains2D in class ALcdBounds
      Parameters:
      aLon - the x coordinate of the point.
      aLat - the y coordinate of the point.
      Returns:
      the boolean result of the containment test.
    • interacts2D

      public boolean interacts2D(double aLon, double aLat, double aWidth, double aHeight)
      Description copied from class: ALcdBounds
      Checks whether this ALcdBounds object interacts with the given rectangle in the cartesian plane. Only the first two dimensions of the ILcdBounds object are considered, that is, the x coordinate and y coordinate of its location, its width, and its height.
      Specified by:
      interacts2D in interface ILcdBounds
      Overrides:
      interacts2D in class ALcdBounds
      Parameters:
      aLon - the x coordinate of the rectangle.
      aLat - the y coordinate of the rectangle.
      aWidth - the width of the rectangle.
      aHeight - the height of the rectangle.
      Returns:
      true if this ALcdBounds object touches or overlaps to any extent with the given rectangle, false otherwise.
    • contains2D

      public boolean contains2D(double aLon, double aLat, double aWidth, double aHeight)
      Description copied from class: ALcdBounds
      Checks whether this ALcdBounds object contains the given rectangle in the cartesian plane. Only the first two dimensions of the ILcdBounds object are considered, that is, the x coordinate and y coordinate of its location, its width, and its height.
      Specified by:
      contains2D in interface ILcdBounds
      Overrides:
      contains2D in class ALcdBounds
      Parameters:
      aLon - the x coordinate of the rectangle.
      aLat - the y coordinate of the rectangle.
      aWidth - the width of the rectangle.
      aHeight - the height of the rectangle.
      Returns:
      the boolean result of the containment test.
    • setTo2DIntersection

      public void setTo2DIntersection(double aLon, double aLat, double aWidth, double aHeight)
      Description copied from class: ALcd2DEditableBounds
      Calculates the 2D intersection of this ALcd2DEditableBounds and a given rectangle in the cartesian plane.
      Specified by:
      setTo2DIntersection in interface ILcd2DEditableBounds
      Overrides:
      setTo2DIntersection in class ALcd2DEditableBounds
      Parameters:
      aLon - the x coordinate of the rectangle.
      aLat - the y coordinate of the rectangle.
      aWidth - the width of the rectangle.
      aHeight - the height of the rectangle.
    • setTo2DUnion

      public void setTo2DUnion(double aLon, double aLat, double aWidth, double aHeight)
      Description copied from class: ALcd2DEditableBounds
      Calculates the 2D union of this ALcd2DEditableBounds and a given rectangle in the cartesian plane.
      Specified by:
      setTo2DUnion in interface ILcd2DEditableBounds
      Overrides:
      setTo2DUnion in class ALcd2DEditableBounds
      Parameters:
      aLon - the x coordinate of the rectangle.
      aLat - the y coordinate of the rectangle.
      aWidth - the width of the rectangle.
      aHeight - the height of the rectangle.