Ellipse

open class Ellipse @JvmOverloads constructor(center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes()) : AbstractShape

Ellipse shape defined by a geographic center position and radii for the semi-major and semi-minor axes.

Axes and Heading


Ellipse axes, by default, are oriented such that the semi-major axis points East and the semi-minor axis points North. Ellipse provides an optional heading, which when set to anything other than 0.0 rotates the semi-major and semi-minor axes about the center position, while retaining the axes relative relationship to one another. Heading is defined clockwise from North. Configuring ellipse with a heading of 45.0 results in the semi-major axis pointing Southeast and the semi-minor axis pointing Northeast.

Altitude Mode and Terrain Following


Ellipse geometry displays at a constant altitude determined by the geographic center position and altitude mode. For example, an ellipse with a center position altitude of 1km and altitude mode of ABSOLUTE displays at 1km above mean sea level. The same ellipse with an altitude mode of RELATIVE_TO_GROUND displays at 1km above ground level, relative to the ellipse's center location.
Surface ellipse geometry, where an ellipse appears draped across the terrain, may be achieved by enabling ellipse's terrain following state and setting its altitude mode to CLAMP_TO_GROUND. See isFollowTerrain and altitudeMode.

Display Granularity


Ellipse's appearance on screen is composed of discrete segments which approximate the ellipse's geometry. This approximation is chosen such that the display appears to be a continuous smooth ellipse. Applications can control the maximum number of angular intervals used in this representation with maximumIntervals.

Constructors

Link copied to clipboard
constructor(center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes())

Types

Link copied to clipboard
object Companion
Link copied to clipboard
open class EllipseData

Properties

Link copied to clipboard
open override var altitudeMode: AltitudeMode

AltitudeMode used by movable object

Link copied to clipboard
open override var attributes: ShapeAttributes

Indicates the shape's normal (non-highlight) attributes.

Link copied to clipboard

Base altitude level of shape sides. Is dependent on altitudeMode. Ground level by default.

Link copied to clipboard

The ellipse's geographic center position.

Link copied to clipboard
open override var displayName: String?
Link copied to clipboard

The ellipse's heading clockwise from North. When ellipse's heading is 0.0, the semi-major axis points East and the semi-minor axis points North. Headings other than 0.0 rotate the axes about the ellipse's center position, while retaining the axes relative relationship to one another.

Link copied to clipboard

Indicates the shape's highlight attributes.

Link copied to clipboard

Determines whether surface shape should be batched to terrain textures cache or single color attachment. Set this flag to true when shape editing is intended and to false when editing is finished.

Link copied to clipboard
open override var isEnabled: Boolean
Link copied to clipboard

Draw sides of the shape which extend from the defined position and altitude to baseAltitude level.

Link copied to clipboard

Determines whether this shape's geometry follows the terrain surface or is fixed at a constant altitude.

Link copied to clipboard
open override var isHighlighted: Boolean

Indicates whether the shape is highlighted.

Link copied to clipboard
open override var isPickEnabled: Boolean
Link copied to clipboard

true when this shape's referencePosition coincides with where the user actually sees the shape (Placemark, Label, sightlines — the reference is the rendered location). false for shapes whose reference is computed from extended geometry and may sit far from where the user grabbed (Polygon centroid, Path centroid, Mesh).

Link copied to clipboard

Optional lambda to control current shape visibility based on its attributes and frame render context

Link copied to clipboard

The ellipse's radius perpendicular to it's heading, in meters. When the ellipse's heading is 0.0, the semi-major axis points East.

Link copied to clipboard

Sets the maximum number of angular intervals that may be used to approximate this ellipse's on screen.
Ellipse may use a minimum number of intervals to ensure that its appearance on screen at least roughly approximates the ellipse's shape. When the specified number of intervals is too small, it is clamped to an implementation-defined minimum number of intervals.
Ellipse may require that the number of intervals is an even multiple of some integer. When the specified number of intervals does not meet this criteria, the next smallest integer that meets ellipse's criteria is used instead.

Link copied to clipboard

Maximum number of intermediate edge intervals across a half-equator (PI radians) of arc. Per-edge subdivision count is scaled by edge length: steps = round(maximumNumEdgeIntervals * distanceRadians / PI), then further adjusted by polarThrottle near the poles for surface shapes. 3D shapes use the unthrottled count. A value of 0 disables intermediate vertex generation.

Link copied to clipboard

The maximum pixels a single edge interval will span before the number of intervals is increased. Increasing this value will make ellipses appear coarser.

Link copied to clipboard

The ellipse's radius parallel to it's heading, in meters. When the ellipse's heading is 0.0, the semi-minor axis points North.

Link copied to clipboard
Link copied to clipboard
open override var pickDelegate: Any?
Link copied to clipboard

Pole-throttle factor: higher values shrink the subdivision step near ±90° latitude so the straight 2D lon/lat segments between samples more closely follow the true great-circle path. A value of 0 disables throttling (uniform step).

Link copied to clipboard
open override val referencePosition: Position

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.

Link copied to clipboard

Azimuth of the first arc vertex of a partial ellipse (sector / pie slice), measured clockwise from North in the ellipse's local frame. Combined with sweepAngle, it defines the angular extent of the visualized sector. Default is ZERO.

Link copied to clipboard

Clockwise angular sweep of a partial ellipse (sector / pie slice), starting at startAzimuth. When 0° or 360° the ellipse renders as a closed shape (default behavior). Otherwise the geometry becomes a wedge: the perimeter spans `startAzimuth`, `startAzimuth + sweepAngle` and is closed through the ellipse center, producing a pie-slice fill plus two radial outline edges from the center to the arc endpoints.

Link copied to clipboard
open override var zOrder: Double

Functions

Link copied to clipboard
fun AbstractShape.applyFeatureStyle(properties: LinkedHashMap<String, Any?>, defaultLineColor: Color? = null, defaultFillColor: Color? = null)

Apply simplestyle stroke / fill / stroke-width to a Path or Polygon's attributes. Writes outline / interior color only when there's an explicit value to apply — either the feature's stroke / fill property OR a non-null defaultLineColor / defaultFillColor. With both null (the default), an absent property leaves the renderable's existing color alone — important when the layer's shapeAttributes supplied an intentional template colour at construction time (e.g. Shapefile's translucent blue) that would otherwise be clobbered by auto-style.

Link copied to clipboard
open override fun <T> getUserProperty(key: Any): T?
Link copied to clipboard
open override fun hasUserProperty(key: Any): Boolean
Link copied to clipboard
open override fun moveTo(globe: Globe, position: Position)

Move the shape over the globe's surface while maintaining its original azimuth, its orientation relative to North.

Link copied to clipboard
open override fun putUserProperty(key: Any, value: Any): Any?
Link copied to clipboard
open override fun removeUserProperty(key: Any): Any?
Link copied to clipboard
open override fun render(rc: RenderContext)
Link copied to clipboard
open override fun reset()