AC-Vector-2.1.0: Efficient geometric vectors and transformations.



This module provides the BBox3 type for 3-dimensional bounding boxes ("bounding volumes").



data BBox3 Source

A BBox3 is a 3D bounding box (aligned to the coordinate axies).




minX :: !Scalar
minY :: !Scalar
minZ :: !Scalar
maxX :: !Scalar
maxY :: !Scalar
maxZ :: !Scalar


rangeX :: BBox3 -> RangeSource

Return the X-range that this bounding box covers.

rangeY :: BBox3 -> RangeSource

Return the Y-range that this bounding box covers.

rangeZ :: BBox3 -> RangeSource

Return the Z-range that this bounding box covers.

rangeXYZ :: Range -> Range -> Range -> BBox3Source

Given ranges for each coordinate axis, construct a bounding box.

bounds :: Vector3 -> Vector3 -> BBox3Source

Given a pair of corner points, construct a bounding box. (The points must be from opposite corners, but it doesn't matter which corners nor which order they are given in.)

within_bounds :: Vector3 -> BBox3 -> BoolSource

Test whether a given 3D vector is inside this bounding box.

min_bound :: BBox3 -> Vector3Source

Return the minimum values for all coordinates.

max_bound :: BBox3 -> Vector3Source

Return the maximum values for all coordinates.

union :: BBox3 -> BBox3 -> BBox3Source

Take the union of two bounding boxes. The result is a new bounding box that contains all the points the original boxes contained, plus any extra space between them.

isect :: BBox3 -> BBox3 -> Maybe BBox3Source

Take the intersection of two bounding boxes. If the boxes do not overlap, return Nothing. Otherwise return a new bounding box containing only the points common to both argument boxes.