gov.nasa.worldwind.geom.Extent Maven / Gradle / Ivy
The newest version!
/*
* Copyright (C) 2012 United States Government as represented by the Administrator of the
* National Aeronautics and Space Administration.
* All Rights Reserved.
*/
package gov.nasa.worldwind.geom;
import gov.nasa.worldwind.View;
/**
* Represents a volume enclosing one or more objects or collections of points. Primarily used to test intersections with
* other objects.
*
* @author Tom Gaskins
* @version $Id: Extent.java 1171 2013-02-11 21:45:02Z dcollins $
*/
public interface Extent
{
/**
* Returns the extent's center point.
*
* @return the extent's center point.
*/
Vec4 getCenter();
/**
* Returns the extent's diameter. The computation of the diameter depends on the implementing class. See the
* documentation for the individual classes to determine how they compute a diameter.
*
* @return the extent's diameter.
*/
double getDiameter();
/**
* Returns the extent's radius. The computation of the radius depends on the implementing class. See the
* documentation for the individual classes to determine how they compute a radius.
*
* @return the extent's radius.
*/
double getRadius();
/**
* Determines whether or not this 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.
*
* @param frustum the Frustum
with which to test for intersection.
*
* @return true if there is an intersection, false otherwise.
*/
boolean intersects(Frustum frustum);
/**
* Computes the intersections of this extent with 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.
*
* @param line the Line
with which to intersect this Extent
.
*
* @return an array of intersections representing all the points where line
enters or leave this
* Extent
.
*/
gov.nasa.worldwind.geom.Intersection[] intersect(gov.nasa.worldwind.geom.Line line);
/**
* Determines whether or not 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.
*
* @param line the Line
with which to test for intersection.
*
* @return true if an intersection is found, false otherwise.
*/
boolean intersects(gov.nasa.worldwind.geom.Line line);
/**
* Calculate whether or not this Extent
is intersected by plane
.
*
* @param plane the Plane
with which to test for intersection.
*
* @return true if plane
is found to intersect this Extent
.
*/
boolean intersects(gov.nasa.worldwind.geom.Plane plane);
/**
* Computes the effective radius of the extent relative to a specified plane.
*
* @param plane the plane.
*
* @return the effective radius, or 0 if the plane is null.
*/
double getEffectiveRadius(Plane plane);
/**
* Computes the area in square pixels of this 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
.
*
* @param view the View
for which to compute a projected screen area.
*
* @return the projected screen area of this 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.
*
* @throws IllegalArgumentException if the view
is null
.
*/
double getProjectedArea(View view);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy