Celeritas 0.6.0-dev.115+3b60a5fd
|
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 | |
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
|
pure virtual |
Construct surfaces that are AND-ed into this region.
Implemented in celeritas::orangeinp::Box, celeritas::orangeinp::Cone, celeritas::orangeinp::Cylinder, celeritas::orangeinp::Ellipsoid, celeritas::orangeinp::GenPrism, celeritas::orangeinp::InfWedge, celeritas::orangeinp::Involute, celeritas::orangeinp::Parallelepiped, celeritas::orangeinp::Prism, and celeritas::orangeinp::Sphere.
|
protected |
Allow construction and assignment only through daughter classes
|
pure virtual |
Write the region to a JSON object.
Implemented in celeritas::orangeinp::Box, celeritas::orangeinp::Cone, celeritas::orangeinp::Cylinder, celeritas::orangeinp::Ellipsoid, celeritas::orangeinp::GenPrism, celeritas::orangeinp::InfWedge, celeritas::orangeinp::Involute, celeritas::orangeinp::Parallelepiped, celeritas::orangeinp::Prism, and celeritas::orangeinp::Sphere.