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