CubbyFlow::SurfaceToImplicit< N > Class Template Referencefinal

N-D implicit surface wrapper for generic Surface instance. More...

#include <Core/Geometry/SurfaceToImplicit.hpp>

Inheritance diagram for CubbyFlow::SurfaceToImplicit< N >:
CubbyFlow::ImplicitSurface< N > CubbyFlow::Surface< N >

Classes

class  Builder
 Front-end to create SurfaceToImplicit objects step by step. More...
 

Public Member Functions

 SurfaceToImplicit (std::shared_ptr< Surface< N >> surface, const Transform< N > &_transform=Transform< N >{}, bool _isNormalFlipped=false)
 Constructs an instance with generic Surface2 instance. More...
 
 ~SurfaceToImplicit () override=default
 Default virtual destructor. More...
 
 SurfaceToImplicit (const SurfaceToImplicit &other)
 Copy constructor. More...
 
 SurfaceToImplicit (SurfaceToImplicit &&other) noexcept
 Move constructor. More...
 
SurfaceToImplicitoperator= (const SurfaceToImplicit &other)
 Copy assignment operator. More...
 
SurfaceToImplicitoperator= (SurfaceToImplicit &&other) noexcept
 Move assignment operator. More...
 
void UpdateQueryEngine () override
 Updates internal spatial query engine. More...
 
bool IsBounded () const override
 Returns true if bounding box can be defined. More...
 
bool IsValidGeometry () const override
 Returns true if the surface is a valid geometry. More...
 
std::shared_ptr< Surface< N > > GetSurface () const
 Returns the raw surface instance. More...
 
- Public Member Functions inherited from CubbyFlow::ImplicitSurface< N >
 ImplicitSurface (const Transform< N > &_transform=Transform< N >{}, bool _isNormalFlipped=false)
 Constructs an implicit surface with normal direction. More...
 
 ~ImplicitSurface () override=default
 Default virtual destructor. More...
 
 ImplicitSurface (const ImplicitSurface &other)
 Copy constructor. More...
 
 ImplicitSurface (ImplicitSurface &&other) noexcept
 Move constructor. More...
 
ImplicitSurfaceoperator= (const ImplicitSurface &other)
 Copy assignment operator. More...
 
ImplicitSurfaceoperator= (ImplicitSurface &&other) noexcept
 Move assignment operator. More...
 
double SignedDistance (const Vector< double, N > &otherPoint) const
 Returns signed distance from the given point otherPoint. More...
 
- Public Member Functions inherited from CubbyFlow::Surface< N >
 Surface (const Transform< N > &transform=Transform< N >(), bool isNormalFlipped=false)
 Constructs a surface with normal direction. More...
 
virtual ~Surface ()=default
 Default virtual destructor. More...
 
 Surface (const Surface &other)
 Copy constructor. More...
 
 Surface (Surface &&other) noexcept
 Move constructor. More...
 
Surfaceoperator= (const Surface &other)
 Copy assignment operator. More...
 
Surfaceoperator= (Surface &&other) noexcept
 Move assignment operator. More...
 
Vector< double, N > ClosestPoint (const Vector< double, N > &otherPoint) const
 
BoundingBox< double, N > GetBoundingBox () const
 Returns the bounding box of this surface object. More...
 
bool Intersects (const Ray< double, N > &ray) const
 Returns true if the given ray intersects with this surface object. More...
 
double ClosestDistance (const Vector< double, N > &otherPoint) const
 
SurfaceRayIntersection< N > ClosestIntersection (const Ray< double, N > &ray) const
 Returns the closest intersection point for given ray. More...
 
Vector< double, N > ClosestNormal (const Vector< double, N > &otherPoint) const
 
bool IsInside (const Vector< double, N > &otherPoint) const
 

Static Public Member Functions

static Builder GetBuilder ()
 Returns builder fox SurfaceToImplicit. More...
 

Protected Member Functions

Vector< double, N > ClosestPointLocal (const Vector< double, N > &otherPoint) const override
 
double ClosestDistanceLocal (const Vector< double, N > &otherPoint) const override
 
bool IntersectsLocal (const Ray< double, N > &ray) const override
 
BoundingBox< double, N > BoundingBoxLocal () const override
 Returns the bounding box of this surface object in local frame. More...
 
Vector< double, N > ClosestNormalLocal (const Vector< double, N > &otherPoint) const override
 
double SignedDistanceLocal (const Vector< double, N > &otherPoint) const override
 
SurfaceRayIntersection< N > ClosestIntersectionLocal (const Ray< double, N > &ray) const override
 Returns the closest intersection point for given ray in local frame. More...
 
- Protected Member Functions inherited from CubbyFlow::Surface< N >
virtual bool IsInsideLocal (const Vector< double, N > &otherPoint) const
 

Additional Inherited Members

- Public Attributes inherited from CubbyFlow::Surface< N >
Transform< N > transform
 Local-to-world transform. More...
 
bool isNormalFlipped = false
 Flips normal. More...
 

Detailed Description

template<size_t N>
class CubbyFlow::SurfaceToImplicit< N >

N-D implicit surface wrapper for generic Surface instance.

This class represents N-D implicit surface that converts Surface instance to an ImplicitSurface object. The conversion is made by evaluating closest point and normal from a given point for the given (explicit) surface. Thus, this conversion won't work for every single surfaces. Use this class only for the basic primitives such as Sphere or Box.

Constructor & Destructor Documentation

◆ SurfaceToImplicit() [1/3]

template<size_t N>
CubbyFlow::SurfaceToImplicit< N >::SurfaceToImplicit ( std::shared_ptr< Surface< N >>  surface,
const Transform< N > &  _transform = Transform< N >{},
bool  _isNormalFlipped = false 
)

Constructs an instance with generic Surface2 instance.

◆ ~SurfaceToImplicit()

template<size_t N>
CubbyFlow::SurfaceToImplicit< N >::~SurfaceToImplicit ( )
overridedefault

Default virtual destructor.

◆ SurfaceToImplicit() [2/3]

template<size_t N>
CubbyFlow::SurfaceToImplicit< N >::SurfaceToImplicit ( const SurfaceToImplicit< N > &  other)

Copy constructor.

◆ SurfaceToImplicit() [3/3]

template<size_t N>
CubbyFlow::SurfaceToImplicit< N >::SurfaceToImplicit ( SurfaceToImplicit< N > &&  other)
noexcept

Move constructor.

Member Function Documentation

◆ BoundingBoxLocal()

template<size_t N>
BoundingBox<double, N> CubbyFlow::SurfaceToImplicit< N >::BoundingBoxLocal ( ) const
overrideprotectedvirtual

Returns the bounding box of this surface object in local frame.

Implements CubbyFlow::Surface< N >.

◆ ClosestDistanceLocal()

template<size_t N>
double CubbyFlow::SurfaceToImplicit< N >::ClosestDistanceLocal ( const Vector< double, N > &  otherPoint) const
overrideprotectedvirtual

Returns the closest distance from the given point otherPoint to the point on the surface in local frame.

Reimplemented from CubbyFlow::ImplicitSurface< N >.

◆ ClosestIntersectionLocal()

template<size_t N>
SurfaceRayIntersection<N> CubbyFlow::SurfaceToImplicit< N >::ClosestIntersectionLocal ( const Ray< double, N > &  ray) const
overrideprotectedvirtual

Returns the closest intersection point for given ray in local frame.

Implements CubbyFlow::Surface< N >.

◆ ClosestNormalLocal()

template<size_t N>
Vector<double, N> CubbyFlow::SurfaceToImplicit< N >::ClosestNormalLocal ( const Vector< double, N > &  otherPoint) const
overrideprotectedvirtual

Returns the normal to the closest point on the surface from the given point otherPoint in local frame.

Implements CubbyFlow::Surface< N >.

◆ ClosestPointLocal()

template<size_t N>
Vector<double, N> CubbyFlow::SurfaceToImplicit< N >::ClosestPointLocal ( const Vector< double, N > &  otherPoint) const
overrideprotectedvirtual

Returns the closest point from the given point otherPoint to the surface in local frame.

Implements CubbyFlow::Surface< N >.

◆ GetBuilder()

template<size_t N>
static Builder CubbyFlow::SurfaceToImplicit< N >::GetBuilder ( )
static

Returns builder fox SurfaceToImplicit.

◆ GetSurface()

template<size_t N>
std::shared_ptr<Surface<N> > CubbyFlow::SurfaceToImplicit< N >::GetSurface ( ) const

Returns the raw surface instance.

◆ IntersectsLocal()

template<size_t N>
bool CubbyFlow::SurfaceToImplicit< N >::IntersectsLocal ( const Ray< double, N > &  ray) const
overrideprotectedvirtual

Returns true if the given ray intersects with this surface object in local frame.

Reimplemented from CubbyFlow::Surface< N >.

◆ IsBounded()

template<size_t N>
bool CubbyFlow::SurfaceToImplicit< N >::IsBounded ( ) const
overridevirtual

Returns true if bounding box can be defined.

Reimplemented from CubbyFlow::Surface< N >.

◆ IsValidGeometry()

template<size_t N>
bool CubbyFlow::SurfaceToImplicit< N >::IsValidGeometry ( ) const
overridevirtual

Returns true if the surface is a valid geometry.

Reimplemented from CubbyFlow::Surface< N >.

◆ operator=() [1/2]

template<size_t N>
SurfaceToImplicit& CubbyFlow::SurfaceToImplicit< N >::operator= ( const SurfaceToImplicit< N > &  other)

Copy assignment operator.

◆ operator=() [2/2]

template<size_t N>
SurfaceToImplicit& CubbyFlow::SurfaceToImplicit< N >::operator= ( SurfaceToImplicit< N > &&  other)
noexcept

Move assignment operator.

◆ SignedDistanceLocal()

template<size_t N>
double CubbyFlow::SurfaceToImplicit< N >::SignedDistanceLocal ( const Vector< double, N > &  otherPoint) const
overrideprotectedvirtual

Returns signed distance from the given point otherPoint in local space.

Implements CubbyFlow::ImplicitSurface< N >.

◆ UpdateQueryEngine()

template<size_t N>
void CubbyFlow::SurfaceToImplicit< N >::UpdateQueryEngine ( )
overridevirtual

Updates internal spatial query engine.

Reimplemented from CubbyFlow::Surface< N >.


The documentation for this class was generated from the following file: