Class SurfaceEllipse

    • Field Detail

      • DEFAULT_NUM_INTERVALS

        protected static final int DEFAULT_NUM_INTERVALS
        See Also:
        Constant Field Values
      • center

        protected LatLon center
      • majorRadius

        protected double majorRadius
      • minorRadius

        protected double minorRadius
      • heading

        protected Angle heading
    • Constructor Detail

      • SurfaceEllipse

        public SurfaceEllipse()
        Constructs a new surface ellipse with the default attributes, default center location, default radii, and default heading.
      • SurfaceEllipse

        public SurfaceEllipse​(SurfaceEllipse source)
        Creates a shallow copy of the specified source shape.
        Parameters:
        source - the shape to copy.
      • SurfaceEllipse

        public SurfaceEllipse​(ShapeAttributes normalAttrs)
        Constructs a new surface ellipse with the specified normal (as opposed to highlight) attributes, default center location, default radii, and default heading. Modifying the attribute reference after calling this constructor causes this shape's appearance to change accordingly.
        Parameters:
        normalAttrs - the normal attributes. May be null, in which case default attributes are used.
      • SurfaceEllipse

        public SurfaceEllipse​(LatLon center,
                              double majorRadius,
                              double minorRadius)
        Constructs a new surface ellipse with the default attributes, the specified center location and radii (in meters).
        Parameters:
        center - the ellipse's center location.
        majorRadius - the ellipse's major radius, in meters.
        minorRadius - the ellipse's minor radius, in meters.
        Throws:
        java.lang.IllegalArgumentException - if the center is null, or if either radii is negative.
      • SurfaceEllipse

        public SurfaceEllipse​(LatLon center,
                              double majorRadius,
                              double minorRadius,
                              Angle heading)
        Constructs a new surface ellipse with the default attributes, the specified center location, radii (in meters), and heading clockwise from North.
        Parameters:
        center - the ellipse's center location.
        majorRadius - the ellipse's major radius, in meters.
        minorRadius - the ellipse's minor radius, in meters.
        heading - the ellipse's heading, clockwise from North.
        Throws:
        java.lang.IllegalArgumentException - if the center or heading are null, or if either radii is negative.
      • SurfaceEllipse

        public SurfaceEllipse​(LatLon center,
                              double majorRadius,
                              double minorRadius,
                              Angle heading,
                              int intervals)
        Constructs a new surface ellipse with the default attributes, the specified center location, radii (in meters), heading clockwise from North, and initial number of geometry intervals.
        Parameters:
        center - the ellipse's center location.
        majorRadius - the ellipse's major radius, in meters.
        minorRadius - the ellipse's minor radius, in meters.
        heading - the ellipse's heading, clockwise from North.
        intervals - the initial number of intervals (or slices) defining the ellipse's geometry.
        Throws:
        java.lang.IllegalArgumentException - if the center or heading are null, if either radii is negative, or if the number of intervals is less than 8.
      • SurfaceEllipse

        public SurfaceEllipse​(ShapeAttributes normalAttrs,
                              LatLon center,
                              double majorRadius,
                              double minorRadius)
        Constructs a new surface ellipse with the specified normal (as opposed to highlight) attributes, the specified center location, and radii (in meters). Modifying the attribute reference after calling this constructor causes this shape's appearance to change accordingly.
        Parameters:
        normalAttrs - the normal attributes. May be null, in which case default attributes are used.
        center - the ellipse's center location.
        majorRadius - the ellipse's major radius, in meters.
        minorRadius - the ellipse's minor radius, in meters.
        Throws:
        java.lang.IllegalArgumentException - if the center is null, or if either radii is negative.
      • SurfaceEllipse

        public SurfaceEllipse​(ShapeAttributes normalAttrs,
                              LatLon center,
                              double majorRadius,
                              double minorRadius,
                              Angle heading)
        Constructs a new surface ellipse with the specified normal (as opposed to highlight) attributes, the specified center location, radii (in meters), and heading clockwise from North. Modifying the attribute reference after calling this constructor causes this shape's appearance to change accordingly.
        Parameters:
        normalAttrs - the normal attributes. May be null, in which case default attributes are used.
        center - the ellipse's center location.
        majorRadius - the ellipse's major radius, in meters.
        minorRadius - the ellipse's minor radius, in meters.
        heading - the ellipse's heading, clockwise from North.
        Throws:
        java.lang.IllegalArgumentException - if the center or heading are null, or if either radii is negative.
      • SurfaceEllipse

        public SurfaceEllipse​(ShapeAttributes normalAttrs,
                              LatLon center,
                              double majorRadius,
                              double minorRadius,
                              Angle heading,
                              int intervals)
        Constructs a new surface ellipse with the specified normal (as opposed to highlight) attributes, the specified center location, radii (in meters), heading clockwise from North, and initial number of geometry intervals. Modifying the attribute reference after calling this constructor causes this shape's appearance to change accordingly.
        Parameters:
        normalAttrs - the normal attributes. May be null, in which case default attributes are used.
        center - the ellipse's center location.
        majorRadius - the ellipse's major radius, in meters.
        minorRadius - the ellipse's minor radius, in meters.
        heading - the ellipse's heading, clockwise from North.
        intervals - the initial number of intervals (or slices) defining the ellipse's geometry.
        Throws:
        java.lang.IllegalArgumentException - if the center or heading are null, if either radii is negative, or if the number of intervals is less than 8.
    • Method Detail

      • getCenter

        public LatLon getCenter()
      • setCenter

        public void setCenter​(LatLon center)
      • getMajorRadius

        public double getMajorRadius()
      • getMinorRadius

        public double getMinorRadius()
      • setMajorRadius

        public void setMajorRadius​(double radius)
      • setMinorRadius

        public void setMinorRadius​(double radius)
      • setRadii

        public void setRadii​(double majorRadius,
                             double minorRadius)
      • getHeading

        public Angle getHeading()
      • setHeading

        public void setHeading​(Angle heading)
      • getIntervals

        public int getIntervals()
      • setIntervals

        public void setIntervals​(int intervals)
      • getStateKey

        public java.lang.Object getStateKey​(DrawContext dc)
        Returns an object that uniquely identifies this renderable's state for the specified draw context.

        Callers can perform an equality test on two state keys using Object.equals(Object) in order to determine whether or not a renderable has changed. The returned object is guaranteed to be globally unique with respect to other SurfaceRenderable state keys; an equality test with a state key from another renderable always returns false.

        The returned state key is constructed the SurfaceShape's unique ID, last modified time, and its active attributes. The returned state key has no dependency on the Globe. Subclasses that depend on the Globe should return a state key that include the globe's state key.

        Overridden to include the globe's state key in the returned state key.

        Specified by:
        getStateKey in interface SurfaceRenderable
        Overrides:
        getStateKey in class AbstractSurfaceShape
        Parameters:
        dc - the draw context for which to determine this renderable's current state.
        Returns:
        an object representing this renderable's current state.
        See Also:
        Globe.getStateKey(DrawContext)
      • getLocations

        public java.lang.Iterable<? extends LatLon> getLocations​(Globe globe)
        Description copied from interface: SurfaceShape
        Returns the shape's locations as they appear on the specified globe, or null if the shape has no locations.
        Parameters:
        globe - the globe the shape is related to.
        Returns:
        the shapes locations on the globe, or null if the shape has no locations.
      • getReferencePosition

        public Position getReferencePosition()
        Description copied from interface: Movable
        A position associated with the object that indicates its aggregate geographic position. The chosen position varies among implementers of this interface. For objects defined by a list of positions, the reference position is typically the first position in the list. For symmetric objects the reference position is often the center of the object. In many cases the object's reference position may be explicitly specified by the application.
        Specified by:
        getReferencePosition in interface Movable
        Specified by:
        getReferencePosition in interface Movable2
        Specified by:
        getReferencePosition in class AbstractSurfaceShape
        Returns:
        the object's reference position, or null if no reference position is available.
      • computeLocations

        protected java.util.List<LatLon> computeLocations​(Globe globe,
                                                          int intervals)
      • computeNumIntervals

        protected int computeNumIntervals​(Globe globe,
                                          double edgeIntervalsPerDegree)
      • computeNumEdgeIntervals

        protected int computeNumEdgeIntervals​(Globe globe,
                                              double edgeIntervalsPerDegree)