Jet  v1.3.3
implicit_surface2.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_IMPLICIT_SURFACE2_H_
8 #define INCLUDE_JET_IMPLICIT_SURFACE2_H_
9 
10 #include <jet/surface2.h>
11 
12 namespace jet {
13 
15 class ImplicitSurface2 : public Surface2 {
16  public:
19  const Transform2& transform = Transform2(),
20  bool isNormalFlipped = false);
21 
24 
26  virtual ~ImplicitSurface2();
27 
29  double signedDistance(const Vector2D& otherPoint) const;
30 
31  protected:
34  virtual double signedDistanceLocal(const Vector2D& otherPoint) const = 0;
35 
36  private:
37  double closestDistanceLocal(const Vector2D& otherPoint) const override;
38 
39  bool isInsideLocal(const Vector2D& otherPoint) const override;
40 };
41 
43 typedef std::shared_ptr<ImplicitSurface2> ImplicitSurface2Ptr;
44 
45 } // namespace jet
46 
47 #endif // INCLUDE_JET_IMPLICIT_SURFACE2_H_
surface2.h
jet::Surface2::isNormalFlipped
bool isNormalFlipped
Flips normal.
Definition: surface2.h:33
jet::Transform2
Represents 2-D rigid body transform.
Definition: transform2.h:19
jet::ImplicitSurface2::signedDistanceLocal
virtual double signedDistanceLocal(const Vector2D &otherPoint) const =0
jet::ImplicitSurface2::ImplicitSurface2
ImplicitSurface2(const ImplicitSurface2 &other)
Copy constructor.
jet::ImplicitSurface2::ImplicitSurface2
ImplicitSurface2(const Transform2 &transform=Transform2(), bool isNormalFlipped=false)
Default constructor.
jet::ImplicitSurface2::signedDistance
double signedDistance(const Vector2D &otherPoint) const
Returns signed distance from the given point otherPoint.
jet
Definition: advection_solver2.h:18
jet::Surface2::transform
Transform2 transform
Local-to-world transform.
Definition: surface2.h:30
jet::ImplicitSurface2Ptr
std::shared_ptr< ImplicitSurface2 > ImplicitSurface2Ptr
Shared pointer type for the ImplicitSurface2.
Definition: implicit_surface2.h:43
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::ImplicitSurface2::~ImplicitSurface2
virtual ~ImplicitSurface2()
Default destructor.
jet::Surface2
Abstract base class for 2-D surface.
Definition: surface2.h:27
jet::ImplicitSurface2
Abstract base class for 2-D implicit surface.
Definition: implicit_surface2.h:15