|
geomc 1.0
A c++ linear algebra template library
|
An axis-aligned extrusion of an arbitrary N-1 dimensional Convex shape. More...
#include <geomc/shape/Extruded.h>
Public Types | |
| using | elem_t |
| The coordinate type of this object. | |
| using | point_t |
| The type of a point in this object's space. | |
| typedef Shape::elem_t | T |
| The coordinate type of this Shape. | |
Public Member Functions | |
| Extruded () | |
| Construct a new extrusion with unit height. | |
| Extruded (const Shape &base) | |
Construct a new extrusion with cross section base and unit height. | |
| Extruded (const Shape &base, const Rect< T, 1 > &height) | |
Construct an extrusion with cross section base and height range height. | |
| Extruded (const Shape &base, T h0, T h1) | |
Construct an extrusion with cross section base, and height ranging between h0 and h1. | |
| Rect< T, N > | bounds () const |
| Vec< Shape::elem_t, N > | clip (Vec< Shape::elem_t, N > p) const |
| Nearest point on the interior of the shape. | |
| bool | contains (Vec< T, N > p) const |
| point_t | convex_support (point_t d) const |
| Geometric convex support function. | |
| Vec< T, N > | convex_support (Vec< T, N > d) const |
| Rect< T, 1 > | intersect (const Ray< T, N > &r) const |
| Ray/shape intersection. | |
| bool | intersects (const Convex< Shape::elem_t, N, Shape > &other) const |
| Convex shape overlap test. | |
| T | measure_boundary () const |
| Measure the boundary (surface area) of the extrusion. | |
| T | measure_interior () const |
| Measure the interior (volume) of the extrusion. | |
| Vec< T, N > | normal (Vec< T, N > p) const |
| bool | operator== (const Extruded< Shape > &other) const |
| Vec< T, N > | project (Vec< T, N > p) const |
| T | sdf (Vec< T, N > p) const |
Static Public Member Functions | |
| static constexpr bool | admits_cusps () |
Public Attributes | |
| Shape | base |
| Cross-section of this extrusion at the h = 0 plane. | |
| Rect< T, 1 > | height |
| Height range of this extrusion. | |
Static Public Attributes | |
| static constexpr size_t | N = Shape::N + 1 |
| The dimension of this Shape. | |
Related Symbols | |
(Note that these are not member symbols.) | |
| template<typename Shape> | |
| Extruded< Shape > | extrude (const Shape &s, typename Shape::elem_t h0, typename Shape::elem_t h1) |
Convenience function to extrude the shape s between heights h0 and h1 by wrapping s in the Extruded template. | |
An axis-aligned extrusion of an arbitrary N-1 dimensional Convex shape.
The first N-1 dimensions have cross-sections which are Shapes (e.g., Rect, Sphere, Frustum...). The shape is lofted "vertically" into the last dimension.
Example:
// initialize a cylinder of length and radius 1: auto cylinder = Extruded<Sphere<double,2>>(Sphere<double,2>(), Rect<double,1>(0,1)); // or equivalently, and more succinctly: auto cylinder2 = extrude(Circle<double>(), 0, 1);
|
inherited |
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.
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.
| d | Direction along which to find a support plane. |
Convex shape overlap test.
other; false otherwise. Return the point p orthogonally projected onto the surface of the shape.