Go to the documentation of this file.
7 #ifndef INCLUDE_JET_IMPLICIT_SURFACE_SET2_H_
8 #define INCLUDE_JET_IMPLICIT_SURFACE_SET2_H_
69 std::vector<ImplicitSurface2Ptr> _surfaces;
70 std::vector<ImplicitSurface2Ptr> _unboundedSurfaces;
72 mutable bool _bvhInvalidated =
true;
80 double closestDistanceLocal(
const Vector2D& otherPoint)
const override;
82 bool intersectsLocal(
const Ray2D& ray)
const override;
87 const Ray2D& ray)
const override;
89 bool isInsideLocal(
const Vector2D& otherPoint)
const override;
93 double signedDistanceLocal(
const Vector2D& otherPoint)
const override;
97 void buildBvh()
const;
122 bool _isNormalFlipped =
false;
123 std::vector<ImplicitSurface2Ptr> _surfaces;
128 #endif // INCLUDE_JET_IMPLICIT_SURFACE_SET2_H_
void updateQueryEngine() override
Updates internal spatial query engine.
Struct that represents ray-surface intersection point.
Definition: surface2.h:19
bool isNormalFlipped
Flips normal.
Definition: surface2.h:33
ImplicitSurfaceSet2()
Constructs an empty implicit surface set.
size_t numberOfSurfaces() const
Returns the number of implicit surfaces.
Class for 2-D ray.
Definition: ray2.h:21
void addExplicitSurface(const Surface2Ptr &surface)
Adds an explicit surface instance.
static Builder builder()
Returns builder fox ImplicitSurfaceSet2.
Front-end to create ImplicitSurfaceSet2 objects step by step.
Definition: implicit_surface_set2.h:107
Builder & withSurfaces(const std::vector< ImplicitSurface2Ptr > &surfaces)
Returns builder with surfaces.
Definition: advection_solver2.h:18
Transform2 transform
Local-to-world transform.
Definition: surface2.h:30
std::shared_ptr< ImplicitSurface2 > ImplicitSurface2Ptr
Shared pointer type for the ImplicitSurface2.
Definition: implicit_surface2.h:43
2-D implicit surface set.
Definition: implicit_surface_set2.h:24
std::shared_ptr< Surface2 > Surface2Ptr
Shared pointer for the Surface2 type.
Definition: surface2.h:109
void addSurface(const ImplicitSurface2Ptr &surface)
Adds an implicit surface instance.
2-D vector class.
Definition: vector2.h:24
Base class for 2-D surface builder.
Definition: surface2.h:115
Builder & withExplicitSurfaces(const std::vector< Surface2Ptr > &surfaces)
Returns builder with explicit surfaces.
ImplicitSurfaceSet2(const std::vector< ImplicitSurface2Ptr > &surfaces, const Transform2 &transform=Transform2(), bool isNormalFlipped=false)
Constructs an implicit surface set using list of other surfaces.
ImplicitSurfaceSet2Ptr makeShared() const
Builds shared pointer of ImplicitSurfaceSet2 instance.
ImplicitSurfaceSet2(const std::vector< Surface2Ptr > &surfaces, const Transform2 &transform=Transform2(), bool isNormalFlipped=false)
Constructs an implicit surface set using list of other surfaces.
2-D axis-aligned bounding box class.
Definition: bounding_box2.h:41
ImplicitSurfaceSet2(const ImplicitSurfaceSet2 &other)
Copy constructor.
std::shared_ptr< ImplicitSurfaceSet2 > ImplicitSurfaceSet2Ptr
Shared pointer type for the ImplicitSurfaceSet2.
Definition: implicit_surface_set2.h:101
bool isValidGeometry() const override
Returns true if the surface is a valid geometry.
Abstract base class for 2-D implicit surface.
Definition: implicit_surface2.h:15
ImplicitSurfaceSet2 build() const
Builds ImplicitSurfaceSet2.
const ImplicitSurface2Ptr & surfaceAt(size_t i) const
Returns the i-th implicit surface.
bool isBounded() const override
Returns true if bounding box can be defined.