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