Jet  v1.3.3
fmm_level_set_solver3.h
Go to the documentation of this file.
1 // Copyright (c) 2018 Doyub Kim
2 //
3 // I am making my contributions/submissions to this project solely in my
4 // personal capacity and am not conveying any rights to any intellectual
5 // property of any third parties.
6 
7 #ifndef INCLUDE_JET_FMM_LEVEL_SET_SOLVER3_H_
8 #define INCLUDE_JET_FMM_LEVEL_SET_SOLVER3_H_
9 
10 #include <jet/level_set_solver3.h>
11 #include <memory>
12 
13 namespace jet {
14 
26 class FmmLevelSetSolver3 final : public LevelSetSolver3 {
27  public:
30 
39  const ScalarGrid3& inputSdf,
40  double maxDistance,
41  ScalarGrid3* outputSdf) override;
42 
52  const ScalarGrid3& input,
53  const ScalarField3& sdf,
54  double maxDistance,
55  ScalarGrid3* output) override;
56 
67  const CollocatedVectorGrid3& input,
68  const ScalarField3& sdf,
69  double maxDistance,
70  CollocatedVectorGrid3* output) override;
71 
82  const FaceCenteredGrid3& input,
83  const ScalarField3& sdf,
84  double maxDistance,
85  FaceCenteredGrid3* output) override;
86 
87  private:
88  void extrapolate(
89  const ConstArrayAccessor3<double>& input,
90  const ConstArrayAccessor3<double>& sdf,
91  const Vector3D& gridSpacing,
92  double maxDistance,
93  ArrayAccessor3<double> output);
94 };
95 
97 typedef std::shared_ptr<FmmLevelSetSolver3> FmmLevelSetSolver3Ptr;
98 
99 } // namespace jet
100 
101 #endif // INCLUDE_JET_FMM_LEVEL_SET_SOLVER3_H_
jet::ConstArrayAccessor< T, 3 >
3-D read-only array accessor class.
Definition: array_accessor3.h:270
jet::FmmLevelSetSolver3::reinitialize
void reinitialize(const ScalarGrid3 &inputSdf, double maxDistance, ScalarGrid3 *outputSdf) override
jet::ScalarField3
Abstract base class for 3-D scalar field.
Definition: scalar_field3.h:18
jet::FmmLevelSetSolver3::extrapolate
void extrapolate(const ScalarGrid3 &input, const ScalarField3 &sdf, double maxDistance, ScalarGrid3 *output) override
jet::FmmLevelSetSolver3::FmmLevelSetSolver3
FmmLevelSetSolver3()
Default constructor.
jet::FmmLevelSetSolver3::extrapolate
void extrapolate(const CollocatedVectorGrid3 &input, const ScalarField3 &sdf, double maxDistance, CollocatedVectorGrid3 *output) override
jet::CollocatedVectorGrid3
Abstract base class for 3-D collocated vector grid structure.
Definition: collocated_vector_grid3.h:18
level_set_solver3.h
jet::LevelSetSolver3
Abstract base class for 3-D level set solver.
Definition: level_set_solver3.h:18
jet
Definition: advection_solver2.h:18
jet::FaceCenteredGrid3
3-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid3.h:26
jet::ArrayAccessor< T, 3 >
3-D array accessor class.
Definition: array_accessor3.h:31
jet::FmmLevelSetSolver3
Three-dimensional fast marching method (FMM) implementation.
Definition: fmm_level_set_solver3.h:26
jet::ScalarGrid3
Abstract base class for 3-D scalar grid structure.
Definition: scalar_grid3.h:21
jet::FmmLevelSetSolver3Ptr
std::shared_ptr< FmmLevelSetSolver3 > FmmLevelSetSolver3Ptr
Shared pointer type for the FmmLevelSetSolver3.
Definition: fmm_level_set_solver3.h:97
jet::FmmLevelSetSolver3::extrapolate
void extrapolate(const FaceCenteredGrid3 &input, const ScalarField3 &sdf, double maxDistance, FaceCenteredGrid3 *output) override
jet::Vector< T, 3 >
3-D vector class.
Definition: vector3.h:25