geomc 1.0
A c++ linear algebra template library
Loading...
Searching...
No Matches
Extruded< Shape > Class Template Reference

An axis-aligned extrusion of an arbitrary N-1 dimensional Convex shape. More...

#include <geomc/shape/Extruded.h>

Inheritance diagram for Extruded< Shape >:
Dimensional< Shape::elem_t, Shape::N+1 >

Public Types

using elem_t
 The coordinate type of this object.
using point_t
 The type of a point in this object's space.
using T = elem_t

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, Nbounds () const
Vec< T, Nclip (Vec< T, N > p) const
bool contains (Vec< T, N > p) const
Vec< T, Nconvex_support (Vec< T, N > d) const
Rect< T, 1 > intersect (const Ray< T, N > &r) const
 Ray/shape intersection.
template<ConvexObject S>
bool intersects (const S &other) const
measure_boundary () const
 Measure the boundary (surface area) of the extrusion.
measure_interior () const
 Measure the interior (volume) of the extrusion.
Vec< T, Nnormal (Vec< T, N > p) const
bool operator== (const Extruded< Shape > &other) const
Vec< T, Nproject (Vec< T, N > p) const
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 index_t N
 The dimension of this object.

(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.

Detailed Description

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

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);

Member Typedef Documentation

◆ point_t

using point_t
inherited

The type of a point in this object's space.

An N-vector of T if N > 1, otherwise a T.

Member Function Documentation

◆ project()

template<typename Shape>
Vec< T, N > project ( Vec< T, N > p) const
inline

Return the point p orthogonally projected onto the surface of the shape.


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