Celeritas  0.5.0-86+4a8eea4
Public Types | Public Member Functions | List of all members
celeritas::orangeinp::IntersectSurfaceBuilder Class Reference

Build a region of intersecting surfaces as a CSG node. More...

#include <IntersectSurfaceBuilder.hh>

Public Types

using State = detail::IntersectSurfaceState
 
using UnitBuilder = detail::CsgUnitBuilder
 
using VecNode = std::vector< NodeId >
 
Types
using Tol = Tolerance<>
 

Public Member Functions

Tol const & tol () const
 Get the construction tolerance.
 
template<class S >
void operator() (S const &surf)
 Add a surface with negative quadric value being "inside".
 
template<class S >
void operator() (Sense sense, S const &surf)
 Add a surface with a sense. More...
 
template<class S >
void operator() (Sense sense, S const &surf, std::string &&face_name)
 Add a surface with a sense. More...
 
void operator() (Sense sense, BBox const &bbox)
 Promise that all bounding surfaces are inside/outside this bbox. More...
 
 IntersectSurfaceBuilder (UnitBuilder *ub, State *state)
 Construct with persistent unit builder and less persistent state. More...
 

Detailed Description

Build a region of intersecting surfaces as a CSG node.

This is the building block for constructing shapes, solids, and so forth. The result of this class is:

Internally, this class uses:

Constructor & Destructor Documentation

◆ IntersectSurfaceBuilder()

celeritas::orangeinp::IntersectSurfaceBuilder::IntersectSurfaceBuilder ( UnitBuilder *  ub,
State *  state 
)

Construct with persistent unit builder and less persistent state.

Both arguments must have lifetimes that exceed the surface builder, but the "unit builder" will have a duration of the whole unit construction, whereas the state just has the duration of the surface set being built.

Member Function Documentation

◆ operator()() [1/3]

void celeritas::orangeinp::IntersectSurfaceBuilder::operator() ( Sense  sense,
BBox const &  bbox 
)
inline

Promise that all bounding surfaces are inside/outside this bbox.

"inside" will shrink the exterior bbox, and "outside" will grow the interior bbox. All bounding surfaces within the region must be inside the exterior region and outside the interior region.

◆ operator()() [2/3]

template<class S >
void celeritas::orangeinp::IntersectSurfaceBuilder::operator() ( Sense  sense,
S const &  surf 
)

Add a surface with a sense.

The resulting surface MUST result in a intersect region.

◆ operator()() [3/3]

template<class S >
void celeritas::orangeinp::IntersectSurfaceBuilder::operator() ( Sense  sense,
S const &  surf,
std::string &&  name 
)

Add a surface with a sense.

The resulting surface MUST result in a intersect region.


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