EBGeometry  1.0
EBGeometry_SignedDistanceFunction.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_SignedDistanceFunction
13 #define EBGeometry_SignedDistanceFunction
14 
15 #include <memory>
16 #include <deque>
17 
18 // Our includes
21 
30 template <class T>
32 {
33 public:
38 
42  virtual ~SignedDistanceFunction() = default;
43 
48  virtual T
49  value(const Vec3T<T>& a_point) const noexcept override final;
50 
55  virtual T
56  signedDistance(const Vec3T<T>& a_point) const noexcept = 0;
57 
64  inline virtual Vec3T<T>
65  normal(const Vec3T<T>& a_point, const T& a_delta) const noexcept;
66 };
67 
69 
70 #include "EBGeometry_SignedDistanceFunctionImplem.hpp"
71 
72 #endif
Abstract base class for representing an implicit function.
Abstract representation of an implicit function function (not necessarily signed distance).
Definition: EBGeometry_ImplicitFunction.hpp:27
Abstract representation of a signed distance function.
Definition: EBGeometry_SignedDistanceFunction.hpp:32
virtual Vec3T< T > normal(const Vec3T< T > &a_point, const T &a_delta) const noexcept
Signed distance normal vector.
virtual T value(const Vec3T< T > &a_point) const noexcept override final
Implementation of ImplicitFunction::value.
virtual ~SignedDistanceFunction()=default
Destructor (does nothing)
SignedDistanceFunction()=default
Disallowed, use the full constructor.
virtual T signedDistance(const Vec3T< T > &a_point) const noexcept=0
Signed distance function.
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:218