Celeritas
0.5.0-56+6b053cd
|
Interface class for building non-reentrant spatial regions. More...
#include <IntersectRegion.hh>
Public Member Functions | |
virtual void | build (IntersectSurfaceBuilder &) const =0 |
Construct surfaces that are AND-ed into this region. | |
virtual void | output (JsonPimpl *) const =0 |
Write the region to a JSON object. | |
Protected Member Functions | |
IntersectRegionInterface ()=default | |
virtual | ~IntersectRegionInterface ()=default |
CELER_DEFAULT_COPY_MOVE (IntersectRegionInterface) | |
Interface class for building non-reentrant spatial regions.
This is a building block for constructing more complex objects out of smaller spatial regions. A shape
object will have a single intersect region, and a solid
object region may have multiple adjacent intersect regions.
Convex regions should be as minimal as possible and rely on transformations to change axes, displacement, etc. As a general rule, the exterior bounding box of a intersect region should be centered on the origin, and objects should be aligned along the z axis.
When implementing this class, prefer to build simpler surfaces (planes) before complex ones (cones) in case we implement short-circuiting logic, since expressions are currently sorted.
|
protecteddefault |
Allow construction and assignment only through daughter classes
|
protectedvirtualdefault |
Allow construction and assignment only through daughter classes
|
protected |
Allow construction and assignment only through daughter classes