geomc 1.0
A c++ linear algebra template library
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Related Functions | List of all members
Dilated< Shape > Class Template Reference

A wrapper shape which dilates the extents of another Shape. More...

#include <geomc/shape/Dilated.h>

Inheritance diagram for Dilated< Shape >:
Convex< Shape::elem_t, Shape::N, Dilated< Shape > > Projectable< Shape::elem_t, Shape::N, Dilated< Shape > > Bounded< T, _N, Derived > SdfEvaluable< T, N, Derived >

Public Types

typedef Shape::elem_t T
 The coordinate type of this Shape.
 
typedef PointType< Shape::elem_t, N >::point_t point_t
 
typedef T elem_t
 The coordinate type of this shape.
 

Public Member Functions

 Dilated ()
 Wrap a default-constructed Shape with zero dilation.
 
 Dilated (const Shape &s)
 Wrap s with zero dilation.
 
 Dilated (const Shape &s, T dilation)
 Dilate s by the amount dilation.
 
bool contains (Vec< T, N > p) const
 Point containment test.
 
T sdf (Vec< T, N > p) const
 Signed distance function.
 
Vec< T, Nconvex_support (Vec< T, N > d) const
 
Rect< T, Nbounds () const
 
Vec< T, Nproject (Vec< T, N > p) const
 Orthogonally project p to the surface of this shape.
 
point_t convex_support (point_t d) const
 Geometric convex support function. More...
 
bool intersects (const Convex< Shape::elem_t, N, Shape > &other) const
 Convex shape overlap test. More...
 
T sdf (Vec< T, N > p) const
 Signed distance function. More...
 
Vec< Shape::elem_t, Nnormal (Vec< Shape::elem_t, N > p) const
 Unit-length outward-facing direction. More...
 
Vec< Shape::elem_t, Nclip (Vec< Shape::elem_t, N > p) const
 Nearest point on the interior of the shape. More...
 
bool contains (Vec< T, N > p) const
 Shape-point overlap test. More...
 

Public Attributes

Shape shape
 Un-dilated shape.
 
T dilation
 Dilation distance; a nonnegative number.
 

Static Public Attributes

static constexpr size_t N = Shape::N
 The dimension of this Shape.
 

Related Functions

(Note that these are not member functions.)

template<typename Shape >
Dilated< Shape > dilate (const Shape &s, typename Shape::elem_t dilation)
 Dilate the shape s by the amount dilation.
 
template<typename Shape >
Dilated< Shape > dilate (const Dilated< Shape > &s, typename Shape::elem_t dilation)
 Dilate the shape s by the amount dilation.
 
template<typename T , index_t N>
Plane< T, Ndilate (Plane< T, N > p, T dilation)
 Dilate the Plane p by the amount dilation. More...
 
template<typename T , index_t N>
Sphere< T, Ndilate (const Sphere< T, N > &s, T dilation)
 Dilate the Sphere s by the amount dilation. More...
 

Detailed Description

template<typename Shape>
class geom::Dilated< Shape >

A wrapper shape which dilates the extents of another Shape.

The shape is the one that would result by placing a sphere of radius dilation at every point on the surface of the un-dilated shape.

It is not valid to construct a shape with a negative dilation.

Dilated shapes can be constructed with the convenience function dilate(), which has overrides for certain shapes that are innately dilatable.

Member Function Documentation

◆ clip()

Vec< Shape::elem_t , N > clip ( Vec< Shape::elem_t , N >  p) const
inlineinherited

Nearest point on the interior of the shape.

If p is on the interior of the shape, return p unaltered; otherwise orthogonally project p to the shape's surface.

◆ contains()

bool contains ( Vec< T, N >  p) const
inlineinherited

Shape-point overlap test.

Return true if the point p is on the surface or interior of the shape, false otherwise.

◆ convex_support()

point_t convex_support ( point_t  d) const
inlineinherited

Geometric convex support function.

Returns the point on the surface of this convex shape that is furthest along direction d (i.e., has the highest dot product with d).

All shapes which implement this function automatically support geometrical intersection tests with any other Convex object.

Parameters
dDirection along which to find a support plane.
Returns
A point on the surface of this convex shape.

◆ intersects()

bool intersects ( const Convex< Shape::elem_t , N, Shape > &  other) const
inlineinherited

Convex shape overlap test.

Returns
True if and only if this convex shape overlaps other; false otherwise.

◆ normal()

Vec< Shape::elem_t , N > normal ( Vec< Shape::elem_t , N >  p) const
inlineinherited

Unit-length outward-facing direction.

For any point, return the direction which points directly away from the nearest point on the shape, away from its interior.

This should be the same as the gradient of the sdf().

◆ sdf()

T sdf ( Vec< T, N >  p) const
inlineinherited

Signed distance function.

Compute a signed distance to the nearest surface point on the shape. Points on the exterior have positive value; points on the interior have negative value; surface points have sdf value 0.


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