public class Cylinder extends Object implements Extent, Renderable
Cylinders are immutable.| Modifier and Type | Field and Description | 
|---|---|
| protected Vec4 | axisUnitDirection | 
| protected Vec4 | bottomCenter | 
| protected double | cylinderHeight | 
| protected double | cylinderRadius | 
| protected Vec4 | topCenter | 
| Constructor and Description | 
|---|
| Cylinder(Vec4 bottomCenter,
        Vec4 topCenter,
        double cylinderRadius)Create a Cylinder from two points and a radius. | 
| Cylinder(Vec4 bottomCenter,
        Vec4 topCenter,
        double cylinderRadius,
        Vec4 unitDirection)Create a Cylinder from two points, a radius and an axis direction. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected boolean | clipcyl(Vec4 raybase,
       Vec4 raycos,
       Vec4 bot,
       Vec4 top,
       Vec4 axis,
       double[] tVals) | 
| static Cylinder | computeBoundingCylinder(Iterable<? extends Vec4> points)Compute a bounding cylinder for a collection of points. | 
| static Cylinder | computeVerticalBoundingCylinder(Globe globe,
                               double verticalExaggeration,
                               Sector sector)Returns a cylinder that minimally surrounds the specified minimum and maximum elevations in the sector at a
 specified vertical exaggeration, and is oriented such that the cylinder axis is perpendicular to the globe's
 surface. | 
| static Cylinder | computeVerticalBoundingCylinder(Globe globe,
                               double verticalExaggeration,
                               Sector sector,
                               double minElevation,
                               double maxElevation)Returns a cylinder that minimally surrounds the specified minimum and maximum elevations in the sector at a
 specified vertical exaggeration, and is oriented such that the cylinder axis is perpendicular to the globe's
 surface. | 
| protected static Cylinder | computeVerticalBoundsFromSectorLatitudeRange(Globe globe,
                                            Sector sector,
                                            double minHeight,
                                            double maxHeight)Compute the Cylinder that surrounds the equator, and has height defined by the sector's minumum and maximum
 latitudes (including maxHeight). | 
| protected static Cylinder | computeVerticalBoundsFromSectorQuadrilateral(Globe globe,
                                            Sector sector,
                                            double minHeight,
                                            double maxHeight)Returns a cylinder that minimally surrounds the specified height range in the sector. | 
| protected static Cylinder | computeVerticalBoundsFromSectorVertices(Globe globe,
                                       Sector sector,
                                       double minHeight,
                                       double maxHeight)Returns a cylinder that surrounds the specified height range in the zero-area sector. | 
| boolean | equals(Object o) | 
| Vec4 | getAxisUnitDirection()Returns the unit-length axis of this cylinder. | 
| Vec4 | getBottomCenter()Returns the this cylinder's bottom-center point. | 
| Vec4 | getCenter()Return this cylinder's center point. | 
| double | getCylinderHeight()Returns this cylinder's height. | 
| double | getCylinderRadius()Returns this cylinder's radius. | 
| double | getDiameter()Returns the extent's diameter. | 
| double | getEffectiveRadius(Plane plane)Computes the effective radius of the extent relative to a specified plane. | 
| double | getProjectedArea(View view)Computes the area in square pixels of this  Extentafter it is projected into the specifiedview'sviewport. | 
| double | getRadius()Returns the extent's radius. | 
| Vec4 | getTopCenter()Returns the this cylinder's top-center point. | 
| double | getVolume()Return this cylinder's volume. | 
| int | hashCode() | 
| protected boolean | intcyl(Vec4 raybase,
      Vec4 raycos,
      Vec4 base,
      Vec4 axis,
      double radius,
      double[] tVals) | 
| Intersection[] | intersect(Line line)Computes the intersections of this extent with  line. | 
| boolean | intersects(Frustum frustum)Determines whether or not this  Extentintersectsfrustum. | 
| boolean | intersects(Line line)Determines whether or not  lineintersects thisExtent. | 
| boolean | intersects(Plane plane)Calculate whether or not this  Extentis intersected byplane. | 
| protected double | intersects(Plane plane,
          double effectiveRadius) | 
| protected double | intersectsAt(Plane plane,
            double effectiveRadius,
            Vec4[] endpoints) | 
| void | render(DrawContext dc)Display the cylinder. | 
| String | toString() | 
protected final Vec4 axisUnitDirection
protected final Vec4 bottomCenter
protected final double cylinderHeight
protected final double cylinderRadius
protected final Vec4 topCenter
public Cylinder(Vec4 bottomCenter, Vec4 topCenter, double cylinderRadius)
bottomCenter - the center point of of the cylinder's base.topCenter - the center point of the cylinders top.cylinderRadius - the cylinder's radius.IllegalArgumentException - if the radius is zero or the top or bottom point is null or they are
                                  coincident.public Cylinder(Vec4 bottomCenter, Vec4 topCenter, double cylinderRadius, Vec4 unitDirection)
bottomCenter - the center point of of the cylinder's base.topCenter - the center point of the cylinders top.cylinderRadius - the cylinder's radius.unitDirection - the unit-length axis of the cylinder.IllegalArgumentException - if the radius is zero or the top or bottom point is null or they are
                                  coincident.protected boolean clipcyl(Vec4 raybase, Vec4 raycos, Vec4 bot, Vec4 top, Vec4 axis, double[] tVals)
public static Cylinder computeBoundingCylinder(Iterable<? extends Vec4> points)
points - the points to compute a bounding cylinder for.WWMath.computePrincipalAxes(Iterable).IllegalArgumentException - if the point list is null or empty.computeVerticalBoundingCylinder(gov.nasa.worldwind.globes.Globe, double, Sector)public static Cylinder computeVerticalBoundingCylinder(Globe globe, double verticalExaggeration, Sector sector)
globe - The globe associated with the sector.verticalExaggeration - the vertical exaggeration to apply to the minimum and maximum elevations when
                             computing the cylinder.sector - the sector to return the bounding cylinder for.IllegalArgumentException - if sector is nullcomputeBoundingCylinder(Iterable)public static Cylinder computeVerticalBoundingCylinder(Globe globe, double verticalExaggeration, Sector sector, double minElevation, double maxElevation)
globe - The globe associated with the sector.verticalExaggeration - the vertical exaggeration to apply to the minimum and maximum elevations when
                             computing the cylinder.sector - the sector to return the bounding cylinder for.minElevation - the minimum elevation of the bounding cylinder.maxElevation - the maximum elevation of the bounding cylinder.IllegalArgumentException - if sector is nullcomputeBoundingCylinder(Iterable)protected static Cylinder computeVerticalBoundsFromSectorLatitudeRange(Globe globe, Sector sector, double minHeight, double maxHeight)
globe - The globe associated with the sector.sector - the sector to return the bounding cylinder for.minHeight - the minimum height to include in the bounding cylinder.maxHeight - the maximum height to include in the bounding cylinder.IllegalArgumentException - if sector is nullprotected static Cylinder computeVerticalBoundsFromSectorQuadrilateral(Globe globe, Sector sector, double minHeight, double maxHeight)
globe - The globe associated with the sector.sector - the sector to return the bounding cylinder for.minHeight - the minimum height to include in the bounding cylinder.maxHeight - the maximum height to include in the bounding cylinder.IllegalArgumentException - if sector is nullprotected static Cylinder computeVerticalBoundsFromSectorVertices(Globe globe, Sector sector, double minHeight, double maxHeight)
computeBoundsFromSectorQuadrilateral.globe - The globe associated with the sector.sector - the sector to return the bounding cylinder for.minHeight - the minimum height to include in the bounding cylinder.maxHeight - the maximum height to include in the bounding cylinder.IllegalArgumentException - if sector is nullpublic Vec4 getAxisUnitDirection()
public Vec4 getBottomCenter()
public Vec4 getCenter()
public double getCylinderHeight()
public double getCylinderRadius()
public double getDiameter()
getDiameter in interface Extentpublic double getEffectiveRadius(Plane plane)
getEffectiveRadius in interface Extentplane - the plane.public double getProjectedArea(View view)
Extent after it is projected into the specified
 view's viewport. The returned value is the screen area that this Extent covers in the
 infinite plane defined by the view's viewport. This area is not limited to the size of the
 view's viewport, and portions of this Extent are not clipped by the view's
 frustum.
 
 This returns Double.POSITIVE_INFINITY if the view's eye point is inside this
 Extent, or if any portion of this Extent is behind the eye point. In either case, this
 Extent has no finite projection on the view.getProjectedArea in interface Extentview - the View for which to compute a projected screen area.Extent in square pixels, or
         Double.POSITIVE_INFINITY if the view's eye point is inside this
         Extent or part of this Extent is behind the view's eye point.public double getRadius()
public Vec4 getTopCenter()
public double getVolume()
protected boolean intcyl(Vec4 raybase, Vec4 raycos, Vec4 base, Vec4 axis, double radius, double[] tVals)
public Intersection[] intersect(Line line)
line. The returned array may be either null or of
 zero length if no intersections are discovered. It does not contain null elements. Tangential intersections are
 marked as such. line is considered to have infinite length in both directions.public boolean intersects(Frustum frustum)
Extent intersects frustum. Returns true if any part of
 these two objects intersect, including the case where either object wholly contains the other, false otherwise.intersects in interface Extentfrustum - the Frustum with which to test for intersection.public boolean intersects(Line line)
line intersects this Extent. This method may be faster than
 checking the size of the array returned by intersect(Line). Implementing methods must ensure that
 this method returns true if and only if intersect(Line) returns a non-null array containing at least
 one element.intersects in interface Extentline - the Line with which to test for intersection.public boolean intersects(Plane plane)
Extent is intersected by plane.intersects in interface Extentplane - the Plane with which to test for intersection.plane is found to intersect this Extent.protected double intersects(Plane plane, double effectiveRadius)
public void render(DrawContext dc)
render in interface Renderabledc - the current draw context.IllegalArgumentException - if the draw context is null.DrawContext