NASA World Wind

gov.nasa.worldwind.render
Class Wedge

java.lang.Object
  extended by gov.nasa.worldwind.avlist.AVListImpl
      extended by gov.nasa.worldwind.WWObjectImpl
          extended by gov.nasa.worldwind.render.AbstractShape
              extended by gov.nasa.worldwind.render.RigidShape
                  extended by gov.nasa.worldwind.render.Wedge
All Implemented Interfaces:
AVList, MessageListener, Exportable, ExtentHolder, Movable, GeographicExtent, Highlightable, OrderedRenderable, Renderable, Restorable, WWObject, PropertyChangeListener, EventListener

public class Wedge
extends RigidShape

A general cylinder volume defined by a center position, height and radius, or alternatively, by three axis radii.


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
protected static int DEFAULT_SUBDIVISIONS
           
protected  int faceCount
           
protected  int subdivisions
           
protected  Angle wedgeAngle
           
 
Fields inherited from class gov.nasa.worldwind.render.RigidShape
centerPosition, DEFAULT_GEOMETRY_CACHE_SIZE, detailHint, eastWestRadius, 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, enableBatchPicking, enableBatchRendering, enableDepthOffset, highlightAttrs, highlighted, maxExpiryTime, minExpiryTime, normalAttrs, outlinePickWidth, outlineShapeRenderer, pickLayer, pickSupport, referencePosition, sector, shapeDataCache, VBO_THRESHOLD, viewDistanceExpiration, visible
 
Fields inherited from interface gov.nasa.worldwind.Exportable
FORMAT_NOT_SUPPORTED, FORMAT_PARTIALLY_SUPPORTED, FORMAT_SUPPORTED
 
Constructor Summary
Wedge()
          Construct a wedge with default parameters
Wedge(Position centerPosition, Angle angle, double height, double radius)
          Constructs a Wedge from a specified center position, height, radius and angle.
Wedge(Position centerPosition, Angle angle, double northSouthRadius, double verticalRadius, double eastWestRadius)
          Constructs a wedge from a specified center position and axes lengths.
Wedge(Position centerPosition, Angle angle, double northSouthRadius, double verticalRadius, double eastWestRadius, Angle heading, Angle tilt, Angle roll)
          Constructs a wedge from a specified center position, axes lengths and rotation angles.
 
Method Summary
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(XMLStreamWriter xmlWriter)
          Exports shape-specific fields.
protected  void doGetRestorableState(RestorableSupport rs, RestorableSupport.StateObject context)
           
protected  void doRestoreState(RestorableSupport rs, RestorableSupport.StateObject context)
           
protected  void drawGeometry(DrawContext dc, int mode, int count, int type, Buffer elementBuffer, RigidShape.ShapeData shapeData, int face)
          Renders the wedge, using data from the provided buffer and the given parameters.
 int getFaceCount()
          Returns the number of separate faces that comprise this shape.
 int getSubdivisions()
           
 Angle getWedgeAngle()
          Returns the angle covered by this wedge.
protected  void initialize()
          Called during construction to establish any subclass-specific state such as different default values than those set by this class.
 String isExportFormatSupported(String mimeType)
          No export formats supported.
protected  void makeGeometry(RigidShape.ShapeData shapeData)
          Sets the Geometry mesh for this wedge, 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 makeUnitWedge(int subdivisions, List<Geometry> meshes)
          Generates a unit wedge 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.
 void setWedgeAngle(Angle angle)
          Specifies the angle covered by the wedge.
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, doMakeOrderedRenderable, drawGeometry, fillVBO, getCenterPosition, getCurrentShapeData, getDetailHint, getEastWestRadius, getExtent, getGeometryBuilder, getGeometryCache, getHeading, getImageSource, getNorthSouthRadius, getOffsets, getReferencePosition, getRestorableState, getRoll, getSector, getSkewEastWest, getSkewNorthSouth, getTexture, getTilt, getVboIds, getVerticalRadius, 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, countTriangleVertices, createPickedObject, determineActiveAttributes, doDrawOrderedRenderable, drawBatched, drawInterior, drawOrderedRenderable, drawOutline, endDrawing, export, exportAsKML, getActiveAttributes, getAltitudeMode, getAttributes, getCurrentData, getDelegateOwner, getDistanceFromEye, getExtent, getGeometryRegenerationInterval, getHighlightAttributes, getOutlinePickWidth, getReferencePoint, getVboIds, intersectsFrustum, isEnableBatchPicking, isEnableBatchRendering, isEnableDepthOffset, isHighlighted, isTerrainDependent, isViewDistanceExpiration, isVisible, makeOrderedRenderable, makeTexture, move, mustApplyLighting, mustApplyLighting, mustCreateNormals, mustCreateNormals, mustDrawInterior, mustDrawOutline, pick, prepareToDrawInterior, prepareToDrawOutline, render, setAltitudeMode, setAttributes, setDelegateOwner, setEnableBatchPicking, setEnableBatchRendering, setEnableDepthOffset, setGeometryRegenerationInterval, setHighlightAttributes, setHighlighted, setOutlinePickWidth, setReferencePosition, setViewDistanceExpiration, setVisible, shouldUseVBOs
 
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, finalize, 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

faceCount

protected int faceCount

subdivisions

protected int subdivisions

wedgeAngle

protected Angle wedgeAngle
Constructor Detail

Wedge

public Wedge()
Construct a wedge with default parameters


Wedge

public Wedge(Position centerPosition,
             Angle angle,
             double height,
             double radius)
Constructs a Wedge from a specified center position, height, radius and angle.

Parameters:
centerPosition - the Wedge's center position.
height - the Wedge's height, in meters.
radius - the radius of the Wedge's base, in meters.
angle - the angle covered by the wedge
Throws:
IllegalArgumentException - if the center position is null, if the wedgeAngle is null or not in [0, 2*PI], or if any of the radii are not greater than 0.

Wedge

public Wedge(Position centerPosition,
             Angle angle,
             double northSouthRadius,
             double verticalRadius,
             double eastWestRadius)
Constructs a wedge from a specified center position and axes lengths.

Parameters:
centerPosition - the wedge's center position.
angle - the angle covered by the wedge
northSouthRadius - the wedge's north-south radius, in meters.
verticalRadius - the wedge's vertical radius, in meters.
eastWestRadius - the wedge's east-west radius, in meters.
Throws:
IllegalArgumentException - if the center position is null, if the wedgeAngle is null or not in [0, 2*PI], or if any of the radii are not greater than 0.

Wedge

public Wedge(Position centerPosition,
             Angle angle,
             double northSouthRadius,
             double verticalRadius,
             double eastWestRadius,
             Angle heading,
             Angle tilt,
             Angle roll)
Constructs a wedge 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 wedge's center position.
angle - the angle covered by the wedge
northSouthRadius - the wedge's north-south radius, in meters.
verticalRadius - the wedge's vertical radius, in meters.
eastWestRadius - the wedge's east-west radius, in meters.
heading - the wedge's azimuth, its rotation about its vertical axis.
tilt - the wedge pitch, its rotation about its east-west axis.
roll - the wedge's roll, its rotation about its north-south axis.
Throws:
IllegalArgumentException - the centerPosition is null, or if the wedgeAngle is null or not in [0, 2*PI], or if any of the radii are not greater than 0.
Method Detail

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 class RigidShape
Parameters:
dc - the current drawContext.
shapeData - the current globe-specific shape data

createIntersectionGeometry

protected RigidShape.ShapeData createIntersectionGeometry(Terrain terrain)
Specified by:
createIntersectionGeometry in class RigidShape

doExportAsKML

protected void doExportAsKML(XMLStreamWriter xmlWriter)
                      throws IOException,
                             XMLStreamException
Description copied from class: AbstractShape
Exports shape-specific fields.

Specified by:
doExportAsKML in class AbstractShape
Parameters:
xmlWriter - the export writer to write to.
Throws:
IOException - if an IO error occurs while writing to the output destination.
XMLStreamException - if an exception occurs converting this shape's fields to XML.

doGetRestorableState

protected void doGetRestorableState(RestorableSupport rs,
                                    RestorableSupport.StateObject context)
Overrides:
doGetRestorableState in class RigidShape

doRestoreState

protected void doRestoreState(RestorableSupport rs,
                              RestorableSupport.StateObject context)
Overrides:
doRestoreState in class RigidShape

drawGeometry

protected void drawGeometry(DrawContext dc,
                            int mode,
                            int count,
                            int type,
                            Buffer elementBuffer,
                            RigidShape.ShapeData shapeData,
                            int face)
Renders the wedge, using data from the provided buffer and the given parameters.

Specified by:
drawGeometry in class RigidShape
Parameters:
dc - the current draw context
mode - the render mode
count - the number of elements to be drawn
type - the data type of the elements to be drawn
elementBuffer - the buffer containing the list of elements to be drawn
shapeData - this shape's current globe-specific shape data
face - the index of the shape face to render

getFaceCount

public int getFaceCount()
Description copied from class: RigidShape
Returns the number of separate faces that comprise this shape.

Overrides:
getFaceCount in class RigidShape
Returns:
number of faces

getSubdivisions

public int getSubdivisions()
Specified by:
getSubdivisions in class RigidShape

getWedgeAngle

public Angle getWedgeAngle()
Returns the angle covered by this wedge.

Returns:
the angle covered by the wedge.

initialize

protected void initialize()
Description copied from class: AbstractShape
Called during construction to establish any subclass-specific state such as different default values than those set by this class.

Overrides:
initialize in class RigidShape

isExportFormatSupported

public String isExportFormatSupported(String mimeType)
No export formats supported.

Specified by:
isExportFormatSupported in interface Exportable
Overrides:
isExportFormatSupported in class AbstractShape
Parameters:
mimeType - Desired export format.
Returns:
One of Exportable.FORMAT_SUPPORTED, Exportable.FORMAT_NOT_SUPPORTED, or Exportable.FORMAT_PARTIALLY_SUPPORTED.
See Also:
Exportable.export(String, Object)

makeGeometry

protected void makeGeometry(RigidShape.ShapeData shapeData)
Sets the Geometry mesh for this wedge, 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 class RigidShape
Parameters:
shapeData - this shape's current shape data.
Throws:
IllegalArgumentException - if the wedgeAngle is null

makeUnitWedge

protected void makeUnitWedge(int subdivisions,
                             List<Geometry> meshes)
Generates a unit wedge 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 wedge geometry
meshes - the Geometry list to hold the computed points, etc. for all wedge Geometries
Throws:
IllegalArgumentException - if the wedgeAngle is null

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 class RigidShape
Parameters:
dc - the current draw context.
Returns:
true if this shape's geometry must be regenerated, otherwise false.

setWedgeAngle

public void setWedgeAngle(Angle angle)
Specifies the angle covered by the wedge. This angle must fall in [0, 2*PI].

Parameters:
angle - the angle covered by the wedge. Must be in [0, 2*PI].
Throws:
IllegalArgumentException - if the wedgeAngle is null, or is not in [0, 2*PI].

sufficientDetail

protected boolean sufficientDetail(DrawContext dc,
                                   int subdivisions,
                                   RigidShape.ShapeData shapeData)

NASA World Wind