geomc 1.0
A c++ linear algebra template library
|
Namespace of all geomc
functions and classes.
More...
Classes | |
class | AffineTransform |
Affine transformation class. More... | |
class | AnyConvex |
Helper class which virtualizes the static polymorphism of Convex shapes. More... | |
class | AnyConvexImpl |
Implementation of AnyConvex for a specific Shape. More... | |
class | BezierPath |
An extendable path defined by a sequence of knots and tangent points. More... | |
class | BezierSpline |
A cubic spline with two knots and two tangent points. More... | |
class | BinLatticePartition |
class | Bounded |
Base class describing shapes with finite extents in N dimensions. More... | |
class | BSpline |
A cubic spline with four guide points and continuous curvature. More... | |
class | BSplinePath |
An extendable path defined by a sequence of guide knots. More... | |
class | Capsule |
An N-dimensional capsule shape. More... | |
class | CatromSpline |
A cubic spline which passes smoothly through four knots. More... | |
class | CatromSplinePath |
An extendable path which passes through a sequence of knots. More... | |
class | ConstSubtree |
An const iterator to a subtree. More... | |
struct | ConstType |
struct | ConstType< T, false > |
struct | ConstType< T, true > |
class | Convex |
Base class describing convex shapes in N-dimensional space. More... | |
struct | CoordType |
struct | CoordType< Vec< T, N > > |
class | CubicSpline |
Base class for cubic splines. More... | |
class | Cylinder |
An N-dimensional cylinder, given by its radius and endpoints. More... | |
struct | DenseUniformDistribution |
A random number generator that produces uniformly-distributed values. More... | |
struct | DenseUniformDistribution< double > |
Dense uniform distribution specialization for double. More... | |
struct | DenseUniformDistribution< Dual< T, P > > |
Dense uniform distribution specialization for Duals. More... | |
struct | DenseUniformDistribution< float > |
Dense uniform distribution specialization for float. More... | |
class | Deque |
A lightweight double ended queue backed by a flat array. More... | |
class | DiagMatrix |
A matrix with nonzero elements only along the main diagonal. More... | |
struct | Digest |
Partially-specializable hash function object for arbitrary object and hash types. More... | |
struct | Digest< AffineTransform< T, N >, H > |
struct | Digest< Capsule< T, N >, H > |
struct | Digest< Cylinder< T, N >, H > |
struct | Digest< Dilated< Shape >, H > |
struct | Digest< Dual< T, Dp >, H > |
struct | Digest< Extruded< Shape >, H > |
struct | Digest< Frustum< Shape >, H > |
struct | Digest< H, H > |
struct | Digest< Hollow< Shape >, H > |
struct | Digest< Isometry< T, N >, H > |
struct | Digest< Plane< T, N >, H > |
struct | Digest< Quat< T >, H > |
struct | Digest< Ray< T, N >, H > |
struct | Digest< Rect< T, N >, H > |
struct | Digest< Rotation< T, 2 >, H > |
struct | Digest< Rotation< T, 3 >, H > |
struct | Digest< Similar< Shape >, H > |
struct | Digest< Similarity< T, N >, H > |
struct | Digest< SimpleMatrix< T, M, N, Lyt, P >, H > |
struct | Digest< Simplex< T, N >, H > |
struct | Digest< Sphere< T, N >, H > |
struct | Digest< SphericalCap< T, N >, H > |
struct | Digest< std::string, H > |
struct | Digest< std::string_view, H > |
struct | Digest< std::tuple< Ts... >, H > |
struct | Digest< T, H > |
struct | Digest< Transformed< Shape >, H > |
struct | Digest< Vec< T, N >, H > |
class | Dilated |
A wrapper shape which dilates the extents of another Shape. More... | |
struct | Dimension |
Defines a type for storing a length or element count. More... | |
struct | Dimension< DYNAMIC_DIM > |
struct | Dimensional |
Represents an object or operation that exists in a certain dimension with a certain coordinate type. More... | |
class | DimensionMismatchException |
struct | disable_std_hash_fallback |
Specialize for T to disable the use of std::hash for Digest<T> . More... | |
struct | Dual |
Class implementing the dual numbers, whose arithmetic operations perform a simultaneous calculation of the first derivative. More... | |
class | Extruded |
An axis-aligned extrusion of an arbitrary N-1 dimensional Convex shape. More... | |
class | FlatMatrixLayout |
class | FlatMatrixLayout< T, COL_MAJOR > |
class | Frustum |
An N-dimensional frustum (truncated pyramid) with an arbitrary Convex shape as its base, and its (possibly excluded) point at the origin. More... | |
struct | GenericStorage |
Array storage with templated static or dynamic size, and template-selectable ownership policy. More... | |
struct | GenericStorage< T, N, STORAGE_UNIQUE > |
struct | GenericStorage< T, N, STORAGE_WRAPPED > |
class | GeomException |
class | GridIterator |
Iterator over the integer points in an N-dimensional grid. More... | |
class | GridIterator< T, 1, Order > |
class | HermitePath |
An extendable path defined by a sequence of knots and tangent velocities. More... | |
class | HermiteSpline |
A cubic spline defined by two points and two velocities. More... | |
class | Hollow |
Selects the boundary of a shape. More... | |
struct | Intersector |
class | Isometry |
A rigid rotation and translation. More... | |
class | KDTree |
A hierarchical spatial index. More... | |
class | MatrixHandle |
A generic matrix class which can hold references to all other matrix types. More... | |
class | MatrixWrapper |
class | NonsquareMatrixException |
class | Path |
class | PerlinNoise |
Real-valued smooth noise over N dimensions. More... | |
class | PermutationMatrix |
A matrix which, by multiplication, permutes the rows or columns of another matrix. More... | |
class | Plane |
A geometric plane or hyperplane. More... | |
class | PLUDecomposition |
struct | PointType |
struct | PointType< T, 1 > |
class | PolynomialSpline |
A cubic polynomial spline. More... | |
class | Projectable |
Base class describing N-dimensional shapes which implement the ability to project an arbitrary point to the nearest point on their surface. More... | |
class | Quat |
Quaternion class. More... | |
class | Raster |
An M-dimensional grid of interpolated data which can be continuously sampled. More... | |
class | Ray |
Ray class. More... | |
class | RayIntersectable |
Base class describing N-dimensional shapes which can be intersection-tested with a Ray. More... | |
class | Rect |
An N-dimensional axis-aligned interval. More... | |
class | Rotation |
A rotation in N-dimensional space. More... | |
class | Rotation< T, 2 > |
2D rotation. More... | |
class | Rotation< T, 3 > |
3D rotation. More... | |
struct | SampleShape |
Sample a point from a shape. More... | |
struct | SampleShape< Cylinder< T, N > > |
Sample a point from the interior of a cylinder. More... | |
struct | SampleShape< Extruded< Shape > > |
Sample a point from the interior of an extruded shape. More... | |
struct | SampleShape< Hollow< Extruded< Hollow< Shape > > > > |
Sample a point from the surface of an extruded shape with no endcaps. More... | |
struct | SampleShape< Hollow< Extruded< Shape > > > |
Sample a point from the boundary of an Extruded shape. More... | |
struct | SampleShape< Hollow< Rect< T, N > > > |
Sample a point from the boundary of a Rect. More... | |
struct | SampleShape< Hollow< Sphere< T, N > > > |
Sample a point from the surface of a sphere. More... | |
struct | SampleShape< Rect< T, N > > |
Sample a point from the interior of a rect. More... | |
struct | SampleShape< Similar< Shape > > |
Sample a point from the interior of a shape transformed by a Similarity. More... | |
struct | SampleShape< Simplex< T, N > > |
Sample a point from the interior of a simplex. More... | |
struct | SampleShape< Sphere< T, N > > |
Sample a point from the interior of a sphere. More... | |
struct | SampleShape< SphericalCap< T, N > > |
Sample a point from the surface of a spherical cap. More... | |
struct | SampleShape< SphericalShell< T, N > > |
Sample a point from within a spherical shell. More... | |
struct | SampleShape< Transformed< Shape > > |
Sample a point from the interior of a transformed shape. More... | |
class | SdfEvaluable |
Base class describing N-dimensional shapes which implement a signed distance function. More... | |
class | Similar |
A shape transformed by a similarity transform (translation, rotation, and scale). More... | |
class | Similarity |
A similarity transform, which is a rotation, scaling, and translation. More... | |
class | SimpleMatrix |
A basic matrix with M x N elements. More... | |
class | Simplex |
A simplex in N dimensions (e.g. a tetrahedron, triangle, line, point). More... | |
struct | SizedStorage |
Array storage with templated static or dynamic size. If the array is dynamic, its length is stored internally and can be queried. More... | |
struct | SizedStorage< T, DYNAMIC_DIM > |
struct | SmallStorage |
Array storage which does not allocate from the heap unless the requested size is larger than a threshold, N . More... | |
class | Sphere |
An N-dimensional circle, sphere, or hypersphere with a filled interior. More... | |
class | SphericalCap |
The surface of a sphere within a certain angle from its pole. More... | |
class | SphericalHarmonics |
Class and methods for representing band-limited functions on the surface of a 3D sphere. More... | |
class | SplinePath |
Base class for a path defined by a sequence of concatenated splines. More... | |
struct | Storage |
Array storage with templated static or dynamic size. More... | |
struct | Storage< T, DYNAMIC_DIM > |
struct | storage_token_t |
class | Subtree |
A non-const iterator to a subtree. More... | |
class | SubtreeBase |
Base class for all iterators into Trees. More... | |
class | Transformed |
A wrapper shape which transforms another arbitrary shape with an AffineTransform. More... | |
class | Transformed< Rect< T, N > > |
Partial specialization of Transformed for Rects. | |
struct | TransposeIterator |
class | Tree |
A dynamic tree of arbitrary arity. More... | |
struct | UniqueStorage |
Array storage with templated static or dynamic size, and without reference counting. More... | |
struct | UniqueStorage< T, DYNAMIC_DIM > |
struct | UnmanagedStorage |
class | Vec |
A tuple of N elements of type T . More... | |
class | Vec< T, 2 > |
2D specialization of vector class. More... | |
class | Vec< T, 3 > |
3D specialization of vector class. More... | |
class | Vec< T, 4 > |
4D specialization of vector class. More... | |
struct | VectorDimension |
struct | VectorDimension< Vec< T, M > > |
struct | WrappedStorage |
Array storage with templated static or dynamic size, acting as a thin, templated wrapper around a bare array which is memory managed by the caller. More... | |
class | ZonalHarmonics |
Represents a function on the N-sphere with axial symmetry. More... | |
Concepts | |
concept | Transform |
Represents a means of transforming a point or vector. | |
concept | Transformable |
concept | DimensionalObject |
Concept for an object or operation that exists in a certain dimension with a certain coordinate type. | |
concept | CubicSplineObject |
Concept for a cubic spline. | |
concept | BoundedObject |
A shape which can efficiently report its bounding box. | |
concept | ConvexObject |
A convex shape which implements its convex support function. | |
concept | RayIntersectableObject |
A shape which can be intersected by a ray. | |
concept | RegionObject |
A shape which can test for point containment. | |
concept | SdfObject |
A shape which can report its exact signed distance field. | |
concept | InteriorMeasurableObject |
A shape which can measure its interior region. | |
concept | BoundaryMeasurableObject |
A shape which can measure its boundary. | |
concept | MeasurableObject |
A shape which can measure both its surface area and volume. | |
concept | ProjectableObject |
A shape which can perform an orthogonal projection to its boundary. | |
Typedefs | |
typedef AffineTransform< double, 2 > | AffineTransform2d |
typedef AffineTransform< float, 2 > | AffineTransform2f |
typedef AffineTransform< double, 3 > | AffineTransform3d |
typedef AffineTransform< float, 3 > | AffineTransform3f |
using | DefaultLCG |
A default random number generator type. | |
typedef Rect< index_t, 2 > | MatrixRegion |
typedef Quat< double > | Quatd |
typedef Quat< float > | Quatf |
typedef Ray< double, 2 > | Ray2d |
typedef Ray< float, 2 > | Ray2f |
typedef Ray< index_t, 2 > | Ray2i |
typedef Ray< double, 3 > | Ray3d |
typedef Ray< float, 3 > | Ray3f |
typedef Ray< index_t, 3 > | Ray3i |
typedef Ray< double, 4 > | Ray4d |
typedef Ray< float, 4 > | Ray4f |
typedef Ray< index_t, 4 > | Ray4i |
typedef SimpleMatrix< double, 2, 2 > | SimpleMatrix2d |
typedef SimpleMatrix< float, 2, 2 > | SimpleMatrix2f |
typedef SimpleMatrix< double, 3, 3 > | SimpleMatrix3d |
typedef SimpleMatrix< float, 3, 3 > | SimpleMatrix3f |
typedef SimpleMatrix< double, 4, 4 > | SimpleMatrix4d |
typedef SimpleMatrix< float, 4, 4 > | SimpleMatrix4f |
typedef SimpleMatrix< double, 0, 0 > | SimpleMatrixNd |
typedef SimpleMatrix< float, 0, 0 > | SimpleMatrixNf |
template<typename T, index_t N> | |
using | SphericalShell = Dilated<Hollow<Sphere<T,N>>> |
Convenience typedef for a spherical shell. | |
template<typename T> | |
using | Tetrahedron = Simplex<T,3> |
template<typename T> | |
using | Triangle = Simplex<T,2> |
typedef Vec< double, 2 > | Vec2d |
typedef Vec< float, 2 > | Vec2f |
typedef Vec< index_t, 2 > | Vec2i |
typedef Vec< double, 3 > | Vec3d |
typedef Vec< float, 3 > | Vec3f |
typedef Vec< index_t, 3 > | Vec3i |
typedef Vec< double, 4 > | Vec4d |
typedef Vec< float, 4 > | Vec4f |
typedef Vec< index_t, 4 > | Vec4i |
template<typename T, index_t N> | |
using | VecType = typename PointType<T,N>::point_t |
The type of a vector in N dimensions with elements of type T. | |
template<typename T, index_t M, index_t N, MatrixLayout Lyt = ROW_MAJOR> | |
using | WrapperMatrix = SimpleMatrix<T,M,N,Lyt,STORAGE_WRAPPED> |
Enumerations | |
enum | ArrayOrder { ARRAYORDER_FIRST_DIM_CONSECUTIVE , ARRAYORDER_LAST_DIM_CONSECUTIVE } |
Array traversal order, specified in terms of which axes to increment first. More... | |
enum class | DiscontinuityPolicy { NaN , Average , Left , Right , Inf } |
Policy for handling discontinuous derivatives. More... | |
enum | EdgeBehavior { EDGE_CLAMP , EDGE_PERIODIC , EDGE_MIRROR , EDGE_CONSTANT } |
Raster edge-sampling behavior. More... | |
enum | Interpolation { INTERP_NEAREST , INTERP_LINEAR , INTERP_CUBIC } |
Behavior for sampling between data points. More... | |
enum class | KDAxisChoice { AXIS_LONGEST , AXIS_HIGHEST_VARIANCE , AXIS_CYCLICAL } |
Strategy for choosing an axis along which to split a group of objects in a spatial index. More... | |
enum class | KDInsertionChoice { INSERT_SMALLEST_VOLUME_INCREASE , INSERT_SHORTEST_DISTANCE } |
Strategy for insertion of an object into an existing tree. More... | |
enum class | KDPivotChoice { PIVOT_MEAN , PIVOT_MEDIAN } |
Strategy for choosing the pivot value when splitting a group of objects in a spatial index. More... | |
enum | MatrixLayout { ROW_MAJOR , COL_MAJOR } |
enum | StoragePolicy { STORAGE_SHARED , STORAGE_UNIQUE , STORAGE_WRAPPED } |
Functions | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | abs (const geom::Dual< T, P > &d) |
Absolute value. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | abs (const geom::Vec< T, N > &v) |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | acos (const geom::Dual< T, P > &d) |
Arccos (inverse cosine) function. | |
template<typename Ma, typename Mb> | |
std::enable_if< detail::MatrixDimensionMatch< Ma, Mb >::isStaticMatch, typenamedetail::_ImplMatrixAdd< Ma, Mb >::return_t >::type | add (const Ma &a, const Mb &b) |
template<typename Matrix1, typename Matrix2> | |
Matrix | add (const Matrix1 &a, const Matrix2 &b) |
template<typename Matrix, typename Matrix1, typename Matrix2> | |
void | add (Matrix *d, const Matrix1 &a, const Matrix2 &b) |
template<typename Md, typename Ma, typename Mb> | |
std::enable_if< detail::MatrixDimensionMatch< Ma, Mb >::isStaticMatchanddetail::MatrixDimensionMatch< Ma, Md >::isStaticMatch, void >::type | add (Md *d, const Ma &a, const Mb &b) |
template<typename Shape> | |
AnyConvexImpl< Shape > | as_any_convex (const Shape &s) |
Wrap s in a virtual class which implements the Convex concept. | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | asin (const geom::Dual< T, P > &d) |
Arcsin (inverse sine) function. | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | atan (const geom::Dual< T, P > &d) |
Arctan (inverse tangent) function. | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | atan2 (const geom::Dual< T, P > &y, const geom::Dual< T, P > &x) |
Arctangent of y/x in the range [-pi, pi] . | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | ceil (const geom::Dual< T, P > &d) |
Ceiling function. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | ceil (const geom::Vec< T, N > &v) |
template<typename T> | |
T | chebyshev (index_t kind, index_t n, T x) |
template<typename T> | |
constexpr T | coord (const T &v, index_t n) |
Access the n th coordinate of a const 1-D vector (scalar). | |
template<typename T, index_t N> | |
constexpr T | coord (const Vec< T, N > &v, index_t n) |
Access the n th coordinate of a const vector or scalar. | |
template<typename T> | |
constexpr T & | coord (T &v, index_t n) |
Access the n th coordinate of a 1-D vector (scalar). | |
template<typename T, index_t N> | |
constexpr T & | coord (Vec< T, N > &v, index_t n) |
Access the n th coordinate of a vector or scalar. | |
template<typename Ms, typename Md> | |
void | copyMatrixRegion (const Ms &src, Md &dst, const MatrixRegion &src_region, const Vec< index_t, 2 > &dst_begin) |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | cos (const geom::Dual< T, P > &d) |
Cosine function. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | cos (const geom::Vec< T, N > &v) |
DefaultLCG | create_rng () |
Create a new random number generator with a nondeterministic seed. | |
template<typename T, index_t N, index_t M> | |
T | det (const DiagMatrix< T, N, M > &m) |
Compute the determinant of a diagonal matrix. | |
template<index_t N> | |
index_t | det (const PermutationMatrix< N > &m) |
Compute the determinant of a permutation matrix. | |
template<typename T, MatrixLayout Lyt, StoragePolicy P> | |
T | det (const SimpleMatrix< T, 2, 2, Lyt, P > &m) |
template<typename T, MatrixLayout Lyt, StoragePolicy P> | |
T | det (const SimpleMatrix< T, 3, 3, Lyt, P > &m) |
template<typename T, MatrixLayout Lyt, StoragePolicy P> | |
T | det (const SimpleMatrix< T, 4, 4, Lyt, P > &m) |
template<typename T, index_t M, index_t N, MatrixLayout Lyt, StoragePolicy P> | |
T | det (const SimpleMatrix< T, M, N, Lyt, P > &m) |
Compute the determinant of a square matrix. | |
template<typename T> | |
T | det2x2 (const T m[4]) |
template<typename T> | |
T | det2x2 (T a, T b, T c, T d) |
Compute the 2x2 matrix determinant from individual parameters. | |
template<typename T> | |
T | det3x3 (const T m[9]) |
Compute the 3x3 matrix determinant. | |
template<typename T> | |
T | det3x3 (T a, T b, T c, T d, T e, T f, T g, T h, T i) |
Compute the 3x3 matrix determinant from individual parameters. | |
template<typename T> | |
T | det4x4 (const T m[16]) |
Compute the 4x4 matrix determinant. | |
template<typename T> | |
T | det_destructive (T *m, index_t n) |
Destructively compute the determinant of a square matrix. | |
template<typename T> | |
T | detNxN (const T *m, index_t n) |
Compute the determinant of a square matrix. | |
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 Shape> | |
Dilated< Shape > | dilate (const Shape &s, typename Shape::elem_t dilation) |
Dilate the shape s by the amount dilation . | |
template<typename T, index_t N> | |
Sphere< T, N > | dilate (const Sphere< T, N > &s, T dilation) |
Dilate the Sphere s by the amount dilation . | |
template<typename T, index_t N> | |
Plane< T, N > | dilate (Plane< T, N > p, T dilation) |
Dilate the Plane p by the amount dilation . | |
template<typename T> | |
AffineTransform< T, 3 > | direction_align (const Vec< T, 3 > &dir, const Vec< T, 3 > &align_with) |
template<typename T, index_t N> | |
void | emit_hull (FILE *f, const Vec< T, N > *pts, index_t n) |
template<typename T, index_t N> | |
void | emit_simplex (FILE *f, const Simplex< T, N > &s) |
template<typename T, index_t N> | |
void | emit_splex_stage (FILE *f, const Simplex< T, N > &cur, const Simplex< T, N > &next, const Vec< T, N > &a, const Vec< T, N > &d) |
template<typename T, index_t N> | |
void | emit_vec (FILE *f, const char *label, const Vec< T, N > &v) |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | exp (const geom::Dual< T, P > &d) |
Exponential (ex) function. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | exp (const geom::Vec< T, N > &v) |
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. | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | floor (const geom::Dual< T, P > &d) |
Floor function. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | floor (const geom::Vec< T, N > &v) |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | fma (geom::Dual< T, P > a, geom::Dual< T, P > b, geom::Dual< T, P > c) |
Fused multiply-add. | |
template<typename T> | |
const Vec< T, 4 > | from_argb (int aRGB) |
template<typename T> | |
Vec< T, 3 > | from_rgb (int aRGB) |
template<typename T> | |
const Vec< T, 4 > | from_rgba (int rgba) |
template<typename Shape> | |
Frustum< Shape > | frustum (const Shape &s, typename Shape::elem_t h0, typename Shape::elem_t h1) |
Convenience function to raise the shape s into a frustum between heights h0 and h1 , by wrapping s in the Frustum template. | |
template<typename T, typename H> | |
H | hash (const T &obj) |
Produce a hash of an object. | |
template<typename T, typename H> | |
H | hash_array (H nonce, const T *objs, size_t count) |
template<typename H> | |
H | hash_bytes (H nonce, const void *obj, size_t size) |
template<std::unsigned_integral H> | |
constexpr H | hash_combine (H h0, H h1) |
Combine two hashes into one. | |
template<typename H> | |
constexpr H | hash_combine_many (H h) |
template<typename H, typename... Hs> | |
constexpr H | hash_combine_many (H h, Hs... hashes) |
template<typename H, typename... Ts> | |
H | hash_many (H nonce, const Ts &... objs) |
template<typename T, index_t N> | |
bool | intersects (const AnyConvex< T, N > &shape_a, const AnyConvex< T, N > &shape_b) |
template<typename Matrix1> | |
Matrix | inv (const Matrix1 &m, bool *success) |
template<typename Mx> | |
detail::_ImplMtxInv< Mx >::return_t | inv (const Mx &m, bool *success, M_ENABLE_IF(Mx::ROWDIM==Mx::COLDIM or Mx::ROWDIM *Mx::COLDIM==DYNAMIC_DIM)) |
template<typename Matrix1, typename Matrix2> | |
bool | inv (Matrix1 *into, const Matrix2 &src) |
template<typename Md, typename Mx> | |
bool | inv (Md *into, const Mx &src, M_ENABLE_IF((detail::MatrixDimensionMatch< Md, Mx >::isStaticMatch and(Mx::ROWDIM==Mx::COLDIM or Mx::ROWDIM *Mx::COLDIM==DYNAMIC_DIM)))) |
template<typename T> | |
bool | inv2x2 (T *out, const T m[4]) |
2 × 2 matrix inversion on a flat array. | |
template<typename T> | |
bool | inv3x3 (T *out, const T m[9]) |
3 × 3 matrix inversion on a flat array. | |
template<typename T> | |
bool | inv4x4 (T *out, const T m[16]) |
4 × 4 matrix inversion on a flat array. | |
template<typename T, index_t N> | |
bool | invNxN (T *out, T *m) |
N × N matrix inversion. | |
template<typename T> | |
bool | invNxN (T *out, T *m, index_t n) |
N × N matrix inversion on a flat array. | |
template<typename T> | |
T | legendre (index_t l, index_t m, T x) |
template<typename T> | |
T | legendre (index_t n, T x) |
template<typename T, index_t N> | |
void | legendre (SphericalHarmonics< T, N > *sh, index_t m, T x) |
template<typename T> | |
T | legendre_integral (index_t n, T x) |
template<typename T, geom::DiscontinuityPolicy Dp> | |
geom::Dual< T, Dp > | log (const geom::Dual< T, Dp > &d) |
Returns the natural logarithm of d . | |
template<typename T, index_t N> | |
geom::Vec< T, N > | log (const geom::Vec< T, N > &v) |
template<typename T, index_t N> | |
constexpr T | mag (const Vec< T, N > &v) |
Compute the magnitude of a vector or scalar. | |
template<typename T> | |
constexpr T | mag (T x) |
Compute the absolute value of a scalar. | |
template<typename T, index_t N> | |
constexpr T | mag2 (const Vec< T, N > &v) |
Compute the squared magnitude of a vector or scalar. | |
template<typename T> | |
constexpr T | mag2 (T x) |
Compute the square of a scalar. | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | max (const geom::Dual< T, P > &d1, const geom::Dual< T, P > &d2) |
Maximum. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | max (const geom::Vec< T, N > &a, const geom::Vec< T, N > &b) |
template<typename T> | |
constexpr T | measure_ball_interior (index_t d, T r) |
Formula for the volume of a d dimensional ball with radius r . | |
template<typename T> | |
constexpr T | measure_sphere_boundary (index_t d, T r) |
Formula for the surface area of a d dimensional ball with radius r . | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | min (const geom::Dual< T, P > &d1, const geom::Dual< T, P > &d2) |
Minimum. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | min (const geom::Vec< T, N > &a, const geom::Vec< T, N > &b) |
template<typename T, index_t N> | |
Isometry< T, N > | mix (T s, const Isometry< T, N > &a, const Isometry< T, N > &b) |
Continuously interpolate two isometries. | |
template<typename T, index_t N> | |
Similarity< T, N > | mix (T s, const Similarity< T, N > &a, const Similarity< T, N > &b) |
Interpolate between two similarity transforms. It is invalid to interpolate between two similarity transforms with different signs. | |
template<typename T> | |
Rotation< T, 2 > | mix (T s, const Rotation< T, 2 > &a, const Rotation< T, 2 > &b) |
Minimally interpolate two rotations. | |
template<typename T> | |
Rotation< T, 3 > | mix (T s, const Rotation< T, 3 > &a, const Rotation< T, 3 > &b) |
Minimally interpolate two rotations. | |
template<typename Ma, typename Mb> | |
bool | mtx_aliases_storage (const Ma &a, const Mb &b) |
template<typename T, index_t N> | |
bool | mtx_aliases_storage (const Vec< T, N > &a, const Vec< T, N > &b) |
template<typename Matrix, typename Matrix1> | |
void | mtxcopy (Matrix *into, const Matrix1 &src) |
template<typename Md, typename Ms> | |
void | mtxcopy (Md *into, const Ms &src, typename std::enable_if< detail::_ImplVecOrient< Md, Ms >::orient==detail::ORIENT_VEC_UNKNOWN, int >::type dummy=0) |
template<typename Md, typename Ms> | |
void | mtxcopy (Md *into, const Ms &src, typename std::enable_if< detail::LinalgDimensionMatch< Md, Ms >::val and(detail::_ImplVecOrient< Md, Ms >::orient !=detail::ORIENT_VEC_UNKNOWN), int >::type dummy=0) |
template<typename Ma, typename Mb> | |
std::enable_if< detail::MatrixMultipliable< Ma, Mb >::val, typenamedetail::_ImplMtxMul< Ma, Mb >::return_t >::type | mul (const Ma &a, const Mb &b) |
template<typename Matrix1, typename Matrix2> | |
Matrix | mul (const Matrix1 &a, const Matrix2 &b) |
template<typename Matrix, typename Matrix1, typename Matrix2> | |
Matrix & | mul (Matrix *into, const Matrix1 &a, const Matrix2 &b) |
template<typename Md, typename Ma, typename Mb> | |
std::enable_if< detail::MatrixMultipliable< Ma, Mb >::valanddetail::_ImplMtxResult< Ma, Mb, Md >::agreement==detail::MTX_RESULT_MATCH, Md & >::type | mul (Md *into, const Ma &a, const Mb &b) |
template<typename Md, typename Ma, typename Mb> | |
std::enable_if< detail::MatrixMultipliable< Ma, Mb >::valanddetail::_ImplMtxResult< Ma, Mb, Md >::agreement==detail::MTX_RESULT_UNKNOWN, Md & >::type | mul (Md *into, const Ma &a, const Mb &b) |
template<typename Md, typename Ma, typename Mb> | |
std::enable_if< detail::MatrixMultipliable< Ma, Mb >::valanddetail::_ImplMtxResult< Ma, Mb, Md >::agreement==detail::MTX_RESULT_MATCH, Md & >::type | mul_acc (Md *into, const Ma &a, const Mb &b) |
template<typename Md, typename Ma, typename Mb> | |
std::enable_if< detail::MatrixMultipliable< Ma, Mb >::valanddetail::_ImplMtxResult< Ma, Mb, Md >::agreement==detail::MTX_RESULT_UNKNOWN, Md & >::type | mul_acc (Md *into, const Ma &a, const Mb &b) |
template<typename T, index_t N> | |
bool | nullspace (const Vec< T, N > bases[], index_t n, Vec< T, N > null_basis[]) |
Compute the null space of a vector basis. | |
template<typename Ma, typename Mb> | |
std::enable_if< detail::IsMatrix< Ma >::valanddetail::IsMatrix< Mb >::val, bool >::type | operator!= (const Ma &a, const Mb &b) |
template<typename Matrix1, typename Matrix2> | |
bool | operator!= (const Matrix1 &a, const Matrix2 &b) |
template<typename T, index_t N, Transform< T, N > Xf> | |
BezierSpline< T, N > | operator* (const Xf &xf, const BezierSpline< T, N > &spline) |
template<typename T, index_t N, Transform< T, N > Xf> | |
BSpline< T, N > | operator* (const Xf &xf, const BSpline< T, N > &spline) |
template<typename T, index_t N, Transform< T, N > Xf> | |
CatromSpline< T, N > | operator* (const Xf &xf, const CatromSpline< T, N > &spline) |
template<typename T, index_t N, Transform< T, N > Xf> | |
HermiteSpline< T, N > | operator* (const Xf &xf, const HermiteSpline< T, N > &spline) |
template<typename T, index_t N> | |
Capsule< T, N > | operator* (const Isometry< T, N > &xf, const Capsule< T, N > &c) |
Transform a capsule by an isometry. | |
template<typename T, index_t N> | |
Cylinder< T, N > | operator* (const Isometry< T, N > &xf, const Cylinder< T, N > &c) |
Transform a cylinder by an isometry. | |
template<typename T, index_t N, typename Shape> | |
Dilated< Shape > | operator* (const Isometry< T, N > &xf, const Dilated< Shape > &s) |
Transform a dilated shape by an isometry. | |
template<typename T, index_t N> | |
Simplex< T, N > | operator* (const Isometry< T, N > &xf, const Simplex< T, N > &s) |
Transform a simplex by an isometry. | |
template<typename T, index_t N> | |
Sphere< T, N > | operator* (const Isometry< T, N > &xf, const Sphere< T, N > &s) |
Transform a sphere by an isometry. | |
template<typename T, index_t N> | |
Isometry< T, N > | operator* (const Isometry< T, N > &xf, T s) |
Scale the magnitude of an isometry. | |
template<typename T, index_t N> | |
Isometry< T, N > | operator* (T s, const Isometry< T, N > &xf) |
Scale the magnitude of an isometry. A scale of 0 produces an identity transform. Applying a scale of 1 to an isometry results in no change. | |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {t * u} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator* (const Dual< T, Dp > &d, U s) |
Dual-scalar multiplication. | |
template<typename T, DiscontinuityPolicy Dp> | |
constexpr auto | operator* (const Dual< T, Dp > &d1, const Dual< T, Dp > &d2) |
Dual-dual multiplication. | |
template<typename Ma, typename Mb> | |
detail::MatrixMultReturnType< Ma, Mb >::return_t | operator* (const Ma &a, const Mb &b) |
template<typename U, typename Matrix> | |
Matrix | operator* (const Matrix &m, U k) |
template<typename Matrix1, typename Matrix2> | |
Matrix | operator* (const Matrix1 &a, const Matrix2 &b) |
template<typename U, typename Mx> | |
std::enable_if< detail::IsMatrix< Mx >::valandstd::is_scalar< U >::value, typenamedetail::_ImplMatrixScale< Mx >::return_t >::type | operator* (const Mx &m, U k) |
template<typename V, typename U> | |
std::enable_if< std::is_scalar< U >::valueanddetail::IsVector< V >::value, V >::type | operator* (const V &v, U d) |
template<typename V, typename U> | |
std::enable_if< std::is_scalar< U >::valueanddetail::IsVector< V >::value, V >::type | operator* (U d, const V &v) |
template<typename U, typename Matrix> | |
Matrix | operator* (U k, const Matrix &m) |
template<typename U, typename Mx> | |
std::enable_if< detail::IsMatrix< Mx >::valandstd::is_scalar< U >::value, typenamedetail::_ImplMatrixScale< Mx >::return_t >::type | operator* (U k, const Mx &m) |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires (T t, U u) { {u * t} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator* (U s, const Dual< T, Dp > &d) |
Scalar-dual multiplication. | |
template<typename T, index_t N> | |
Ray< T, N > | operator* (const Isometry< T, N > &xf, const Ray< T, N > &ray) |
Transform a ray. | |
template<typename T, index_t N> | |
PointType< T, N >::point_t | operator* (const Ray< T, N > r, T s) |
template<typename T, index_t N> | |
Ray< T, N > | operator* (const Rotation< T, N > &rot, Ray< T, N > ray) |
Apply a rotation to a ray. | |
template<typename T, index_t N> | |
Ray< T, N > | operator* (const Similarity< T, N > &i, const Ray< T, N > &ray) |
Transform a ray. | |
template<typename T, index_t N> | |
PointType< T, N >::point_t | operator* (T s, const Ray< T, N > r) |
template<typename T, index_t N> | |
Isometry< T, N > | operator* (const Isometry< T, N > &i, const Rotation< T, N > &r) |
Apply an isometry to a rotation. | |
template<typename T> | |
Rotation< T, 2 > | operator* (const Rotation< T, 2 > &o, T s) |
Extend a rotation. | |
template<typename T> | |
Rotation< T, 3 > | operator* (const Rotation< T, 3 > &o, T s) |
Extend a rotation. | |
template<typename T, index_t N> | |
Isometry< T, N > | operator* (const Rotation< T, N > &r, const Isometry< T, N > &i) |
Apply a rotation to an isometry. | |
template<typename T, index_t N> | |
Similarity< T, N > | operator* (const Rotation< T, N > &r, const Similarity< T, N > &i) |
Apply a rotation to a similarity. | |
template<typename T, index_t N> | |
Similarity< T, N > | operator* (const Similarity< T, N > &i, const Rotation< T, N > &r) |
Apply a similarity to a rotation. | |
template<typename T> | |
Rotation< T, 2 > | operator* (T s, const Rotation< T, 2 > &o) |
Extend a rotation. | |
template<typename T> | |
Rotation< T, 3 > | operator* (T s, const Rotation< T, 3 > &o) |
Extend a rotation. | |
template<typename Shape> | |
Similar< Shape > | operator* (const Similarity< typename Shape::elem_t, Shape::N > &xf, const Shape &shape) |
Transform the shape shape by wrapping it with a Similarity transform. | |
template<typename Shape> | |
Similar< Shape > | operator* (const Similarity< typename Shape::elem_t, Shape::N > &xf, const Similar< Shape > &s) |
Transform the shape s by xf . | |
template<typename T, index_t N> | |
Capsule< T, N > | operator* (const Similarity< T, N > &xf, const Capsule< T, N > &c) |
Transform a capsule by a similarity transform. | |
template<typename T, index_t N> | |
Cylinder< T, N > | operator* (const Similarity< T, N > &xf, const Cylinder< T, N > &c) |
Transform a cylinder by a similarity transform. | |
template<typename T, index_t N, typename Shape> | |
Dilated< Shape > | operator* (const Similarity< T, N > &xf, const Dilated< Shape > &s) |
Transform a dilated shape by a similarity transform. | |
template<typename T, index_t N> | |
Simplex< T, N > | operator* (const Similarity< T, N > &xf, const Simplex< T, N > &s) |
Transform a simplex by a similarity transform. | |
template<typename T, index_t N> | |
Sphere< T, N > | operator* (const Similarity< T, N > &xf, const Sphere< T, N > &s) |
Transform a sphere by a similarity transform. | |
template<typename Shape> | |
Transformed< Shape > | operator* (const AffineTransform< typename Shape::elem_t, Shape::N > &xf, const Shape &s) |
Transform the shape s by wrapping it in an Transformed class. | |
template<typename Shape> | |
Transformed< Shape > | operator* (const AffineTransform< typename Shape::elem_t, Shape::N > &xf, const Transformed< Shape > &s) |
Transform the transformed shape s by xf . | |
template<typename Shape, typename T, index_t N> | |
Transformed< Shape > | operator* (const Isometry< T, N > &xf, const Transformed< Shape > &s) |
Transform the shape s by an isometry xf . | |
template<typename Shape, typename T, index_t N> | |
Transformed< Shape > | operator* (const Similarity< T, N > &xf, const Transformed< Shape > &s) |
Transform the shape s by a similarity transform xf . | |
template<typename T, index_t N> | |
const Vec< T, N > | operator* (const Vec< T, N > &a, const Vec< T, N > &b) |
template<typename T, index_t N, typename U> | |
Vec< T, N > | operator* (const Vec< T, N > &v, U d) |
template<typename T, index_t N, typename U> | |
Vec< T, N > | operator* (U d, const Vec< T, N > &v) |
template<typename T, DiscontinuityPolicy Dp> | |
constexpr Dual< T, Dp > & | operator*= (Dual< T, Dp > &x, const Dual< T, Dp > &y) |
Multiply and assign to dual. | |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {t * u} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > & | operator*= (Dual< T, Dp > &x, T s) |
Multiply and assign to dual. | |
template<typename Matix, T, M, N> | |
Matrix & | operator*= (Matrix &m, const DiagMatrix< T, M, N > &d) |
template<typename Mx, typename T, index_t M, index_t N> | |
std::enable_if< detail::MatrixMultipliable< Mx, DiagMatrix< T, M, N > >::val, Mx & >::type | operator*= (Mx &m, const DiagMatrix< T, M, N > &d) |
template<typename Shape> | |
Similar< Shape > & | operator*= (Similar< Shape > &s, const Similarity< typename Shape::elem_t, Shape::N > &xf) |
In-place transform the shape s by xf . | |
template<typename Shape> | |
Transformed< Shape > & | operator*= (Transformed< Shape > &s, const AffineTransform< typename Shape::elem_t, Shape::N > &xf) |
In-place transform the transformed shape s by xf . | |
template<typename T, index_t N> | |
Isometry< T, N > | operator+ (const Isometry< T, N > &i, const Vec< T, N > &v) |
Apply a translation to an isometry. | |
template<typename T, index_t N> | |
Isometry< T, N > | operator+ (const Vec< T, N > &v, const Isometry< T, N > &i) |
Apply a translation to an isometry. | |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {t + u} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator+ (const Dual< T, Dp > &d, U s) |
Dual + scalar. | |
template<typename T, DiscontinuityPolicy Dp> requires requires (T t, T u) {t + u;} | |
constexpr Dual< T, Dp > | operator+ (const Dual< T, Dp > &d1, const Dual< T, Dp > &d2) |
Addition. | |
template<typename Ma, typename Mb> | |
detail::_ImplMatrixAddReturnType< Ma, Mb >::return_t | operator+ (const Ma &a, const Mb &b) |
template<typename Matrix1, typename Matrix2> | |
Matrix | operator+ (const Matrix1 &a, const Matrix2 &b) |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {u + t} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator+ (U s, const Dual< T, Dp > &d) |
Scalar + dual. | |
template<typename T, index_t N> | |
Rect< T, N > | operator+ (VecType< T, N > p, const Rect< T, N > &r) |
template<typename T, index_t N> | |
Similarity< T, N > | operator+ (const Similarity< T, N > &i, const Vec< T, N > &v) |
Apply a translation to a similarity. | |
template<typename T, index_t N> | |
Similarity< T, N > | operator+ (const Vec< T, N > &v, const Similarity< T, N > &i) |
Apply a translation to a similarity. | |
template<typename T, DiscontinuityPolicy Dp> | |
constexpr Dual< T, Dp > & | operator+= (Dual< T, Dp > &x, const Dual< T, Dp > &y) |
Add and assign. | |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {t += u} -> std::convertible_to<T&>; } | |
constexpr Dual< T, Dp > & | operator+= (Dual< T, Dp > &x, U s) |
template<typename T, DiscontinuityPolicy Dp> | |
constexpr Dual< T, Dp > | operator- (const Dual< T, Dp > &d) |
Unary negation. | |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {t - u} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator- (const Dual< T, Dp > &d, U s) |
Dual - scalar. | |
template<typename T, DiscontinuityPolicy Dp> | |
constexpr Dual< T, Dp > | operator- (const Dual< T, Dp > &d1, const Dual< T, Dp > &d2) |
Subtraction. | |
template<typename Ma, typename Mb> | |
detail::_ImplMatrixAddReturnType< Ma, Mb >::return_t | operator- (const Ma &a, const Mb &b) |
template<typename Matrix1, typename Matrix2> | |
Matrix | operator- (const Matrix1 &a, const Matrix2 &b) |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {u - t} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator- (U s, const Dual< T, Dp > &d) |
Scalar - dual. | |
template<typename T, index_t N> | |
Rect< T, N > | operator- (VecType< T, N > p, const Rect< T, N > &r) |
template<typename T, DiscontinuityPolicy Dp> | |
constexpr Dual< T, Dp > & | operator-= (Dual< T, Dp > &x, const Dual< T, Dp > &y) |
Subtract and assign. | |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires(T t, U u) { {t -= u} -> std::convertible_to<T&>; } | |
constexpr Dual< T, Dp > & | operator-= (Dual< T, Dp > &x, U s) |
template<typename T, index_t N, Transform< T, N > Xf> | |
BezierSpline< T, N > | operator/ (const BezierSpline< T, N > &spline, const Xf &xf) |
template<typename T, index_t N, Transform< T, N > Xf> | |
BSpline< T, N > | operator/ (const BSpline< T, N > &spline, const Xf &xf) |
template<typename T, index_t N, Transform< T, N > Xf> | |
CatromSpline< T, N > | operator/ (const CatromSpline< T, N > &spline, const Xf &xf) |
template<typename T, index_t N, Transform< T, N > Xf> | |
HermiteSpline< T, N > | operator/ (const HermiteSpline< T, N > &spline, const Xf &xf) |
template<typename T, index_t N> | |
Capsule< T, N > | operator/ (const Capsule< T, N > &c, const Isometry< T, N > &xf) |
Inverse-transform a capsule by an isometry. | |
template<typename T, index_t N> | |
Cylinder< T, N > | operator/ (const Cylinder< T, N > &c, const Isometry< T, N > &xf) |
Inverse-transform a cylinder by an isometry. | |
template<typename T, index_t N, typename Shape> | |
Dilated< Shape > | operator/ (const Dilated< Shape > &s, const Isometry< T, N > &xf) |
Inverse-transform a dilated shape by an isometry. | |
template<typename T, index_t N> | |
Simplex< T, N > | operator/ (const Simplex< T, N > &s, const Isometry< T, N > &xf) |
Inverse-transform a simplex by an isometry. | |
template<typename T, index_t N> | |
Sphere< T, N > | operator/ (const Sphere< T, N > &s, const Isometry< T, N > &xf) |
Inverse-transform a sphere by an isometry. | |
template<typename T, index_t N> | |
Vec< T, N > | operator/ (const Vec< T, N > &v, const Isometry< T, N > &i) |
Transform a point. | |
template<typename T, std::common_with< T > U, DiscontinuityPolicy Dp> requires requires (T t, U u) { {t / u} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator/ (const Dual< T, Dp > &d, U s) |
Dual / scalar division. | |
template<typename T, DiscontinuityPolicy Dp> | |
constexpr Dual< T, Dp > | operator/ (const Dual< T, Dp > &d1, const Dual< T, Dp > &d2) |
Dual-dual division. | |
template<typename T, std::common_with< T > U, DiscontinuityPolicy Dp> requires requires (T t, U u) { {u / t} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > | operator/ (U s, const Dual< T, Dp > &d) |
Scalar / dual division. | |
template<typename T, index_t N> | |
Ray< T, N > | operator/ (const Ray< T, N > &ray, const Isometry< T, N > &xf) |
Inverse-transform a ray. | |
template<typename T, index_t N> | |
Ray< T, N > | operator/ (const Ray< T, N > &ray, const Similarity< T, N > &i) |
Inverse-transform a ray. | |
template<typename T, index_t N> | |
Ray< T, N > | operator/ (Ray< T, N > ray, const Rotation< T, N > &rot) |
Apply the inverse of a rotation to a ray. | |
template<typename T> | |
Vec< T, 2 > | operator/ (const Vec< T, 2 > &v, const Rotation< T, 2 > &r) |
Apply the inverse of a rotation to a vector. | |
template<typename T> | |
Vec< T, 3 > | operator/ (const Vec< T, 3 > &v, const Rotation< T, 3 > &r) |
Apply the inverse of a rotation to a vector. | |
template<typename Shape> | |
Similar< Shape > | operator/ (const Shape &s, const Similarity< typename Shape::elem_t, Shape::N > &xf) |
Transform the shape s by the inverse of xf . | |
template<typename Shape> | |
Similar< Shape > | operator/ (const Similar< Shape > &s, const Similarity< typename Shape::elem_t, Shape::N > &xf) |
Transform the shape s by the inverse of xf . | |
template<typename T, index_t N> | |
Capsule< T, N > | operator/ (const Capsule< T, N > &c, const Similarity< T, N > &xf) |
Inverse-transform a capsule by a similarity transform. | |
template<typename T, index_t N> | |
Cylinder< T, N > | operator/ (const Cylinder< T, N > &c, const Similarity< T, N > &xf) |
Inverse-transform a cylinder by a similarity transform. | |
template<typename T, index_t N, typename Shape> | |
Dilated< Shape > | operator/ (const Dilated< Shape > &s, const Similarity< T, N > &xf) |
Inverse-transform a dilated shape by a similarity transform. | |
template<typename T, index_t N> | |
Simplex< T, N > | operator/ (const Simplex< T, N > &s, const Similarity< T, N > &xf) |
Inverse-transform a simplex by a similarity transform. | |
template<typename T, index_t N> | |
Sphere< T, N > | operator/ (const Sphere< T, N > &s, const Similarity< T, N > &xf) |
Inverse-transform a sphere by a similarity transform. | |
template<typename T, index_t N> | |
Vec< T, N > | operator/ (const Vec< T, N > &v, const Similarity< T, N > &i) |
Transform a point. | |
template<typename Shape> | |
Transformed< Shape > | operator/ (const Shape &s, const AffineTransform< typename Shape::elem_t, Shape::N > &xf) |
Transform the shape s by the inverse of xf . | |
template<typename Shape> | |
Transformed< Shape > | operator/ (const Transformed< Shape > &s, const AffineTransform< typename Shape::elem_t, Shape::N > &xf) |
Transform the transformed shape s by the inverse of xf . | |
template<typename Shape, typename T, index_t N> | |
Transformed< Shape > | operator/ (const Transformed< Shape > &s, const Isometry< T, N > &xf) |
Inverse transform the shape s by an isometry xf . | |
template<typename Shape, typename T, index_t N> | |
Transformed< Shape > | operator/ (const Transformed< Shape > &s, const Similarity< T, N > &xf) |
Inverse transform the shape s by a similarity transform xf . | |
template<typename T, index_t N> | |
const Vec< T, N > | operator/ (const Vec< T, N > &a, const Vec< T, N > &b) |
template<typename T, index_t N, typename U> | |
Vec< T, N > | operator/ (const Vec< T, N > &v, U d) |
template<typename T, index_t N, typename U> | |
Vec< T, N > | operator/ (const Vec< T, N > &v, U d) |
template<typename T, typename U, DiscontinuityPolicy Dp> requires requires (T t, U u) { {t / u} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > & | operator/= (Dual< T, Dp > &x, const Dual< U, Dp > &y) |
Divide and assign to dual. | |
template<typename T, std::common_with< T > U, DiscontinuityPolicy Dp> requires requires (T t, U u) { {t / u} -> std::convertible_to<T>; } | |
constexpr Dual< T, Dp > & | operator/= (Dual< T, Dp > &x, U s) |
Divide and assign to dual. | |
template<typename Shape> | |
Similar< Shape > & | operator/= (Similar< Shape > &s, const Similarity< typename Shape::elem_t, Shape::N > &xf) |
In-place transform the shape s by the inverse of xf . | |
template<typename Shape> | |
Transformed< Shape > & | operator/= (Transformed< Shape > &s, const AffineTransform< typename Shape::elem_t, Shape::N > &xf) |
In-place transform the transformed shape s by the inverse of xf . | |
template<typename Ma, typename Mb> | |
std::enable_if< detail::IsMatrix< Ma >::valanddetail::IsMatrix< Mb >::valanddetail::MatrixDimensionMatch< Ma, Mb >::isStaticMatch, bool >::type | operator== (const Ma &a, const Mb &b) |
template<typename Ma, typename Mb> | |
std::enable_if< detail::IsMatrix< Ma >::valanddetail::IsMatrix< Mb >::valandnotdetail::MatrixDimensionMatch< Ma, Mb >::isStaticMatch, bool >::type | operator== (const Ma &a, const Mb &b) |
template<typename Matrix1, typename Matrix2> | |
bool | operator== (const Matrix1 &a, const Matrix2 &b) |
template<typename T> | |
Vec< T, 2 > | orthogonal (const Vec< T, 2 > v[1]) |
template<typename T> | |
Vec< T, 3 > | orthogonal (const Vec< T, 3 > v[2]) |
template<typename T, index_t N> | |
Vec< T, N > | orthogonal (const Vec< T, N > v[N-1]) |
Return a vector orthogonal to the given N-1 vectors. | |
template<typename T> | |
void | orthogonalize (Vec< T, 2 > basis[2], index_t _n=2) |
template<typename T, index_t N> | |
void | orthogonalize (Vec< T, N > basis[], index_t n) |
Use the Gram-Schmidt process to orthogonalize a set of basis vectors. | |
template<typename T, index_t N> | |
void | orthonormalize (Vec< T, N > basis[], index_t n) |
Use the Gram-Schmidt process to orthonormalize a set of basis vectors. | |
template<typename RandomAccessIterator> | |
void | permutation_apply (index_t *p, index_t n, RandomAccessIterator v) |
Apply a permutation in-place, resetting the permutation to identity in the process. | |
index_t | permutation_sign (index_t *p, index_t n) |
Compute the sign of a permutation, resetting the permutation to identity in the process. | |
template<typename T, typename U> | |
geom::Dual< T > | pow (const geom::Dual< T > &base, U xp) |
Returns base raised to exponent xp . | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | pow (const geom::Dual< T, P > &base, const geom::Dual< T, P > &xp) |
Returns base raised to exponent xp . | |
template<typename T, typename U, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | pow (U base, const geom::Dual< T, P > &xp) |
Returns base raised to exponent xp . | |
template<typename T, index_t N> | |
Vec< T, N > | project_to_orthogonal_subspace (const Vec< T, N > bases[], Vec< T, N > x, index_t n) |
Project a vector onto an orthogonal subspace. | |
template<typename T, index_t N> | |
Vec< T, N > | project_to_subspace (Vec< T, N > bases[], Vec< T, N > x, index_t n) |
Project a vector onto a non-orthogonal subspace. | |
template<typename T> | |
Vec< T, 3 > | rainbow (double s) |
template<typename T, index_t N, typename Generator> | |
Vec< T, N > | random_gaussian (Generator &rng) |
Generate a random vector drawn from a multivariate gaussian distribution with mean 0 and variance 1. | |
template<typename T, index_t N, typename Generator> | |
Vec< T, N > | random_unit (Generator &rng) |
Generate a random vector with unit length. | |
template<typename T, index_t N> | |
AffineTransform< T, N > | remap_transform (const Rect< T, N > ®ion) |
Return a transformation which maps the unit interval to the region. | |
template<typename T> | |
AffineTransform< T, 3 > | rotation (Quat< T > q) |
template<typename T> | |
AffineTransform< T, 2 > | rotation (T radians) |
template<typename T> | |
AffineTransform< T, 3 > | rotation (Vec< T, 3 > axis, const Vec< T, 3 > ¢er, T radians) |
template<typename T> | |
AffineTransform< T, 3 > | rotation (Vec< T, 3 > axis, T radians) |
template<typename T> | |
AffineTransform< T, 3 > | rotation_x (T theta) |
template<typename T> | |
AffineTransform< T, 3 > | rotation_y (T theta) |
template<typename T> | |
AffineTransform< T, 3 > | rotation_z (T theta) |
template<typename T> | |
SimpleMatrix< T, 3, 3 > | rotmat (const Quat< T > &q) |
template<typename T> | |
void | rotmat (SimpleMatrix< T, 4, 4 > *into, const Quat< T > &q) |
template<typename T> | |
void | rotmat (SimpleMatrix< T, 4, 4 > *into, const Vec< T, 3 > &axis, T theta) |
template<typename T> | |
void | rotmat (SimpleMatrix< T, 4, 4 > *into, T x, T y, T z, T px, T py, T pz, T theta) |
template<typename T> | |
void | rotmat (SimpleMatrix< T, 4, 4 > *into, T x, T y, T z, T theta) |
template<typename T> | |
void | rotmat (SimpleMatrix< T, 4, 4 > *into, Vec< T, 3 > axis, Vec< T, 3 > ctr, T theta) |
template<typename T> | |
void | rotmat (SimpleMatrix< T, 4, 4 > *out_mat, SimpleMatrix< T, 4, 4 > *out_inv, const Vec< T, 3 > &axis, const Vec< T, 3 > &ctr, T theta) |
template<typename T> | |
void | rotmat (SimpleMatrix< T, 4, 4 > *out_mat, SimpleMatrix< T, 4, 4 > *out_inv, T x, T y, T z, T px, T py, T pz, T theta) |
template<typename T> | |
SimpleMatrix< T, 3, 3 > | rotmat_direction_align (const Vec< T, 3 > &dir, const Vec< T, 3 > &alignWith) |
template<typename T> | |
void | rotmat_direction_align (SimpleMatrix< T, 3, 3 > *into, const Vec< T, 3 > &dir, const Vec< T, 3 > &alignWith) |
template<typename T> | |
void | rotmat_direction_align (SimpleMatrix< T, 4, 4 > *into, const Vec< T, 3 > &dir, const Vec< T, 3 > &alignWith) |
template<typename T> | |
void | rotmat_x (SimpleMatrix< T, 4, 4 > *into, T theta) |
template<typename T> | |
SimpleMatrix< T, 3, 3 > | rotmat_x (T theta) |
template<typename T> | |
void | rotmat_y (SimpleMatrix< T, 4, 4 > *into, T theta) |
template<typename T> | |
SimpleMatrix< T, 3, 3 > | rotmat_y (T theta) |
template<typename T> | |
void | rotmat_z (SimpleMatrix< T, 4, 4 > *into, T theta) |
template<typename T> | |
SimpleMatrix< T, 3, 3 > | rotmat_z (T theta) |
template<typename T, index_t N> | |
Dilated< Rect< T, N > > | roundrect (const Rect< T, N > &rect, T radius) |
Produce a rounded rectangle with corner radius radius . | |
template<typename T, index_t N> | |
AffineTransform< T, N > | scale (const Vec< T, N > &sx) |
template<typename T> | |
AffineTransform< T, 2 > | scale (T sx, T sy) |
template<typename T> | |
AffineTransform< T, 3 > | scale (T sx, T sy, T sz) |
template<typename U typename Matrix, typename Matrix> | |
void | scale (Matrix1 *d, U k, const Matrix &m) |
template<typename U, typename Mx, typename Md> | |
std::enable_if< detail::IsMatrix< Mx >::valandstd::is_scalar< U >::valueanddetail::MatrixDimensionMatch< Mx, Md >::isStaticMatch, void >::type | scale (Md *d, U k, const Mx &m) |
template<typename T> | |
AffineTransform< T, 1 > | scale (T sx) |
template<typename U, typename Matrix> | |
Matrix | scale (U k, const Matrix &m) |
template<typename U, typename Mx> | |
std::enable_if< detail::IsMatrix< Mx >::valandstd::is_scalar< U >::value, typenamedetail::_ImplMatrixScale< Mx >::return_t >::type | scale (U k, const Mx &m) |
template<typename T, index_t N> | |
Dilated< Hollow< Sphere< T, N > > > | shell (const Sphere< T, N > &s, T thickness) |
Create a spherical shell with wall thickness thickness around the Sphere s . | |
template<typename T, index_t N> | |
Dilated< Hollow< Sphere< T, N > > > | shell (Vec< T, N > center, T r0, T r1) |
Create a spherical shell around center , with inner and outer radii r0 and r1 . | |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | sin (const geom::Dual< T, P > &d) |
Sine function. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | sin (const geom::Vec< T, N > &v) |
template<typename T> | |
T | spherical_harmonic_coeff (index_t l, index_t m, T cos_alt, T azi) |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | sqrt (const geom::Dual< T, P > &d) |
Square root. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | sqrt (const geom::Vec< T, N > &v) |
template<typename Ma, typename Mb> | |
std::enable_if< detail::MatrixDimensionMatch< Ma, Mb >::isStaticMatch, typenamedetail::_ImplMatrixAdd< Ma, Mb >::return_t >::type | sub (const Ma &a, const Mb &b) |
template<typename Matrix1, typename Matrix2> | |
Matrix | sub (const Matrix1 &a, const Matrix2 &b) |
template<typename Matrix, typename Matrix1, typename Matrix2> | |
void | sub (Matrix *d, const Matrix1 &a, const Matrix2 &b) |
template<typename Md, typename Ma, typename Mb> | |
std::enable_if< detail::MatrixDimensionMatch< Ma, Mb >::isStaticMatchanddetail::MatrixDimensionMatch< Ma, Md >::isStaticMatch, void >::type | sub (Md *d, const Ma &a, const Mb &b) |
template<typename T, geom::DiscontinuityPolicy P> | |
geom::Dual< T, P > | tan (const geom::Dual< T, P > &d) |
Tangent function. | |
template<typename T, index_t N> | |
geom::Vec< T, N > | tan (const geom::Vec< T, N > &v) |
template<typename T, index_t N> | |
bool | trace_simplex (const Vec< T, N > verts[N], const Ray< T, N > &ray, Vec< T, N-1 > *uv, T *s) |
template<typename T, index_t N, MatrixLayout Lyt, StoragePolicy P> | |
AffineTransform< T, N > | transformation (const SimpleMatrix< T, N, N, Lyt, P > &mat) |
template<typename T, index_t N> | |
AffineTransform< T, N > | translation (const Vec< T, N > &tx) |
template<typename T> | |
AffineTransform< T, 2 > | translation (T tx, T ty) |
template<typename T> | |
AffineTransform< T, 3 > | translation (T tx, T ty, T tz) |
template<typename T> | |
AffineTransform< T, 1 > | translation (T tx) |
template<typename Matrix1> | |
Matrix | transpose (const Matrix1 &m) |
template<typename Mx> | |
std::enable_if< detail::IsMatrix< Mx >::val, typenamedetail::_ImplMtxTxpose< Mx >::return_t >::type | transpose (const Mx &m) |
template<typename Matrix1, typename Matrix2> | |
void | transpose (Matrix1 *into, const Matrix2 &m) |
template<typename Md, typename Mx> | |
std::enable_if< detail::IsMatrix< Md >::valanddetail::IsMatrix< Mx >::valand(Md::ROWDIM==Mx::COLDIMorMd::ROWDIM *Mx::COLDIM==0) and(Md::COLDIM==Mx::ROWDIMorMd::COLDIM *Mx::ROWDIM==0), void >::type | transpose (Md *into, const Mx &m) |
template<typename T, index_t M, index_t N, MatrixLayout Lyt, StoragePolicy P> | |
std::enable_if< M *N==0orM==N, void >::type | transpose (SimpleMatrix< T, M, N, Lyt, P > *into, const SimpleMatrix< T, M, N, Lyt, P > &m) |
template<typename T, index_t N> | |
void | transpose_square_matrix (T *m) |
Transpose a square matrix with static dimensions. | |
template<typename T> | |
void | transpose_square_matrix (T *m, index_t n) |
Transpose a square matrix. | |
template<typename T> | |
Vec< T, 3 > | triangle_normal (const Vec< T, 3 > p1, const Vec< T, 3 > p2, const Vec< T, 3 > p3) |
template<std::integral H> | |
constexpr H | truncated_constant (uint64_t k0, uint64_t k1) |
template<typename T, typename H> | |
constexpr H | type_constant () |
template<typename T, index_t N> | |
AffineTransform< T, N > | unmap_transform (const Rect< T, N > ®ion) |
Return a transformation which maps the region to the unit interval. | |
template<typename T> | |
T | multiply_add (T a, T b, T c) |
Fused multiply-add. | |
template<typename T> | |
T | diff_of_products (T a, T b, T c, T d) |
template<typename T> | |
T | sum_of_products (T a, T b, T c, T d) |
template<typename T> | |
T | positive_mod (T a, T b) |
template<typename T> | |
T | clamp (const T &v, const T &lo, const T &hi) |
template<typename S, typename T> | |
std::common_type< S, T >::type | mix (S t, T a, T b) |
template<typename S, typename T> | |
T | interp_linear (const S s[], const T p[], int dim) |
template<typename S, typename T> | |
T | interp_cubic (S s, const T p[4]) |
template<typename S, typename T> | |
T | interp_cubic (const S s[], const T p[], int dim) |
template<typename T> | |
bool | quadratic_solve (T results[2], T a, T b, T c) |
template<typename T> | |
T | angle_to (T radians_0, T radians_1) |
template<typename T> | |
constexpr auto | ceil_div (T a, T b) |
Compute ceil(a/b) . | |
template<typename T> | |
constexpr auto | snap (T a, T b) |
Snap a to the nearest multiple of b larger than or equal to a . | |
template<typename T> | |
constexpr auto | floor_div (T a, T b) |
Compute floor(a/b) . | |
template<typename T> requires std::integral<T> | |
constexpr bool | is_power_of_two (T x) |
template<typename T> requires (not std::integral<T>) | |
constexpr T | radians (T degrees) |
Convert degrees to radians. | |
template<typename T> requires (not std::integral<T>) | |
constexpr T | degrees (T radians) |
Convert radians to degrees. | |
template<typename T, bool RowMajor> | |
bool | cholesky (T *m, index_t n) |
Perform a Cholesky decomposition on a bare array. | |
template<typename T, index_t M, index_t N> | |
bool | cholesky (SimpleMatrix< T, M, N > *m) |
Perform a Cholesky decomposition on a Matrix. | |
template<typename T, bool RowMajor = true> | |
index_t | decomp_lup (T *m, index_t rows, index_t cols, index_t *reorder, bool *parity) |
LU decomposition, pivoting columns. | |
template<typename T, bool RowMajor = true> | |
index_t | decomp_plu (T *m, index_t rows, index_t cols, index_t *reorder, bool *parity) |
LU decomposition, pivoting rows. | |
template<typename T, bool RowMajor = true> | |
void | backsolve_plu (const T *plu, const index_t *p, index_t n, index_t m, T *x, const T *b, index_t skip=0) |
Solve the decomposed matrix equation LUX = PB for X , given LU and B . | |
template<typename T, bool RowMajor = true> | |
void | backsolve_lu (const T *lu, index_t n, index_t m, T *x, index_t skip=0) |
Solve a decomposed system of linear equations LUX = B , without a permutation map. | |
template<typename T, bool RowMajor = true> | |
bool | linear_solve (T *a, index_t n, index_t m, T *x, index_t skip=0) |
Solve the matrix equation AX = B for the matrix X , given matrices A and B . | |
template<typename T, index_t N> | |
bool | linear_solve (Vec< T, N > bases[N], index_t m, Vec< T, N > *x, index_t skip=0) |
Write each vector in b in terms of the basis vectors in bases . | |
Variables | |
template<typename T, index_t N, typename Object, typename NodeData> | |
const KDTree< T, N, Object, NodeData >::KDStructureParams | KDTree< T, N, Object, NodeData >::DefaultParameters |
template<typename T, index_t N> | |
constexpr Rect< T, N > | Rect< T, N >::empty |
template<typename T, index_t N> | |
constexpr Rect< T, N >::point_t | Rect< T, N >::endpoint_measure |
template<typename T, index_t N> | |
constexpr Rect< T, N > | Rect< T, N >::full |
template<typename T, index_t N> | |
constexpr Rect< T, N > | Rect< T, N >::signed_unit_interval = Rect<T,N>((T)-1, (T)1) |
template<typename T, index_t N> | |
constexpr Rect< T, N > | Rect< T, N >::unit_interval = Rect<T,N>((T)0, (T)1) |
template<typename T> | |
const Vec< T, 2 > | Vec< T, 2 >::X_AXIS = Vec<T,2>(1,0) |
template<typename T> | |
const Vec< T, 2 > | Vec< T, 2 >::Y_AXIS = Vec<T,2>(0,1) |
template<typename T> | |
const Vec< T, 3 > | Vec< T, 3 >::X_AXIS = Vec<T,3>(1,0,0) |
template<typename T> | |
const Vec< T, 3 > | Vec< T, 3 >::Y_AXIS = Vec<T,3>(0,1,0) |
template<typename T> | |
const Vec< T, 3 > | Vec< T, 3 >::Z_AXIS = Vec<T,3>(0,0,1) |
template<typename T> | |
const Vec< T, 4 > | Vec< T, 4 >::W_AXIS = Vec<T,4>(0,0,0,1) |
template<typename T> | |
const Vec< T, 4 > | Vec< T, 4 >::X_AXIS = Vec<T,4>(1,0,0,0) |
template<typename T> | |
const Vec< T, 4 > | Vec< T, 4 >::Y_AXIS = Vec<T,4>(0,1,0,0) |
template<typename T> | |
const Vec< T, 4 > | Vec< T, 4 >::Z_AXIS = Vec<T,4>(0,0,1,0) |
Namespace of all geomc
functions and classes.
The type of a vector in N dimensions with elements of type T.
VecType<T,N> is a Vec<T,N> in dimension > 1, otherwise a T.
Vec< T, 3 > from_rgb | ( | int | aRGB | ) |
aRGB | A packed 8-bit per channel RGB color value (with alpha or irrelevant data in the eight high order bits). |
(r,g,b)
tuple extracted from aRGB
. void permutation_apply | ( | index_t * | p, |
index_t | n, | ||
RandomAccessIterator | v ) |
Apply a permutation in-place, resetting the permutation to identity in the process.
p | An array of n indecies representing the sources of elements in the permuted sequence; i.e. output[i] = input[p[i]] . p will contain the identity permutation after the function returns. |
n | The number of elements in the permutation. @v A random access iterator containing the sequence to be permuted. |
|
inline |
Compute the sign of a permutation, resetting the permutation to identity in the process.
p | An array of n indecies representing the permutation mapping. p will contain the identity permutation after the function returns. |
n | The number of elements in the permutation. |
Vec< T, 3 > rainbow | ( | double | s | ) |
An (r,g,b)
color tuple representing a hue selected by s
, with 0 being red, progressing in rainbow order through the colors before returning to red at 1. The cycle is extended similarly outside of (0, 1)
.
s | Rainbow parameter between 0 and 1. |
(r,g,b)
color tuple. Vec< T, 3 > triangle_normal | ( | const Vec< T, 3 > | p1, |
const Vec< T, 3 > | p2, | ||
const Vec< T, 3 > | p3 ) |
p1
, p2
, and p3
. const KDTree<T,N,Object,NodeData>::KDStructureParams KDTree< T, N, Object, NodeData >::DefaultParameters |