EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
EBGeometry::InfiniteCylinderSDF< T > Class Template Reference

Signed distance field for an infinitely long cylinder. More...

#include <EBGeometry_AnalyticDistanceFunctions.hpp>

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

Public Member Functions

 InfiniteCylinderSDF ()=default
 Default constructor. Constructs an infinite cylinder of radius 1 centred at the origin with its axis along y (axis index 1).
 
 InfiniteCylinderSDF (const Vec3T< T > &a_center, const T &a_radius, const size_t a_axis) noexcept
 Full constructor.
 
 InfiniteCylinderSDF (const InfiniteCylinderSDF &)=default
 Copy constructor.
 
 InfiniteCylinderSDF (InfiniteCylinderSDF &&)=default
 Move constructor.
 
InfiniteCylinderSDFoperator= (const InfiniteCylinderSDF &)=default
 Copy assignment.
 
InfiniteCylinderSDFoperator= (InfiniteCylinderSDF &&)=default
 Move assignment.
 
 ~InfiniteCylinderSDF () override=default
 Destructor.
 
signedDistance (const Vec3T< T > &a_point) const noexcept override
 Signed distance function for the infinite cylinder.
 
- Public Member Functions inherited from EBGeometry::SignedDistanceFunction< T >
 SignedDistanceFunction ()=default
 Default constructor.
 
 ~SignedDistanceFunction () override=default
 Destructor.
 
value (const Vec3T< T > &a_point) const noexcept final
 Implementation of ImplicitFunction::value; delegates to signedDistance().
 
virtual Vec3T< T > normal (const Vec3T< T > &a_point, const T &a_delta) const noexcept
 Compute the outward normal using central finite differences.
 
- Public Member Functions inherited from EBGeometry::ImplicitFunction< T >
 ImplicitFunction ()=default
 Default constructor.
 
virtual ~ImplicitFunction ()=default
 Default destructor.
 
operator() (const Vec3T< T > &a_point) const noexcept
 Call operator — alternative signature for the value function.
 
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
 Compute an approximation to the bounding volume for the implicit surface using octree subdivision.
 

Protected Attributes

Vec3T< T > m_center = Vec3T<T>::zeros()
 Center point on the cylinder axis.
 
m_radius = T(1)
 Cylinder radius.
 
size_t m_axis = 1U
 Coordinate axis index (0 = x, 1 = y, 2 = z).
 

Detailed Description

template<class T>
class EBGeometry::InfiniteCylinderSDF< T >

Signed distance field for an infinitely long cylinder.

The cylinder is infinite in one coordinate direction (selected by m_axis: 0 = x, 1 = y, 2 = z) and has a circular cross-section of radius m_radius centred at m_center in the plane perpendicular to that axis. The SDF is the radial distance from the axis minus the radius: negative inside the cylinder and positive outside. By default the cylinder has radius 1, passes through the origin, and extends along y.

Template Parameters
TFloating-point precision.

Constructor & Destructor Documentation

◆ InfiniteCylinderSDF()

template<class T >
EBGeometry::InfiniteCylinderSDF< T >::InfiniteCylinderSDF ( const Vec3T< T > &  a_center,
const T &  a_radius,
const size_t  a_axis 
)
inlinenoexcept

Full constructor.

Parameters
[in]a_centerCenter point on the cylinder axis.
[in]a_radiusCylinder radius.
[in]a_axisCoordinate axis index (0 = x, 1 = y, 2 = z).

Member Function Documentation

◆ operator=() [1/2]

template<class T >
InfiniteCylinderSDF & EBGeometry::InfiniteCylinderSDF< T >::operator= ( const InfiniteCylinderSDF< T > &  )
default

Copy assignment.

Returns
Reference to (*this).

◆ operator=() [2/2]

template<class T >
InfiniteCylinderSDF & EBGeometry::InfiniteCylinderSDF< T >::operator= ( InfiniteCylinderSDF< T > &&  )
default

Move assignment.

Returns
Reference to (*this).

◆ signedDistance()

template<class T >
T EBGeometry::InfiniteCylinderSDF< T >::signedDistance ( const Vec3T< T > &  a_point) const
inlineoverridevirtualnoexcept

Signed distance function for the infinite cylinder.

Parameters
[in]a_pointPosition.
Returns
Signed distance from a_point to the cylinder surface; negative inside.

Implements EBGeometry::SignedDistanceFunction< T >.


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