Package gov.nasa.worldwind.render
Class Ellipsoid
- java.lang.Object
-
- gov.nasa.worldwind.avlist.AVListImpl
-
- gov.nasa.worldwind.WWObjectImpl
-
- gov.nasa.worldwind.render.AbstractShape
-
- gov.nasa.worldwind.render.RigidShape
-
- gov.nasa.worldwind.render.Ellipsoid
-
- All Implemented Interfaces:
AVList
,Draggable
,MessageListener
,Exportable
,ExtentHolder
,Movable
,Movable2
,Attributable
,GeographicExtent
,Highlightable
,OrderedRenderable
,PreRenderable
,Renderable
,Restorable
,WWObject
,java.beans.PropertyChangeListener
,java.util.EventListener
public class Ellipsoid extends RigidShape
A general ellipsoid volume defined by a center position and the three ellipsoid axis radii. If A is the radius in the north-south direction, and b is the radius in the east-west direction, and c is the radius in the vertical direction (increasing altitude), then A == B == C defines a sphere, A == B > C defines a vertically flattened spheroid (disk-shaped), A == B < C defines a vertically stretched spheroid.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class gov.nasa.worldwind.render.RigidShape
RigidShape.Offsets, RigidShape.ShapeData
-
Nested classes/interfaces inherited from class gov.nasa.worldwind.render.AbstractShape
AbstractShape.AbstractShapeData
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
DEFAULT_SUBDIVISIONS
protected int
subdivisions
-
Fields inherited from class gov.nasa.worldwind.render.RigidShape
centerPosition, DEFAULT_GEOMETRY_CACHE_SIZE, detailHint, eastWestRadius, faceCount, GEOMETRY_CACHE_KEY, GEOMETRY_CACHE_NAME, geometryBuilder, heading, imageSources, northSouthRadius, offsets, offsetTextureCoords, previousIntersectionGlobeStateKey, previousIntersectionShapeData, previousIntersectionTerrain, renderExtent, roll, skewEastWest, skewNorthSouth, textures, tilt, verticalRadius
-
Fields inherited from class gov.nasa.worldwind.render.AbstractShape
activeAttributes, altitudeMode, BEogsh, currentData, DEFAULT_ALTITUDE_MODE, DEFAULT_GEOMETRY_GENERATION_INTERVAL, DEFAULT_HIGHLIGHT_MATERIAL, DEFAULT_INTERIOR_MATERIAL, DEFAULT_OUTLINE_MATERIAL, DEFAULT_OUTLINE_PICK_WIDTH, defaultAttributes, delegateOwner, dragEnabled, draggableSupport, enableBatchPicking, enableBatchRendering, enableDepthOffset, highlightAttrs, highlighted, maxExpiryTime, minExpiryTime, normalAttrs, outlinePickWidth, outlineShapeRenderer, pickLayer, pickSupport, referencePosition, sector, shapeDataCache, surfaceShape, VBO_THRESHOLD, viewDistanceExpiration, visible
-
Fields inherited from interface gov.nasa.worldwind.Exportable
FORMAT_NOT_SUPPORTED, FORMAT_PARTIALLY_SUPPORTED, FORMAT_SUPPORTED
-
-
Constructor Summary
Constructors Constructor Description Ellipsoid()
Construct a default ellipsoid with centerPosition ZERO and radii all equal to one.Ellipsoid(Position centerPosition, double northSouthRadius, double verticalRadius, double eastWestRadius)
Construct an ellipsoid from a specified center position and axes lengths.Ellipsoid(Position centerPosition, double northSouthRadius, double verticalRadius, double eastWestRadius, Angle heading, Angle tilt, Angle roll)
Construct an ellipsoid from a specified center position, axes lengths and rotation angles.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected double
computeDetailThreshold()
Computes a threshold value, based on the current detailHint, for use in the sufficientDetail() calculation.protected void
computeSubdivisions(DrawContext dc, RigidShape.ShapeData shapeData)
Computes the number of subdivisions necessary to achieve the expected Level of Detail given the shape's relationship to the viewer.protected RigidShape.ShapeData
createIntersectionGeometry(Terrain terrain)
protected void
doExportAsKML(javax.xml.stream.XMLStreamWriter xmlWriter)
Exports shape-specific fields.protected void
drawGeometry(DrawContext dc, int mode, int count, int type, java.nio.Buffer elementBuffer, RigidShape.ShapeData shapeData, int face)
Renders the Ellipsoid, using data from the provided buffer and the given parameters.int
getSubdivisions()
java.lang.String
isExportFormatSupported(java.lang.String mimeType)
No export formats supported.protected void
makeEllipsoid(double a, double b, double c, int subdivisions, Geometry dest)
Generates ellipsoidal geometry, including the vertices, indices, normals and texture coordinates, tessellated with the specified number of divisions.protected void
makeGeometry(RigidShape.ShapeData shapeData)
Sets the Geometry mesh for this Ellipsoid, either by pulling it from the geometryCache, or by creating it anew if the appropriate geometry does not yet exist in the cache.protected void
makeUnitSphere(int subdivisions, Geometry dest)
Generates a unit sphere geometry, including the vertices, indices, normals and texture coordinates, tessellated with the specified number of divisions.protected boolean
mustRegenerateGeometry(DrawContext dc)
Indicates whether this shape's renderable geometry must be recomputed, either as a result of an attribute or property change or the expiration of the geometry regeneration interval.protected boolean
sufficientDetail(DrawContext dc, int subdivisions, RigidShape.ShapeData shapeData)
-
Methods inherited from class gov.nasa.worldwind.render.RigidShape
beginDrawing, clearCachedVbos, clearIntersectionGeometry, computeExtent, computeReferencePoint, computeReferencePoint, computeRenderMatrix, computeRenderMatrix, computeRenderMatrixInverse, computeTransformedVertices, createCacheEntry, doDrawInterior, doDrawOutline, doGetRestorableState, doMakeOrderedRenderable, doRestoreState, drawGeometry, fillVBO, getCenterPosition, getCurrentShapeData, getDetailHint, getEastWestRadius, getExtent, getFaceCount, getGeometryBuilder, getGeometryCache, getHeading, getImageSource, getNorthSouthRadius, getOffsets, getReferencePosition, getRestorableState, getRoll, getSector, getSkewEastWest, getSkewNorthSouth, getTexture, getTilt, getVboIds, getVerticalRadius, initialize, intersect, intersect, intersect, intersectFace, isOrderedRenderableValid, isSameAsPreviousTerrain, moveTo, mustApplyTexture, mustApplyTexture, reset, restoreState, setCenterPosition, setDetailHint, setEastWestRadius, setFaceCount, setHeading, setImageSource, setImageSources, setImageSources, setModelViewMatrix, setNorthSouthRadius, setOffset, setRoll, setSkewEastWest, setSkewNorthSouth, setTexture, setTilt, setUpGeometryCache, setVerticalRadius
-
Methods inherited from class gov.nasa.worldwind.render.AbstractShape
addOrderedRenderable, checkViewDistanceExpiration, computeExtentFromPositions, computePoint, computePoint, countTriangleVertices, createPickedObject, createSurfaceShape, determineActiveAttributes, doDrag, doDrawOrderedRenderable, drag, drawBatched, drawInterior, drawOrderedRenderable, drawOutline, endDrawing, export, exportAsKML, getActiveAttributes, getAltitudeMode, getAttributes, getCurrentData, getDelegateOwner, getDistanceFromEye, getExtent, getGeometryRegenerationInterval, getHighlightAttributes, getOutlinePickWidth, getReferencePoint, getVboIds, intersectsFrustum, isDragEnabled, isEnableBatchPicking, isEnableBatchRendering, isEnableDepthOffset, isHighlighted, isTerrainDependent, isViewDistanceExpiration, isVisible, makeOrderedRenderable, makeTexture, move, moveTo, mustApplyLighting, mustApplyLighting, mustCreateNormals, mustCreateNormals, mustDrawInterior, mustDrawOutline, pick, prepareToDrawInterior, prepareToDrawOutline, preRender, render, setAltitudeMode, setAttributes, setDelegateOwner, setDragEnabled, setEnableBatchPicking, setEnableBatchRendering, setEnableDepthOffset, setGeometryRegenerationInterval, setHighlightAttributes, setHighlighted, setOutlinePickWidth, setReferencePosition, setViewDistanceExpiration, setVisible, shouldUseVBOs, updateSurfaceShape
-
Methods inherited from class gov.nasa.worldwind.WWObjectImpl
onMessage, propertyChange
-
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
-
-
-
Field Detail
-
DEFAULT_SUBDIVISIONS
protected static final int DEFAULT_SUBDIVISIONS
- See Also:
- Constant Field Values
-
subdivisions
protected int subdivisions
-
-
Constructor Detail
-
Ellipsoid
public Ellipsoid()
Construct a default ellipsoid with centerPosition ZERO and radii all equal to one.
-
Ellipsoid
public Ellipsoid(Position centerPosition, double northSouthRadius, double verticalRadius, double eastWestRadius)
Construct an ellipsoid from a specified center position and axes lengths.- Parameters:
centerPosition
- the ellipsoid's center position.northSouthRadius
- the ellipsoid's north-south radius, in meters.verticalRadius
- the ellipsoid's vertical radius, in meters.eastWestRadius
- the ellipsoid's east-west radius, in meters.- Throws:
java.lang.IllegalArgumentException
- if the center position is null or any of the radii are not greater than 0.
-
Ellipsoid
public Ellipsoid(Position centerPosition, double northSouthRadius, double verticalRadius, double eastWestRadius, Angle heading, Angle tilt, Angle roll)
Construct an ellipsoid from a specified center position, axes lengths and rotation angles. All angles are specified in degrees and positive angles are counter-clockwise.- Parameters:
centerPosition
- the ellipsoid's center position.northSouthRadius
- the ellipsoid's north-south radius, in meters.verticalRadius
- the ellipsoid's vertical radius, in meters.eastWestRadius
- the ellipsoid's east-west radius, in meters.heading
- the ellipsoid's azimuth, its rotation about its vertical axis.tilt
- the ellipsoids pitch, its rotation about its east-west axis.roll
- the ellipsoid's roll, its rotation about its north-south axis.
-
-
Method Detail
-
getSubdivisions
public int getSubdivisions()
- Specified by:
getSubdivisions
in classRigidShape
-
computeDetailThreshold
protected double computeDetailThreshold()
Computes a threshold value, based on the current detailHint, for use in the sufficientDetail() calculation.- Returns:
- the detailThreshold
-
computeSubdivisions
protected void computeSubdivisions(DrawContext dc, RigidShape.ShapeData shapeData)
Computes the number of subdivisions necessary to achieve the expected Level of Detail given the shape's relationship to the viewer.- Specified by:
computeSubdivisions
in classRigidShape
- Parameters:
dc
- the current drawContext.shapeData
- the current globe-specific shape data
-
sufficientDetail
protected boolean sufficientDetail(DrawContext dc, int subdivisions, RigidShape.ShapeData shapeData)
-
mustRegenerateGeometry
protected boolean mustRegenerateGeometry(DrawContext dc)
Description copied from class:AbstractShape
Indicates whether this shape's renderable geometry must be recomputed, either as a result of an attribute or property change or the expiration of the geometry regeneration interval.A
AbstractShape.AbstractShapeData
must be current when this method is called.- Overrides:
mustRegenerateGeometry
in classRigidShape
- Parameters:
dc
- the current draw context.- Returns:
- true if this shape's geometry must be regenerated, otherwise false.
-
makeGeometry
protected void makeGeometry(RigidShape.ShapeData shapeData)
Sets the Geometry mesh for this Ellipsoid, either by pulling it from the geometryCache, or by creating it anew if the appropriate geometry does not yet exist in the cache.- Specified by:
makeGeometry
in classRigidShape
- Parameters:
shapeData
- the current shape data.
-
makeUnitSphere
protected void makeUnitSphere(int subdivisions, Geometry dest)
Generates a unit sphere geometry, including the vertices, indices, normals and texture coordinates, tessellated with the specified number of divisions.- Parameters:
subdivisions
- the number of times to subdivide the unit sphere geometrydest
- the Geometry container to hold the computed points, etc.
-
drawGeometry
protected void drawGeometry(DrawContext dc, int mode, int count, int type, java.nio.Buffer elementBuffer, RigidShape.ShapeData shapeData, int face)
Renders the Ellipsoid, using data from the provided buffer and the given parameters.- Specified by:
drawGeometry
in classRigidShape
- Parameters:
dc
- the current draw contextmode
- the render modecount
- the number of elements to be drawntype
- the data type of the elements to be drawnelementBuffer
- the buffer containing the list of elements to be drawnshapeData
- this shape's current globe-specific shape dataface
- the shape face currently being drawn
-
makeEllipsoid
protected void makeEllipsoid(double a, double b, double c, int subdivisions, Geometry dest)
Generates ellipsoidal geometry, including the vertices, indices, normals and texture coordinates, tessellated with the specified number of divisions.- Parameters:
a
- the Ellipsoid radius along the east-west axisb
- the Ellipsoid radius along the vertical axisc
- the Ellipsoid radius along the north-south axissubdivisions
- the number of times to subdivide the unit sphere geometrydest
- the Geometry container to hold the computed points, etc.
-
createIntersectionGeometry
protected RigidShape.ShapeData createIntersectionGeometry(Terrain terrain)
- Specified by:
createIntersectionGeometry
in classRigidShape
-
isExportFormatSupported
public java.lang.String isExportFormatSupported(java.lang.String mimeType)
No export formats supported.- Specified by:
isExportFormatSupported
in interfaceExportable
- Overrides:
isExportFormatSupported
in classAbstractShape
- Parameters:
mimeType
- Desired export format.- Returns:
- One of
Exportable.FORMAT_SUPPORTED
,Exportable.FORMAT_NOT_SUPPORTED
, orExportable.FORMAT_PARTIALLY_SUPPORTED
. - See Also:
Exportable.export(String, Object)
-
doExportAsKML
protected void doExportAsKML(javax.xml.stream.XMLStreamWriter xmlWriter) throws java.io.IOException, javax.xml.stream.XMLStreamException
Description copied from class:AbstractShape
Exports shape-specific fields.- Specified by:
doExportAsKML
in classAbstractShape
- Parameters:
xmlWriter
- the export writer to write to.- Throws:
java.io.IOException
- if an IO error occurs while writing to the output destination.javax.xml.stream.XMLStreamException
- if an exception occurs converting this shape's fields to XML.
-
-