|
geomc 1.0
A c++ linear algebra template library
|
Common base for all Vec-derived classes. Do not instantiate directly. More...
#include <geomc/linalg/vecdetail/VecBase.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 VType | self_t |
Self type. I.e., Vec<T,N> if a vector, Quat<T> if a quaternion. | |
Public Member Functions | |
| self_t | abs () const |
| Element-wise absolute value. | |
| self_t | add (const self_t &v) const |
| Vector addition. | |
| self_t | align (const self_t &from, const self_t &to) const |
Apply a rotation to this which aligns the unit vectors from with to. | |
| T | angle_to (const self_t &v) const |
| Angle between vectors. | |
| index_t | argmax () const |
| Return the index of the coordinate with the largest absolute value. | |
| index_t | argmin () const |
| Return the index of the coordinate with the smallest absolute value. | |
| T * | begin () |
| const T * | begin () const |
| self_t | bounce_on (const self_t &normal) const |
| Elastic collision. | |
| self_t | ceil () const |
| Element-wise ceiling function. | |
| self_t | clamp (const self_t &lo, const self_t &hi) const |
| Element-wise clamp. | |
| T | dist (const self_t &pt) const |
| Distance between points. | |
| T | dist2 (const self_t &pt) const |
| Distance squared to a point. | |
| T | dot (const self_t &v) const |
| Dot product. | |
| T * | end () |
| const T * | end () const |
| self_t | floor () const |
| Element-wise floor function. | |
| T | fraction_on (const self_t &axis) const |
Return the component of this that projects to axis, as a fraction of axis's length. | |
| T & | get (index_t idx) |
| const T & | get (index_t idx) const |
| bool | is_zero () const |
Return true if all elements are zero. | |
| T | mag () const |
| Euclidean norm (magnitude). | |
| T | mag2 () const |
| Squared magnitude. | |
| T | max () const |
| Maximum element. | |
| self_t | max (const self_t &v) const |
Element-wise maximum of two Vecs. | |
| T | min () const |
| Minimum element. | |
| self_t | min (const self_t &v) const |
Element-wise minimum of two Vecs. | |
| self_t | mix (const self_t &v, T mix) const |
| Linear interpolation. | |
| template<typename U> | |
| operator Vec< U, N > () const | |
| Element typecast. | |
| bool | operator!= (const self_t &vv) const |
| Inequality test. | |
| self_t & | operator*= (const self_t &vv) |
| Element-wise multiplication and assignment. | |
| self_t & | operator*= (T s) |
| Scalar multiplication and assignment. | |
| self_t | operator+ (const self_t &v) const |
| Element-wise addition. | |
| self_t & | operator+= (const self_t &vv) |
| Element-wise addition and assignment. | |
| self_t | operator- () const |
| Negation. | |
| self_t | operator- (const self_t &v) const |
| Element-wise subtraction. | |
| self_t & | operator-= (const self_t &vv) |
| Subtraction and assignment. | |
| self_t & | operator/= (T s) |
| Scalar division and assignment. | |
| bool | operator== (const self_t &vv) const |
| Equality test. | |
| T & | operator[] (index_t idx) |
| Vector element access. | |
| const T & | operator[] (index_t idx) const |
| Vector element access. | |
| T | product () const |
| Multiply all elements together. | |
| self_t | project_on (const self_t &axis) const |
| Orthogonal projection to an axis. | |
| self_t | reflect_about (self_t normal) const |
| Reflection about a normal. | |
| template<index_t M> | |
| PointType< T, M >::point_t | resized () const |
| Resized copy of a vector. | |
| self_t | round () const |
| Round each element to the nearest integer. | |
| self_t | scale (const self_t &v) const |
| Element-wise multiplication. | |
| self_t | scale (T a) const |
| Scalar multiple. | |
| index_t | size () const |
The number of elements in this vector. Always equal to N. | |
| self_t | sub (const self_t &v) const |
| Vector subtraction. | |
| T | sum () const |
| Sum the elements of the vector. | |
| self_t | unit () const |
| Vector normalization. | |
| self_t | with_length (T mag) const |
Compute a vector with the direction of this and a new magnitude mag. | |
Static Public Attributes | |
| static constexpr index_t | N |
| The dimension of this object. | |
| static const self_t | ones |
| static const self_t | unit_x |
| static const self_t | zeros |
Protected Member Functions | |
| constexpr | VecCommon (const T a[N]) |
| constexpr | VecCommon (std::initializer_list< T > l) |
| constexpr | VecCommon (T a) |
Protected Attributes | |
| T | v [N] |
Common base for all Vec-derived classes. Do not instantiate directly.
|
inherited |
The type of a point in this object's space.
An N-vector of T if N > 1, otherwise a T.
|
inline |
Element-wise absolute value.
x such that x[i] = abs(this[i]). Vector addition.
| v | Another vector. |
x such that x[i] = this[i] + v[i].
|
inline |
Angle between vectors.
| v | Another vector. |
this and v, between 0 and pi.
|
inlineinherited |
|
inlineinherited |
|
inline |
Elastic collision.
Treat this as a velocity vector or incident ray; this function returns the velocity reflected off of a surface with normal normal. Convenience for -reflect_about(normal).
| normal | Normal of surface to "bounce" on. |
|
inline |
Element-wise ceiling function.
x such that x[i] = ceil(this[i]).
|
inline |
Element-wise clamp.
| lo | Element-wise lower extremes. |
| hi | Element-wise upper extremes. |
x[i] is clamped between lo[i] and hi[i].
|
inline |
Distance between points.
| pt | Another point. |
this and pt.
|
inline |
Distance squared to a point.
| pt | Another point. |
this and pt.
|
inline |
Dot product.
| v | Another vector. |
this with v.
|
inlineinherited |
|
inlineinherited |
|
inline |
Element-wise floor function.
x such that x[i] = floor(this[i]).
|
inline |
Return the component of this that projects to axis, as a fraction of axis's length.
| axis | An arbitrary basis vector. |
|
inlineinherited |
Get the element at index idx.
| idx | Index of element. |
idx.
|
inlineinherited |
Get the element at index idx.
| idx | Index of element. |
idx.
|
inline |
Euclidean norm (magnitude).
|
inline |
Squared magnitude.
|
inline |
Maximum element.
Element-wise maximum of two Vecs.
| v | Another vector. |
x such that x[i] = max(this[i], v[i]).
|
inline |
Minimum element.
Element-wise minimum of two Vecs.
| v | Another vector. |
x such that x[i] = min(this[i], v[i]). Linear interpolation.
A mix parameter of 0 evaluates to this, while 1 is v.
| v | Another vector. |
| mix | A mixing factor between 0 and 1. |
this with v.
|
inlineexplicit |
Element typecast.
U.
|
inline |
Inequality test.
true if any corresponding elements of this and vv are unequal, false otherwise.
|
inline |
Negation.
|
inline |
Equality test.
true if all corresponding elements of this and vv are equal, false otherwise.
|
inline |
Vector element access.
| idx | Index of element to retrieve. |
idx.
|
inline |
Vector element access.
| idx | Index of element to retrieve. |
idx.
|
inline |
Orthogonal projection to an axis.
| axis | A direction vector. |
axis with magnitude equal to the component of this aligned with axis. Reflection about a normal.
| normal | Axis of reflection. |
|
inline |
Resized copy of a vector.
| M | Dimension of new vector. |
M. If M is larger than N, the new elements will be set to zero. If M is 1, then the return type is T. Element-wise multiplication.
| v | Another vector. |
x such that x[i] = this[i] * v[i].
|
inline |
Scalar multiple.
| a | A constant scale factor. |
x such that x[i] = this[i] * a. Vector subtraction.
| v | Another vector. |
x such that x[i] = this[i] - v[i].
|
inline |
Vector normalization.
|
inline |
Compute a vector with the direction of this and a new magnitude mag.
If this is the zero vector, it will remain unchanged.