|
Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
|
4x4 matrix More...
#include <matrix.hpp>
Public Types | |
| enum | Format { RowMajorFormat, ColumnMajorFormat } |
| Matrix format enum. More... | |
Public Member Functions | |
| matrix () | |
| Construct a Identity matrix. | |
| matrix (const matrix &) | |
| Copy constructor. | |
| matrix (double *data, Format format=RowMajorFormat) | |
| Make a new matrix from data. More... | |
| matrix (double m11, double m12, double m13, double m14, double m21, double m22, double m23, double m24, double m31, double m32, double m33, double m34, double m41, double m42, double m43, double m44) | |
| Make a new matrix from its values. More... | |
| void | set (double m11, double m12, double m13, double m14, double m21, double m22, double m23, double m24, double m31, double m32, double m33, double m34, double m41, double m42, double m43, double m44) |
| Set matrix values. More... | |
| void | optimize () |
| Optimize the matrix. More... | |
| void | setToIdentity () |
| set matrix to identity. | |
| bool | isIdentity () const |
| double | determinant () const |
| Compute matrix determinant. | |
| void | invert (bool *invertible=0) |
| Invert the matrix. More... | |
| void | transpose () |
| Transpose the matrix. | |
| void | translate (const vector &) |
| Translate the matrix. | |
| void | translate (double x, double y, double z) |
| Translate the matrix. More... | |
| void | scale (const vector &) |
| Scale operation. | |
| void | scale (double x, double y, double z) |
| Scale operation. | |
| void | scale (double factor) |
| Scale operation. | |
| void | rotate (double angle, const vector &) |
| Rotate the matrix. | |
| void | rotate (double angle, double x, double y, double z=0.0f) |
| Rotate the matrix. | |
| matrix | inverted (bool *invertible=0) const |
| matrix | transposed () const |
| matrix | translated (const vector &) const |
| matrix | translated (double x, double y, double z) const |
| matrix | scaled (const vector &) const |
| matrix | scaled (double x, double y, double z) const |
| matrix | scaled (double factor) const |
| matrix | rotated (double angle, const vector &) const |
| matrix | rotated (double angle, double x, double y, double z) const |
| void | lookAt (const vector &eye, const vector ¢er, const vector &up) |
| vector | position () const |
| vector | rotation () const |
| vector | scale () const |
| double | at (int row, int column) const |
| vector | map (const vector &) const |
| const double & | operator() (int row, int column) const |
| double & | operator() (int row, int column) |
| matrix & | operator+= (const matrix &) |
| matrix & | operator-= (const matrix &) |
| matrix & | operator*= (const matrix &) |
| matrix & | operator*= (double) |
| bool | operator== (const matrix &) const |
| bool | operator!= (const matrix &) const |
| const double * | data () const |
Friends | |
| matrix | operator+ (const matrix &m1, const matrix &m2) |
| matrix | operator- (const matrix &m1, const matrix &m2) |
| matrix | operator* (const matrix &m1, const matrix &m2) |
| vector | operator* (const matrix &m, const vector &v) |
| vector | operator* (const vector &v, const matrix &m) |
| matrix | operator- (const matrix &m) |
| matrix | operator* (double, const matrix &m) |
| matrix | operator* (const matrix &m, double) |
4x4 matrix
This class describes a 3D vector, providing basic operations (addition, product, etc.) by overloading common operators.
It also allows you to apply some basic spaces transformations sush as translations, rotations, scales, etc...
| enum rt::matrix::Format |
| rt::matrix::matrix | ( | double * | data, |
| Format | format = RowMajorFormat |
||
| ) |
Make a new matrix from data.
| data | A double array containing all 16 values organized according to #format. |
| format | Data format. |
| rt::matrix::matrix | ( | double | m11, |
| double | m12, | ||
| double | m13, | ||
| double | m14, | ||
| double | m21, | ||
| double | m22, | ||
| double | m23, | ||
| double | m24, | ||
| double | m31, | ||
| double | m32, | ||
| double | m33, | ||
| double | m34, | ||
| double | m41, | ||
| double | m42, | ||
| double | m43, | ||
| double | m44 | ||
| ) |
Make a new matrix from its values.
The values must be given in column-majorr format.
| void rt::matrix::invert | ( | bool * | invertible = 0 | ) |
Invert the matrix.
If the matrix is non invertible, the #invertible value will be set to false (if #invertible is not null).
| bool rt::matrix::isIdentity | ( | ) | const |
| void rt::matrix::optimize | ( | ) |
Optimize the matrix.
Detect translation/rotation/etc... matrix.
| void rt::matrix::set | ( | double | m11, |
| double | m12, | ||
| double | m13, | ||
| double | m14, | ||
| double | m21, | ||
| double | m22, | ||
| double | m23, | ||
| double | m24, | ||
| double | m31, | ||
| double | m32, | ||
| double | m33, | ||
| double | m34, | ||
| double | m41, | ||
| double | m42, | ||
| double | m43, | ||
| double | m44 | ||
| ) |
Set matrix values.
The values must be given in column-majorr format.
| void rt::matrix::translate | ( | double | x, |
| double | y, | ||
| double | z | ||
| ) |
Translate the matrix.
Alias for matrix.translate(vector(x, y, z))
1.8.15