This is an abstract class for any volume in any sense which can be said to define the locality of reference of a node in a graph, along with all of its descendants. More...
Public Types | |
enum | BoundsType { BTDefault = 0, BTBest = 1, BTSphere = 2, BTBox = 3 } |
enum | IntersectionFlags { IFNoIntersection = 0, IFPossible = 1, IFSome = 2, IFAll = 4, IFDontUnderstand = 8 } |
Public Member Functions | |
int | contains (BoundingVolume const vol) |
Returns the appropriate set of IntersectionFlags to indicate the amount of intersection with the indicated volume. | |
bool | extendBy (BoundingVolume const vol) |
Increases the size of the volume to include the given volume. | |
bool | isEmpty () |
Any kind of volume might be empty. | |
bool | isInfinite () |
The other side of the empty coin is an infinite volume. | |
BoundingVolume | makeCopy () |
output (ostream out) | |
setInfinite () | |
Marks the volume as infinite, even if it is normally finite. | |
write (ostream out, int indent_level) | |
write (ostream out) | |
Static Public Member Functions | |
static TypeHandle | getClassType () |
This is an abstract class for any volume in any sense which can be said to define the locality of reference of a node in a graph, along with all of its descendants.
It is not necessarily a geometric volume (although see GeometricBoundingVolume); this is simply an abstract interface for bounds of any sort.
enum BoundsType |
enum IntersectionFlags |
int contains | ( | BoundingVolume const | vol | ) |
Returns the appropriate set of IntersectionFlags to indicate the amount of intersection with the indicated volume.
bool extendBy | ( | BoundingVolume const | vol | ) |
Increases the size of the volume to include the given volume.
static TypeHandle getClassType | ( | ) | [static] |
Reimplemented from TypedReferenceCount.
Reimplemented in UnionBoundingVolume, OmniBoundingVolume, IntersectionBoundingVolume, BoundingSphere, BoundingPlane, BoundingLine, BoundingHexahedron, BoundingBox, FiniteBoundingVolume, and GeometricBoundingVolume.
bool isEmpty | ( | ) |
Any kind of volume might be empty.
This is a degenerate volume that contains no points; it's not the same as, for instance, a sphere with radius zero, since that contains one point (the center). It intersects with no other volumes.
bool isInfinite | ( | ) |
The other side of the empty coin is an infinite volume.
This is a degenerate state of a normally finite volume that contains all points. (Note that some kinds of infinite bounding volumes, like binary separating planes, do not contain all points and thus correctly return is_infinite() == false, even though they are technically infinite. This is a special case of the word 'infinite' meaning the volume covers all points in space.)
It completely intersects with all other volumes except empty volumes.
setInfinite | ( | ) |
Marks the volume as infinite, even if it is normally finite.
You can think of this as an infinite extend_by() operation.