|
EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
|
Abstract representation of an implicit function (not necessarily a signed distance function). More...
#include <EBGeometry_ImplicitFunction.hpp>

Public Member Functions | |
| ImplicitFunction ()=default | |
| Default constructor. | |
| virtual | ~ImplicitFunction ()=default |
| Default destructor. | |
| virtual T | value (const Vec3T< T > &a_point) const noexcept=0 |
| Value function. Points are outside the object if value > 0.0 and inside if value < 0.0. | |
| T | 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. | |
Abstract representation of an implicit function (not necessarily a signed distance function).
The value function must be implemented by subclasses. Points with value < 0 are considered inside the object; points with value > 0 are outside.
| T | Floating-point precision. |
|
inline |
Compute an approximation to the bounding volume for the implicit surface using octree subdivision.
Recursively subdivides the initial box and marks each child cell as intersected when |value(center)| <= (1+a_safety)*half_width. The bounding volume is built from the corners of all intersected leaf cells. Relies on the implicit function being reasonably close to a signed distance function; if octree subdivision fails entirely, returns the maximally representable bounding volume.
| BV | Bounding volume type; must be constructible from std::vector<Vec3T<T>>. |
| [in] | a_initialLowCorner | Low corner of the initial search box. |
| [in] | a_initialHighCorner | High corner of the initial search box. |
| [in] | a_maxTreeDepth | Maximum permitted octree depth. |
| [in] | a_safety | Safety factor for intersection test; 0 = exact, 1 = 1x cell-width margin. |
|
noexcept |
Call operator — alternative signature for the value function.
| [in] | a_point | 3D query point. |
|
pure virtualnoexcept |
Value function. Points are outside the object if value > 0.0 and inside if value < 0.0.
| [in] | a_point | 3D query point. |
Implemented in EBGeometry::SignedDistanceFunction< T >, EBGeometry::UnionIF< T >, EBGeometry::SmoothUnionIF< T >, EBGeometry::BVHUnionIF< T, P, BV, K >, EBGeometry::BVHSmoothUnionIF< T, P, BV, K >, EBGeometry::IntersectionIF< T >, EBGeometry::SmoothIntersectionIF< T >, EBGeometry::DifferenceIF< T >, EBGeometry::SmoothDifferenceIF< T >, EBGeometry::FiniteRepetitionIF< T >, EBGeometry::ComplementIF< T >, EBGeometry::TranslateIF< T >, EBGeometry::RotateIF< T >, EBGeometry::OffsetIF< T >, EBGeometry::ScaleIF< T >, EBGeometry::AnnularIF< T >, EBGeometry::BlurIF< T >, EBGeometry::MollifyIF< T >, EBGeometry::ElongateIF< T >, and EBGeometry::ReflectIF< T >.