Jet  v1.3.3
fmm_level_set_solver2.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_SOLVER2_H_
8 #define INCLUDE_JET_FMM_LEVEL_SET_SOLVER2_H_
9 
10 #include <jet/level_set_solver2.h>
11 #include <memory>
12 
13 namespace jet {
14 
26 class FmmLevelSetSolver2 final : public LevelSetSolver2 {
27  public:
30 
39  const ScalarGrid2& inputSdf,
40  double maxDistance,
41  ScalarGrid2* outputSdf) override;
42 
52  const ScalarGrid2& input,
53  const ScalarField2& sdf,
54  double maxDistance,
55  ScalarGrid2* output) override;
56 
67  const CollocatedVectorGrid2& input,
68  const ScalarField2& sdf,
69  double maxDistance,
70  CollocatedVectorGrid2* output) override;
71 
82  const FaceCenteredGrid2& input,
83  const ScalarField2& sdf,
84  double maxDistance,
85  FaceCenteredGrid2* output) override;
86 
87  private:
88  void extrapolate(
89  const ConstArrayAccessor2<double>& input,
90  const ConstArrayAccessor2<double>& sdf,
91  const Vector2D& gridSpacing,
92  double maxDistance,
93  ArrayAccessor2<double> output);
94 };
95 
97 typedef std::shared_ptr<FmmLevelSetSolver2> FmmLevelSetSolver2Ptr;
98 
99 } // namespace jet
100 
101 #endif // INCLUDE_JET_FMM_LEVEL_SET_SOLVER2_H_
level_set_solver2.h
jet::FmmLevelSetSolver2
Two-dimensional fast marching method (FMM) implementation.
Definition: fmm_level_set_solver2.h:26
jet::FmmLevelSetSolver2::extrapolate
void extrapolate(const ScalarGrid2 &input, const ScalarField2 &sdf, double maxDistance, ScalarGrid2 *output) override
jet::ScalarField2
Abstract base class for 2-D scalar field.
Definition: scalar_field2.h:18
jet::FaceCenteredGrid2
2-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid2.h:26
jet::FmmLevelSetSolver2Ptr
std::shared_ptr< FmmLevelSetSolver2 > FmmLevelSetSolver2Ptr
Shared pointer type for the FmmLevelSetSolver2.
Definition: fmm_level_set_solver2.h:97
jet
Definition: advection_solver2.h:18
jet::ConstArrayAccessor< T, 2 >
2-D read-only array accessor class.
Definition: array_accessor2.h:261
jet::ScalarGrid2
Abstract base class for 2-D scalar grid structure.
Definition: scalar_grid2.h:21
jet::FmmLevelSetSolver2::reinitialize
void reinitialize(const ScalarGrid2 &inputSdf, double maxDistance, ScalarGrid2 *outputSdf) override
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::CollocatedVectorGrid2
Abstract base class for 2-D collocated vector grid structure.
Definition: collocated_vector_grid2.h:18
jet::FmmLevelSetSolver2::extrapolate
void extrapolate(const FaceCenteredGrid2 &input, const ScalarField2 &sdf, double maxDistance, FaceCenteredGrid2 *output) override
jet::ArrayAccessor< T, 2 >
2-D array accessor class.
Definition: array_accessor2.h:31
jet::LevelSetSolver2
Abstract base class for 2-D level set solver.
Definition: level_set_solver2.h:18
jet::FmmLevelSetSolver2::FmmLevelSetSolver2
FmmLevelSetSolver2()
Default constructor.
jet::FmmLevelSetSolver2::extrapolate
void extrapolate(const CollocatedVectorGrid2 &input, const ScalarField2 &sdf, double maxDistance, CollocatedVectorGrid2 *output) override