Celeritas 0.7.0-dev.245+develop.a7be925e
Loading...
Searching...
No Matches
Public Member Functions | List of all members
celeritas::orangeinp::IntersectRegionInterface Class Referenceabstract

Interface class for building non-reentrant spatial regions. More...

#include <IntersectRegion.hh>

Inheritance diagram for celeritas::orangeinp::IntersectRegionInterface:
Inheritance graph
[legend]

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 (IntersectRegionInterface const &)=default
 
IntersectRegionInterfaceoperator= (IntersectRegionInterface const &)=default
 
 IntersectRegionInterface (IntersectRegionInterface &&)=default
 
IntersectRegionInterfaceoperator= (IntersectRegionInterface &&)=default
 

Detailed Description

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.

Note
Additional methods such as volume calculation may be added here later.

Constructor & Destructor Documentation

◆ IntersectRegionInterface() [1/3]

celeritas::orangeinp::IntersectRegionInterface::IntersectRegionInterface ( )
protecteddefault

Allow construction and assignment only through daughter classes

◆ IntersectRegionInterface() [2/3]

celeritas::orangeinp::IntersectRegionInterface::IntersectRegionInterface ( IntersectRegionInterface const )
protecteddefault

Allow construction and assignment only through daughter classes

◆ IntersectRegionInterface() [3/3]

celeritas::orangeinp::IntersectRegionInterface::IntersectRegionInterface ( IntersectRegionInterface &&  )
protecteddefault

Allow construction and assignment only through daughter classes

Member Function Documentation

◆ build()

virtual void celeritas::orangeinp::IntersectRegionInterface::build ( IntersectSurfaceBuilder ) const
pure virtual

◆ operator=() [1/2]

IntersectRegionInterface & celeritas::orangeinp::IntersectRegionInterface::operator= ( IntersectRegionInterface &&  )
protecteddefault

Allow construction and assignment only through daughter classes

◆ operator=() [2/2]

IntersectRegionInterface & celeritas::orangeinp::IntersectRegionInterface::operator= ( IntersectRegionInterface const )
protecteddefault

Allow construction and assignment only through daughter classes

◆ output()

virtual void celeritas::orangeinp::IntersectRegionInterface::output ( JsonPimpl ) const
pure virtual

The documentation for this class was generated from the following file: