EBGeometry  1.0
Public Member Functions | Protected Attributes | List of all members
SmoothDifferenceIF< T > Class Template Reference

CSG difference between two implicit functions. More...

#include <EBGeometry_CSG.hpp>

Inheritance diagram for SmoothDifferenceIF< T >:
Inheritance graph
[legend]
Collaboration diagram for SmoothDifferenceIF< T >:
Collaboration graph
[legend]

Public Member Functions

 SmoothDifferenceIF ()=delete
 Disallowed, use the full constructor.
 
 SmoothDifferenceIF (const std::shared_ptr< ImplicitFunction< T >> &a_implicitFunctionA, const std::shared_ptr< ImplicitFunction< T >> &a_implicitFunctionB, const T a_smoothLen, const std::function< T(const T &a, const T &b, const T &s)> &a_smoothMax=smoothMax< T >) noexcept
 Full constructor. Computes the smooth CSG difference. More...
 
 SmoothDifferenceIF (const std::shared_ptr< ImplicitFunction< T >> &a_implicitFunctionA, const std::vector< std::shared_ptr< ImplicitFunction< T >>> &a_implicitFunctionsB, const T a_smoothLen, const std::function< T(const T &a, const T &b, const T &s)> &a_smoothMax=smoothMax< T >) noexcept
 Full constructor. Computes the CSG difference between A and the union of the B's. More...
 
virtual ~SmoothDifferenceIF ()=default
 Destructor (does nothing)
 
value (const Vec3T< T > &a_point) const noexcept override
 Value function. More...
 
- Public Member Functions inherited from ImplicitFunction< T >
 ImplicitFunction ()=default
 Disallowed, use the full constructor.
 
virtual ~ImplicitFunction ()=default
 Destructor (does nothing)
 
operator() (const Vec3T< T > &a_point) const noexcept
 Alternative signature for the value function. More...
 
template<class BV >
BV approximateBoundingVolumeOctree (const Vec3T< T > &a_initialLowCorner, const Vec3T< T > &a_initialHighCorner, const unsigned int a_maxTreeDepth, const T &a_safety=0.0) const noexcept
 Compute an approximation to the bounding volume for the implicit surface, using octrees. More...
 

Protected Attributes

std::shared_ptr< SmoothIntersectionIF< T > > m_smoothIntersectionIF
 Resulting smooth intersection.
 

Detailed Description

template<class T>
class SmoothDifferenceIF< T >

CSG difference between two implicit functions.

Constructor & Destructor Documentation

◆ SmoothDifferenceIF() [1/2]

template<class T >
SmoothDifferenceIF< T >::SmoothDifferenceIF ( const std::shared_ptr< ImplicitFunction< T >> &  a_implicitFunctionA,
const std::shared_ptr< ImplicitFunction< T >> &  a_implicitFunctionB,
const T  a_smoothLen,
const std::function< T(const T &a, const T &b, const T &s)> &  a_smoothMax = smoothMax< T > 
)
noexcept

Full constructor. Computes the smooth CSG difference.

Parameters
[in]a_implicitFunctionAImplicit function
[in]a_implicitFunctionBImplicit function to subtract
[in]a_smoothLenSmoothing length
[in]a_smoothMaxWhich smooth-max function to use.

◆ SmoothDifferenceIF() [2/2]

template<class T >
SmoothDifferenceIF< T >::SmoothDifferenceIF ( const std::shared_ptr< ImplicitFunction< T >> &  a_implicitFunctionA,
const std::vector< std::shared_ptr< ImplicitFunction< T >>> &  a_implicitFunctionsB,
const T  a_smoothLen,
const std::function< T(const T &a, const T &b, const T &s)> &  a_smoothMax = smoothMax< T > 
)
noexcept

Full constructor. Computes the CSG difference between A and the union of the B's.

Parameters
[in]a_implicitFunctionAImplicit function
[in]a_implicitFunctionsBImplicit functions to subtract
[in]a_smoothLenSmoothing length
[in]a_smoothMaxWhich smooth-max function to use.

Member Function Documentation

◆ value()

template<class T >
T SmoothDifferenceIF< T >::value ( const Vec3T< T > &  a_point) const
overridevirtualnoexcept

Value function.

Parameters
[in]a_point3D point.

Implements ImplicitFunction< T >.


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