|
Graphite Version 3
An experimental 3D geometry processing program
|
Generic maths vector. More...
#include <geogram/basic/vecg.h>
Public Types | |
| typedef vecng< DIM, T > | vector_type |
| This vector type. | |
| typedef T | value_type |
| The type of the vector coordinates. | |
Public Member Functions | |
| vecng () | |
| Default vector constructor. | |
| template<class T2 > | |
| vecng (const vecng< DIM, T2 > &v) | |
| Constructs a vector by copy. | |
| template<class T2 , index_t DIM2> | |
| vecng (const vecng< DIM2, T2 > &v) | |
| template<class T2 > | |
| vecng (const T2 *v) | |
| Constructs a vector from an array. | |
| vecng (const std::initializer_list< T > &Vi) | |
| Constructs a vector from an initializer list. | |
| index_t | dimension () const |
| Gets the vector dimension. | |
| T * | data () |
| Gets modifiable vector data. | |
| const T * | data () const |
| Gets non-modifiable vector data. | |
| T & | operator[] (index_t i) |
| Gets a modifiable vector coordinate. | |
| const T & | operator[] (index_t i) const |
| Gets a non-modifiable vector coordinate. | |
| T | length2 () const |
| Gets the squared length of the vector. | |
| T | length () const |
| Gets the length of the vector. | |
| T | distance2 (const vector_type &v) const |
| Gets the squared distance to a vector. | |
| T | distance (const vector_type &v) const |
| Gets the distance to a vector. | |
| vector_type & | operator+= (const vector_type &v) |
| Adds a vector in place. | |
| vector_type & | operator-= (const vector_type &v) |
| Subtracts a vector in place. | |
| template<class T2 > | |
| vector_type & | operator*= (T2 s) |
| Multiplies by a scalar in place. | |
| template<class T2 > | |
| vector_type & | operator/= (T2 s) |
| Divides by a scalar in place. | |
| vector_type | operator+ (const vector_type &v) const |
| Adds 2 vectors. | |
| vector_type | operator- (const vector_type &v) const |
| Subtracts 2 vectors. | |
| template<class T2 > | |
| vector_type | operator* (T2 s) const |
| Multiplies a vector by a scalar. | |
| template<class T2 > | |
| vector_type | operator/ (T2 s) const |
| Divides a vector by a scalar. | |
| vector_type | operator- () const |
| Negates a vector. | |
Static Public Attributes | |
| static constexpr index_t | dim = DIM |
| The dimension of the vector. | |
Related Symbols | |
(Note that these are not member symbols.) | |
| template<index_t DIM, class T > | |
| T | dot (const vecng< DIM, T > &v1, const vecng< DIM, T > &v2) |
| Computes the dot product of 2 vectors. | |
| template<class T2 , index_t DIM, class T > | |
| vecng< DIM, T > | operator* (T2 s, const vecng< DIM, T > &v) |
| Multiplies a scalar by a vector. | |
| template<index_t DIM, class T > | |
| T | length (const vecng< DIM, T > &v) |
| Gets the norm of a vector. | |
| template<index_t DIM, class T > | |
| T | length2 (const vecng< DIM, T > &v) |
| Gets the square norm of a vector. | |
| template<index_t DIM, class T > | |
| T | distance2 (const vecng< DIM, T > &v1, const vecng< DIM, T > &v2) |
| Gets the square distance between 2 vectors. | |
| template<index_t DIM, class T > | |
| T | distance (const vecng< DIM, T > &v1, const vecng< DIM, T > &v2) |
| Gets the distance between 2 vectors. | |
| template<index_t DIM, class T > | |
| vecng< DIM, T > | normalize (const vecng< DIM, T > &v) |
| Normalizes a vector. | |
| template<index_t DIM, class T > | |
| vecng< DIM, T > | mix (const vecng< DIM, T > &v1, const vecng< DIM, T > &v2, T s) |
| Computes a weighted barycenter. | |
| template<class T > | |
| T | dot (const vecng< 2, T > &v1, const vecng< 2, T > &v2) |
| Computes the dot product of 2 vectors. | |
| template<class T > | |
| T | det (const vecng< 2, T > &v1, const vecng< 2, T > &v2) |
| Computes the determinant of 2 vectors. | |
| template<class T2 , class T > | |
| vecng< 2, T > | operator* (T2 s, const vecng< 2, T > &v) |
| Multiplies a scalar by a vector. | |
| template<class T > | |
| vecng< 3, T > | cross (const vecng< 3, T > &v1, const vecng< 3, T > &v2) |
| Computes the cross product of 2 vectors. | |
| template<class T2 , class T > | |
| vecng< 3, T > | operator* (T2 s, const vecng< 3, T > &v) |
| Multiplies a scalar by a vector. | |
| template<class T > | |
| T | dot (const vecng< 4, T > &v1, const vecng< 4, T > &v2) |
| Computes the dot product of 2 vectors. | |
| template<class T2 , class T > | |
| vecng< 4, T > | operator* (T2 s, const vecng< 4, T > &v) |
| Multiplies a scalar by a vector. | |
| template<index_t DIM, class T > | |
| std::ostream & | operator<< (std::ostream &out, const GEO::vecng< DIM, T > &v) |
| Writes a vector to a stream. | |
| template<index_t DIM, class T > | |
| std::istream & | operator>> (std::istream &in, GEO::vecng< DIM, T > &v) |
| Reads a vector from a stream. | |
Generic maths vector.
Vecng implements a maths vector of dimension DIM containing coordinates of type T and provides operations for manipulating it. Type T is expected to be a numeric type.
| DIM | dimension of the vector |
| T | type of the vector coordinates. |
| typedef T GEO::vecng< DIM, T >::value_type |
| typedef vecng<DIM, T> GEO::vecng< DIM, T >::vector_type |
|
inline |
|
inlineexplicit |
Constructs a vector by copy.
This copies coordinates of vector v to this vector. The type T2 of the coordinates in v must be convertible to the type T of this vector.
| [in] | v | an vector of same dimension with coordinates of type T2 |
| T2 | the type of coordinates in vector v |
|
inlineexplicit |
|
inlineexplicit |
Constructs a vector from an array.
This copies coordinates the first DIM coordinates of array v to this vector. The type T2 of the coordinates in v must be convertible to the type T of this vector.
| [in] | v | an array of values of type T2 |
| T2 | the type of coordinates in vector v |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Multiplies a vector by a scalar.
Builds a vector by multipying this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| T2 | the type of value s |
this * s)
|
inline |
Multiplies by a scalar in place.
Multiplies this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| T2 | the type of value s |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Divides a vector by a scalar.
Builds a vector by dividing this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| T2 | the type of value s |
this / s)
|
inline |
Divides by a scalar in place.
Divides this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| T2 | the type of value s |
|
inline |
|
inline |
|
related |
Gets the distance between 2 vectors.
| [in] | v1 | the first vector |
| [in] | v2 | the second vector |
v1 and v2.
|
related |
Gets the square distance between 2 vectors.
| [in] | v1 | the first vector |
| [in] | v2 | the second vector |
v1 and v2. Gets the norm of a vector.
| [in] | v | a vector |
v Gets the square norm of a vector.
| [in] | v | a vector |
v Multiplies a scalar by a vector.
Builds a vector by multipying this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| [in] | v | the vector to multiply |
| T2 | the type of value s |
s * v) Multiplies a scalar by a vector.
Builds a vector by multipying this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| [in] | v | the vector to multiply |
| T2 | the type of value s |
s * v) Multiplies a scalar by a vector.
Builds a vector by multipying this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| [in] | v | the vector to multiply |
| T2 | the type of value s |
s * v)
|
related |
Multiplies a scalar by a vector.
Builds a vector by multipying this vector coordinates by value s. The type T2 of s must be convertible to the type T of this vector coordinates.
| [in] | s | a value of type T2 |
| [in] | v | the vector to multiply |
| T2 | the type of value s |
s * v)
|
related |
|
related |
Reads a vector from a stream.
This reads DIM coordinates from the input stream in and stores them in vector v. Understands both "x y z" and "[x, y, z]" formats.
| [in] | in | the input stream |
| [out] | v | the vector to read |
in
|
staticconstexpr |