scsl 1.0.1
Shimmering Clarity Standard Library
|
Vectors represent a direction and Magnitude. More...
#include <Vector.h>
Public Member Functions | |
Vector () | |
Construct a unit vector of a given type and size. | |
Vector (std::initializer_list< T > ilst) | |
Construct a Vector with initial values. | |
T | At (size_t index) const |
Return the element At index i. | |
void | Set (size_t index, T value) |
Set a new value for the vector. | |
T | Magnitude () const |
Compute the length of the vector. | |
void | SetEpsilon (T eps) |
Set equivalence tolerance. | |
bool | IsZero () const |
Determine whether this is a zero vector. | |
Vector | UnitVector () const |
Obtain the unit vector for this vector. | |
bool | IsUnitVector () const |
Determine if this is a unit vector. | |
T | Angle (const Vector< T, N > &other) const |
Compute the Angle between two vectors. | |
bool | IsParallel (const Vector< T, N > &other) const |
Determine whether two vectors are parallel. | |
bool | IsOrthogonal (const Vector< T, N > &other) const |
Determine if two vectors are orthogonal or perpendicular to each other. | |
Vector | ProjectParallel (const Vector< T, N > &basis) const |
Project this vector onto some basis vector. | |
Vector | ProjectOrthogonal (const Vector< T, N > &basis) |
Project this vector perpendicularly onto some basis vector. | |
Vector | Cross (const Vector< T, N > &other) const |
Compute the cross product of two vectors. | |
Vector | operator+ (const Vector< T, N > &other) const |
Vector addition. | |
Vector | operator- (const Vector< T, N > &other) const |
Vector subtraction. | |
Vector | operator* (const T k) const |
Scalar multiplication. | |
Vector | operator/ (const T k) const |
Scalar division. | |
T | operator* (const Vector< T, N > &other) const |
Compute the Dot product between two vectors. | |
bool | operator== (const Vector< T, N > &other) const |
Vector equivalence. | |
bool | operator!= (const Vector< T, N > &other) const |
Vector non-equivalence. | |
const T & | operator[] (size_t i) const |
Array indexing into vector. | |
Friends | |
std::ostream & | operator<< (std::ostream &outs, const Vector< T, N > &vec) |
Write a vector a stream in the form "<i, j, ...>". | |
Vectors represent a direction and Magnitude.
Vector provides a standard interface for dimensionless fixed-size vectors. Once instantiated, they cannot be modified.
Note that while the class is templated, it's intended to be used with floating-point types.
Vectors can be indexed like arrays, and they contain an epsilon value that defines a tolerance for equality.
Construct a unit vector of a given type and size.
|
inline |
Construct a Vector with initial values.
If given an initializer_list, the vector is created with those values. There must be exactly N elements in the list.
ilst | An intializer list with N elements of type T. |
Compute the Angle between two vectors.
other | Another vector. |
Return the element At index i.
std::out_of_range | if the index is out of bounds. |
index | The index of the item to retrieve. |
Compute the cross product of two vectors.
This is only defined over three-dimensional vectors.
std::out_of_range | if this is not a three-dimensional vector. |
other | Another 3D vector. |
Determine if two vectors are orthogonal or perpendicular to each other.
other | Another vector |
Determine whether two vectors are parallel.
other | Another vector |
Determine if this is a unit vector.
Determine whether this is a zero vector.
Compute the length of the vector.
|
inline |
Vector non-equivalence.
other | The other vector. |
|
inline |
Scalar multiplication.
k | The scaling value. |
|
inline |
Compute the Dot product between two vectors.
other | The other vector. |
|
inline |
Vector addition.
other | The vector to be added. |
|
inline |
Vector subtraction.
other | The vector to be subtracted from this vector. |
|
inline |
Scalar division.
k | The scaling value |
|
inline |
Vector equivalence.
other | The other vector. |
|
inline |
Array indexing into vector.
Note that the values of the vector cannot be modified. Instead, something like the following must be done:
i | The component index. |
Project this vector perpendicularly onto some basis vector.
This is also called the rejection of the vector.
basis | The basis vector to be projected onto. |
Project this vector onto some basis vector.
basis | The basis vector to be projected onto. |
Set a new value for the vector.
This is used to modify the vector in place.
std::out_of_range | if the index is out of bounds. |
index | The index to insert the value At. |
value |
Set equivalence tolerance.
Set the tolerance for equality checks. At a minimum, this accounts for systemic errors in floating math arithmetic.
eps | is the maximum difference between this vector and another. |
Obtain the unit vector for this vector.
Write a vector a stream in the form "<i, j, ...>".
outs | An output stream. |
vec | The vector to be formatted. |