Home | Download | Screen shots | Discussion | Documentation |
---|
A POD-struct comprising a 4x4 matrix. More...
#include <openvrml/basetypes.h>
Public Member Functions | |
mat4f & | operator*= (float scalar) throw () |
Multiply by a scalar. | |
mat4f & | operator*= (const mat4f &mat) throw () |
Multiply by another matrix. | |
float(& | operator[] (const std::size_t index) throw())[4] |
Row access. | |
void | transformation (vec3f &t, rotation &r, vec3f &s) const throw () |
Get the translation, rotation and scale from the orthogonal transformation matrix. | |
void | transformation (vec3f &t, rotation &r, vec3f &s, vec3f &shear) const throw () |
Get the translation, rotation, scale and shear from an affine transformation matrix. | |
const mat4f | inverse () const throw () |
Get the inverse of an affine matrix. | |
const mat4f | transpose () const throw () |
Get the transposition of the matrix. | |
float | det () const throw () |
Determinant. |
Public Attributes | |
float | mat [4][4] |
4x4 float matrix. |
Related Functions | |
(Note that these are not member functions.) | |
const openvrml::mat4f | make_rotation_mat4f (const rotation &rot) throw() |
Create a rotation matrix. | |
const openvrml::mat4f | make_rotation_mat4f (const quatf &quat) throw() |
Create a rotation matrix. | |
const openvrml::mat4f | make_scale_mat4f (const vec3f &s) throw() |
Create a scale matrix. | |
const openvrml::mat4f | make_scale_mat4f (const float s) throw() |
Create a uniform scale matrix. | |
const openvrml::mat4f | make_translation_mat4f (const vec3f &t) throw() |
Create a translation matrix. | |
const openvrml::mat4f | make_transformation_mat4f (const vec3f &t, const rotation &r, const vec3f &s, const rotation &sr, const vec3f &c) throw() |
Create a transformation matrix from a translation, a rotation, a scale, a scaleOrientation, and a center. | |
const openvrml::mat4f | make_mat4f (const float f11, const float f12, const float f13, const float f14, const float f21, const float f22, const float f23, const float f24, const float f31, const float f32, const float f33, const float f34, const float f41, const float f42, const float f43, const float f44) throw() |
Create a mat4f with given 16 elements in row-major order. | |
const openvrml::mat4f | make_mat4f () throw() |
Create an identity matrix. | |
const openvrml::mat4f | make_mat4f (const float mat[16]) throw() |
Create a matrix from an array of 16 values. | |
const openvrml::mat4f | make_mat4f (const float(&mat)[4][4]) throw() |
Create a matrix from a 4x4 array. | |
const openvrml::mat4f | operator* (const mat4f &mat, const float scalar) throw() |
Multiply a matrix by a scalar value. | |
const openvrml::mat4f | operator* (const float scalar, const mat4f &mat) throw() |
Multiply a scalar value by matrix. | |
const openvrml::mat4f | operator* (const mat4f &lhs, const mat4f &rhs) throw() |
Multiply two matrices. | |
std::istream & | operator>> (std::istream &in, mat4f &m) |
Stream input. | |
std::ostream & | operator<< (std::ostream &out, const mat4f &mat) |
Stream output. | |
bool | operator== (const mat4f &lhs, const mat4f &rhs) throw() |
Equality comparison operator. | |
bool | operator!= (const mat4f &lhs, const mat4f &rhs) throw() |
Inequality comparison operator. |
A POD-struct comprising a 4x4 matrix.
Matrices are stored in row-major order.
openvrml::mat4f & openvrml::mat4f::operator*= | ( | float | scalar | ) | throw () |
Multiply by a scalar.
[in] | scalar | value by which to multiply. |
openvrml::mat4f & openvrml::mat4f::operator*= | ( | const mat4f & | mat | ) | throw () |
Multiply by another matrix.
Sets the matrix equal to the matrix multiplied by mat
.
[in] | mat | the matrix by which to multiply. |
|
inline |
Row access.
[in] | index | row index. |
index
. Get the translation, rotation and scale from the orthogonal transformation matrix.
Any projection or shear information in the matrix is ignored. The caller is responsible for assuring that the transformation is in fact orthogonal; otherwise the results are undefined.
[out] | t | translation. |
[out] | r | rotation. |
[out] | s | scale. |
void openvrml::mat4f::transformation | ( | vec3f & | t, |
rotation & | r, | ||
vec3f & | s, | ||
vec3f & | shear | ||
) | const throw () |
Get the translation, rotation, scale and shear from an affine transformation matrix.
Any projection information in the matrix is ignored. As VRML allows non-uniform scaling, it is safe to call this routine. The caller is responsible for assuring that the transformation matrix is in fact affine; otherwise the results are undefined.
[out] | t | translation. |
[out] | r | rotation. |
[out] | s | scale. |
[out] | shear | shear. |
const openvrml::mat4f openvrml::mat4f::inverse | ( | ) | const throw () |
Get the inverse of an affine matrix.
const openvrml::mat4f openvrml::mat4f::transpose | ( | ) | const throw () |
Get the transposition of the matrix.
float openvrml::mat4f::det | ( | ) | const throw () |
Determinant.
|
related |
Create a rotation matrix.
[in] | rot | a rotation. |
rot
.
|
related |
Create a rotation matrix.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
[in] | quat | a quaternion. |
quat
.
|
related |
Create a scale matrix.
[in] | s | a vector. |
|
related |
Create a uniform scale matrix.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
[in] | s | scale factor. |
|
related |
Create a translation matrix.
[in] | t | translation vector. |
|
related |
Create a transformation matrix from a translation, a rotation, a scale, a scaleOrientation, and a center.
[in] | t | the translation. |
[in] | r | the rotation. |
[in] | s | the scale. |
[in] | sr | the scale orientation. |
[in] | c | the center. |
|
related |
|
related |
Create an identity matrix.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
related |
Create a matrix from an array of 16 values.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
mat
points to a sequence of at least 16 float
values.[in] | mat | a pointer to a sequence of 16 float values in row-major order. |
mat4f
containing the values in mat
.
|
related |
Create a matrix from a 4x4 array.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
[in] | mat | a 4x4 array of elements in row-major order. |
mat4f
containing the values in mat
.
|
related |
Multiply a matrix by a scalar value.
[in] | mat | matrix. |
[in] | scalar | scalar. |
|
related |
Multiply a scalar value by matrix.
[in] | scalar | scalar. |
[in] | mat | matrix. |
|
related |
Multiply two matrices.
[in] | lhs | left-hand operand. |
[in] | rhs | right-hand operand. |
|
related |
Stream input.
Consistent with the VRML97 convention, commas (“,”) in the input are treated as whitespace.
Optionally, brackets may be used in the input to group the rows; i.e., the following syntaxes are accepted:
[in,out] | in | input stream. |
[out] | m | a matrix. |
in
.
|
related |
Stream output.
[in,out] | out | an output stream. |
[in] | mat | a matrix. |
out
. Equality comparison operator.
All componenents must match exactly.
[in] | lhs | a matrix. |
[in] | rhs | a matrix. |
true
if lhs
and rhs
are equivalent; false
otherwise. Inequality comparison operator.
[in] | lhs | a matrix. |
[in] | rhs | a matrix. |
true
if lhs
and rhs
are not equivalent; false
otherwise. float openvrml::mat4f::mat[4][4] |
4x4 float matrix.