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 | |
typedef VType | self_t |
Self type. I.e., Vec<T,N> if a vector, Quat<T> if a quaternion. | |
typedef T | elem_t |
Element type. | |
Public Member Functions | |
const T & | operator[] (index_t idx) const |
Vector element access. More... | |
T & | operator[] (index_t idx) |
Vector element access. More... | |
template<typename U > | |
operator Vec< U, N > () const | |
Element typecast. More... | |
bool | operator== (const self_t &vv) const |
Equality test. More... | |
bool | operator!= (const self_t &vv) const |
Inequality test. More... | |
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 self_t &v) const |
Element-wise subtraction. | |
self_t & | operator-= (const self_t &vv) |
Subtraction and assignment. | |
self_t & | operator*= (T s) |
Scalar multiplication and assignment. | |
self_t & | operator/= (T s) |
Scalar division and assignment. | |
self_t & | operator*= (const self_t &vv) |
Element-wise multiplication and assignment. | |
self_t | operator- () const |
Negation. More... | |
self_t | add (const self_t &v) const |
Vector addition. More... | |
self_t | sub (const self_t &v) const |
Vector subtraction. More... | |
self_t | scale (const self_t &v) const |
Element-wise multiplication. More... | |
self_t | scale (T a) const |
Scalar multiple. More... | |
self_t | unit () const |
Vector normalization. More... | |
T | dot (const self_t &v) const |
Dot product. More... | |
T | mag () const |
Euclidean norm (magnitude). More... | |
T | mag2 () const |
Squared magnitude. More... | |
T | dist (const self_t &pt) const |
Distance between points. More... | |
T | dist2 (const self_t &pt) const |
Distance squared to a point. More... | |
self_t | reflect_about (self_t normal) const |
Reflection about a normal. More... | |
self_t | bounce_on (const self_t &normal) const |
Elastic collision. More... | |
self_t | project_on (const self_t &axis) const |
Orthogonal projection to an axis. More... | |
T | fraction_on (const self_t &axis) const |
Return the component of this that projects to axis , as a fraction of axis's length. More... | |
self_t | with_length (T mag) const |
Compute a vector with the direction of this and a new magnitude mag . More... | |
self_t | mix (const self_t &v, T mix) const |
Linear interpolation. More... | |
T | angle_to (const self_t &v) const |
Angle between vectors. More... | |
self_t | abs () const |
Element-wise absolute value. More... | |
self_t | floor () const |
Element-wise floor function. More... | |
self_t | ceil () const |
Element-wise ceiling function. More... | |
self_t | min (const self_t &v) const |
Element-wise minimum of two Vec s. More... | |
self_t | max (const self_t &v) const |
Element-wise maximum of two Vec s. More... | |
T | min () const |
Minimum element. More... | |
T | max () const |
Maximum element. More... | |
self_t | clamp (const self_t &lo, const self_t &hi) const |
Element-wise clamp. More... | |
self_t | round () const |
Round each element to the nearest integer. | |
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. | |
template<index_t M> | |
PointType< T, M >::point_t | resized () const |
Resized copy of a vector. More... | |
bool | is_zero () const |
Return true if all elements are zero. | |
index_t | size () const |
The number of elements in this vector. Always equal to N . | |
const T & | get (index_t idx) const |
T & | get (index_t idx) |
const T * | begin () const |
T * | begin () |
const T * | end () const |
T * | end () |
Static Public Attributes | |
static constexpr index_t | DIM = N |
Vector dimension. | |
static const self_t | ones = VType((T)1) |
static const self_t | zeros = VType((T)0) |
Protected Member Functions | |
constexpr | VecCommon (T a) |
constexpr | VecCommon (const T a[N]) |
Protected Attributes | |
T | v [N] |
Common base for all Vec-derived classes. Do not instantiate directly.
|
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 |
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])
. 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 Vec
s.
v | Another vector. |
x
such that x[i] = max(this[i], v[i])
.
|
inline |
Minimum element.
Element-wise minimum of two Vec
s.
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
. 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.