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.
This enum is used to control the automatic generation of bounding volumes.
enumerator BT_default = 0
enumerator BT_best = 1
enumerator BT_sphere = 2
enumerator BT_box = 3
enumerator BT_fastest = 4
- enumerator BT_default = 0
contains()functions return the union of one or more of these bits.
enumerator IF_no_intersection = 0
If no bits are set, it is known that there is no intersection.
enumerator IF_possible = 1
IF_possible is set if there might be an intersection.
enumerator IF_some = 2
IF_some is set if there is definitely an intersection. In this case, IF_possible will also be set.
enumerator IF_all = 4
When IF_all is set, both IF_possible and IF_some will also be set.
enumerator IF_dont_understand = 8
IF_dont_understand is set if the particular volumevolume intersection test has not been implemented.
- enumerator IF_no_intersection = 0
int contains(BoundingVolume const *vol) const
Returns the appropriate set of
IntersectionFlagsto indicate the amount of intersection with the indicated volume.
bool extend_by(BoundingVolume const *vol)
Increases the size of the volume to include the given volume.
bool is_empty(void) const
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 is_infinite(void) const
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.
virtual void output(std::ostream &out) const = 0
Marks the volume as infinite, even if it is normally finite. You can think of this as an infinite
virtual void write(std::ostream &out, int indent_level = 0) const
- enum BoundsType