#include <CTB3vec.hxx>
Collaboration diagram for CTB3vec:
Public Methods | |
CTB3vec () | |
CTB3vec (T rhs) | |
CTB3vec (T x, T y, T z) | |
CTB3vec (const CTB3vec< T > &rhs) | |
T & | X () |
const T & | X () const |
T & | Y () |
const T & | Y () const |
T & | Z () |
const T & | Z () const |
void | X (T x) |
void | Y (T y) |
void | Z (T z) |
T | Length () const |
T | Dot (const CTB3vec< T > &rhs) const |
CTB3vec< T > | Cross (const CTB3vec< T > &rhs) const |
CTB3vec< T > | Project (const CTB3vec< T > &x, const CTB3vec< T > &y, const CTB3vec< T > &z) const |
CTB3vec< T > | UnProject (const CTB3vec< T > &x, const CTB3vec< T > &y, const CTB3vec< T > &z) const |
T & | operator[] (CTBint i_ind) |
const T & | operator[] (CTBint i_ind) const |
operator T * () | |
operator const T * () const | |
CTB3vec< T > | operator- () const |
CTB3vec< T > & | operator+= (const CTB3vec< T > &rhs) |
CTB3vec< T > & | operator-= (const CTB3vec< T > &rhs) |
CTB3vec< T > & | operator *= (T rhs) |
CTB3vec< T > & | operator/= (T rhs) |
CTB3vec< T > & | operator= (T rhs) |
CTB3vec< T > & | operator= (const CTB3vec< T > &rhs) |
Protected Attributes | |
T | m_data [3] |
Related Functions | |
(Note that these are not member functions.) | |
CTB3vec< T > | operator+ (const CTB3vec< T > &lhs, const CTB3vec< T > &rhs) |
CTB3vec< T > | operator+ (const CTB3vec< T > &lhs, T f_rhs) |
CTB3vec< T > | operator+ (T f_lhs, const CTB3vec< T > &rhs) |
CTB3vec< T > | operator- (const CTB3vec< T > &lhs, const CTB3vec< T > &rhs) |
CTB3vec< T > | operator- (const CTB3vec< T > &lhs, T f_rhs) |
CTB3vec< T > | operator- (T f_lhs, const CTB3vec< T > &rhs) |
T | operator * (const CTB3vec< T > &lhs, const CTB3vec< T > &rhs) |
CTB3vec< T > | operator * (const CTB3vec< T > &lhs, T f_rhs) |
CTB3vec< T > | operator * (T f_lhs, const CTB3vec< T > &rhs) |
CTB3vec< T > | operator/ (const CTB3vec< T > &lhs, T f_rhs) |
bool | operator== (const CTB3vec< T > &lhs, const CTB3vec< T > &rhs) |
bool | operator== (const CTB3vec< T > &lhs, T f_rhs) |
bool | operator== (T f_lhs, const CTB3vec< T > &rhs) |
ostream & | operator<< (ostream &os, const CTB3vec< T > &obj) |
T | CTBabs (const CTB3vec< T > &vec) |
The template class CTB3vec
represents a 3 component vector of type T
. It is mainly intended for usage in 3d geometry, the components are thus called X
, Y
and Z
.
The 3 components can be accessed (both read and write) either through the index operator\c operator[]() or via the X()
, Y()
, Z()
methods, so v[0]
and v.X()
is equivalent.
Note, that this class is intended to be used with arithmetic data types, like float
or double
. It is expected that the arithmetic operators are defined and that an object of type T
can be initialized and assigned with a 0.
All basic vector algebra operations for 3-vectors are defined, especially
v = v1 + v2
and v += v1
v = v1 - v2
and v -= v1
s = v1 * v2
v = v1.Cross(v2)
v = s * v1
and v *= s
v = v1 / s
and v /= s
If scalars and vectors are mixed the scalar must have exactly the same data type, there is no type promotion or conversion of the scalar. This requires often an explicit cast or type suffix.
double
, there is no performance penalty for passing arguments by value, but due to potentially better optimization, even a performance advantage.
Definition at line 17 of file CTB3vec.hxx.
|
Construct and set all components to 0.
Definition at line 74 of file CTB3vec.icc. |
|
Construct with scalar init, set all components to rhs.
Definition at line 85 of file CTB3vec.icc. |
|
Construct from 3 values.
Definition at line 94 of file CTB3vec.icc. |
|
Copy constructor.
Definition at line 105 of file CTB3vec.icc. |
|
Access [0] or x component.
Definition at line 114 of file CTB3vec.icc. Referenced by Cross().
|
|
Constant access [0] or x component.
Definition at line 123 of file CTB3vec.icc. |
|
Access [1] or y component.
Definition at line 132 of file CTB3vec.icc. Referenced by Cross().
|
|
Constant access [1] or y component.
Definition at line 141 of file CTB3vec.icc. |
|
Access [2] or z component.
Definition at line 150 of file CTB3vec.icc. Referenced by Cross().
|
|
Constant access [2] or z component.
Definition at line 159 of file CTB3vec.icc. |
|
Set [0] or x component.
Definition at line 168 of file CTB3vec.icc. |
|
Set [1] or y component.
Definition at line 178 of file CTB3vec.icc. |
|
Set [2] or z component.
Definition at line 188 of file CTB3vec.icc. |
|
Returns length of vector.
Definition at line 198 of file CTB3vec.icc. Referenced by CTBabs().
|
|
Returns scalar (aka inner or dot) product with rhs.
Definition at line 207 of file CTB3vec.icc. Referenced by Project().
|
|
Returns vector (aka cross) product with rhs.
Definition at line 218 of file CTB3vec.icc. |
|
Returns projection of vector onto vectors x, y and z.
Definition at line 229 of file CTB3vec.icc. |
|
Returns vector with components [0] * x, [1] * y and [2] * z.
Definition at line 240 of file CTB3vec.icc. |
|
Access element.
Definition at line 253 of file CTB3vec.icc. |
|
Constant access element.
Definition at line 262 of file CTB3vec.icc. |
|
Convert to pointer.
Definition at line 271 of file CTB3vec.icc. |
|
Constant convert to pointer.
Definition at line 280 of file CTB3vec.icc. |
|
Returns negative of vector.
Definition at line 289 of file CTB3vec.icc. |
|
Add vector rhs.
Definition at line 298 of file CTB3vec.icc. |
|
Subtract vector rhs.
Definition at line 310 of file CTB3vec.icc. |
|
Multiply each component by the scalar value rhs.
Definition at line 322 of file CTB3vec.icc. |
|
Divide each component by the scalar value rhs.
Definition at line 334 of file CTB3vec.icc. |
|
Set all components to the scalar value rhs.
Definition at line 347 of file CTB3vec.icc. Referenced by CTB3vec().
|
|
Copy values of vector rhs.
Definition at line 359 of file CTB3vec.icc. |
|
Returns sum of two vectors lhs and rhs .
Definition at line 374 of file CTB3vec.icc. |
|
Returns sum of vectors lhs and scalar f_rhs .
Definition at line 386 of file CTB3vec.icc. |
|
Returns sum of scaler f_lhs and vector rhs .
Definition at line 398 of file CTB3vec.icc. |
|
Returns difference of two vectors lhs and rhs .
Definition at line 410 of file CTB3vec.icc. |
|
Returns difference of vectors lhs and scalar f_rhs .
Definition at line 422 of file CTB3vec.icc. |
|
Returns difference of scaler f_lhs and vector rhs .
Definition at line 434 of file CTB3vec.icc. |
|
Returns scalar (aka inner) product of two vectors lhs and rhs .
Definition at line 446 of file CTB3vec.icc. |
|
Returns vector lhs and multiplyied by scalar f_rhs .
Definition at line 458 of file CTB3vec.icc. |
|
Returns vector rhs and multiplyied by scalar f_lhs .
Definition at line 470 of file CTB3vec.icc. |
|
Returns vector lhs and divided by scalar f_rhs .
Definition at line 482 of file CTB3vec.icc. |
|
Returns
Definition at line 494 of file CTB3vec.icc. |
|
Definition at line 506 of file CTB3vec.icc. |
|
Definition at line 518 of file CTB3vec.icc. |
|
ostream insertion.
Definition at line 530 of file CTB3vec.icc. |
|
Returns length of vector vec .
Definition at line 547 of file CTB3vec.icc. |
|
data vector.
Definition at line 67 of file CTB3vec.hxx. |