geomc 1.0
A c++ linear algebra template library
|
4D specialization of vector class. More...
#include <geomc/linalg/vecdetail/Vec4.h>
Public Types | |
typedef Vec< T, 4 > | 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 | |
constexpr | Vec () |
Construct vector with all elements set to 0. | |
constexpr | Vec (T x, T y, T z, T w) |
Construct a vector with elements (x, y, z, w) . | |
constexpr | Vec (const T v[4]) |
Construct a vector with elements copied from the 4-element array v . | |
template<typename U > | |
constexpr | Vec (Vec< U, 3 > xyz, T w) |
Construct a vector with (x, y, z) taken from the 3D vector xyz , and w as the final element. | |
constexpr | Vec (T a) |
Construct a vector with all elements set to a . | |
Vec< T, 4 > | add (T dx, T dy, T dz, T dw) const |
Vec< T, 4 > | sub (T dx, T dy, T dz, T dw) const |
Vec< T, 4 > | scale (T a, T b, T c, T d) const |
T | dot (T xx, T yy, T zz, T ww) const |
const T & | operator[] (index_t idx) const |
Vector element access. More... | |
T & | operator[] (index_t idx) |
Vector element access. More... | |
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 |
Negation. More... | |
self_t & | operator-= (const self_t &vv) |
Subtraction and assignment. | |
self_t & | operator*= (T s) |
Scalar multiplication and assignment. | |
self_t & | operator*= (const self_t &vv) |
Element-wise multiplication and assignment. | |
self_t & | operator/= (T s) |
Scalar division and assignment. | |
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... | |
T | min () const |
Minimum element. More... | |
self_t | max (const self_t &v) const |
Element-wise maximum of two Vec s. 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. | |
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 const Vec< T, 4 > | X_AXIS = Vec<T,4>(1,0,0,0) |
(1, 0, 0, 0) constant | |
static const Vec< T, 4 > | Y_AXIS = Vec<T,4>(0,1,0,0) |
(0, 1, 0, 0) constant | |
static const Vec< T, 4 > | Z_AXIS = Vec<T,4>(0,0,1,0) |
(0, 0, 1, 0) constant | |
static const Vec< T, 4 > | W_AXIS = Vec<T,4>(0,0,0,1) |
(0, 0, 0, 1) constant | |
static constexpr index_t | DIM |
Vector dimension. | |
static const self_t | ones |
static const self_t | zeros |
Protected Attributes | |
T | v [N] |
4D specialization of vector class.
Vec<T,4>
's elements may be accessed under these equivalent naming schemes:
v.{x,y,z,w} // conventional Euclidean coordinate names v.{s,t,u,v} // conventional parameterization coordinate names v.{r,g,b,a} // conventional color tuple coordinate names
with x
, s
, and r
all referring to the same element.
|
inlineinherited |
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 |
(dx, dy, dz, dw)
added with this
|
inlineinherited |
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. |
|
inlineinherited |
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]
.
|
inlineinherited |
Distance between points.
pt | Another point. |
this
and pt
.
|
inlineinherited |
Distance squared to a point.
pt | Another point. |
this
and pt
.
|
inlineinherited |
Dot product.
v | Another vector. |
this
with v
.
|
inline |
this
with the vector (xx, yy, zz, ww)
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Element-wise floor function.
x
such that x[i] = floor(this[i])
.
|
inlineinherited |
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
.
|
inlineinherited |
Euclidean norm (magnitude).
|
inlineinherited |
Squared magnitude.
|
inlineinherited |
Maximum element.
Element-wise maximum of two Vec
s.
v | Another vector. |
x
such that x[i] = max(this[i], v[i])
.
|
inlineinherited |
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
.
|
inlineexplicitinherited |
Element typecast.
U
.
|
inlineinherited |
Inequality test.
true
if any corresponding elements of this
and vv
are unequal, false
otherwise.
|
inlineinherited |
Negation.
|
inlineinherited |
Equality test.
true
if all corresponding elements of this
and vv
are equal, false
otherwise.
|
inlineinherited |
Vector element access.
idx | Index of element to retrieve. |
idx
.
|
inlineinherited |
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. |
|
inlineinherited |
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]
.
|
inlineinherited |
Scalar multiple.
a | A constant scale factor. |
x
such that x[i] = this[i] * a
.
|
inline |
Vector subtraction.
v | Another vector. |
x
such that x[i] = this[i] - v[i]
.
|
inline |
(dx, dy, dz, dw)
subtracted from this
|
inlineinherited |
Vector normalization.
|
inlineinherited |
Compute a vector with the direction of this
and a new magnitude mag
.
If this
is the zero vector, it will remain unchanged.