EBGeometry  1.0
EBGeometry_ImplicitFunction.hpp
Go to the documentation of this file.
1 /* EBGeometry
2  * Copyright © 2022 Robert Marskar
3  * Please refer to Copyright.txt and LICENSE in the EBGeometry root directory.
4  */
5 
12 #ifndef EBGeometry_ImplicitFunction
13 #define EBGeometry_ImplicitFunction
14 
15 // Our includes
16 #include "EBGeometry_Vec.hpp"
19 
25 template <class T>
27 {
28 public:
32  ImplicitFunction() = default;
33 
37  virtual ~ImplicitFunction() = default;
38 
44  virtual T
45  value(const Vec3T<T>& a_point) const noexcept = 0;
46 
51  T
52  operator()(const Vec3T<T>& a_point) const noexcept;
53 
68  template <class BV>
69  inline BV
70  approximateBoundingVolumeOctree(const Vec3T<T>& a_initialLowCorner,
71  const Vec3T<T>& a_initialHighCorner,
72  const unsigned int a_maxTreeDepth,
73  const T& a_safety = 0.0) const noexcept;
74 };
75 
76 #include "EBGeometry_NamespaceFooter.hpp"
77 
78 #include "EBGeometry_ImplicitFunctionImplem.hpp"
79 
80 #endif
Declaration of a various bounding volumes used for bounding volume hierarchy.
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools.
Abstract representation of an implicit function function (not necessarily signed distance).
Definition: EBGeometry_ImplicitFunction.hpp:27
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....
virtual ~ImplicitFunction()=default
Destructor (does nothing)
T operator()(const Vec3T< T > &a_point) const noexcept
Alternative signature for the value function.
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.
ImplicitFunction()=default
Disallowed, use the full constructor.
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:218