The Gnome Chemistry Utils
0.14.0
|
#include <gcu/matrix.h>
Public Member Functions | |
Matrix () | |
Matrix (double d) | |
Matrix (double d[3][3]) | |
Matrix (Matrix const &m) | |
Matrix (Vector const &v1, Vector const &v2, Vector const &v3, bool as_rows=true) | |
virtual | ~Matrix () |
Matrix (double Psi, double Theta, double Phi, MatrixType Type) | |
Matrix (double x11, double x12, double x13, double x21, double x22, double x23, double x31, double x32, double x33) | |
Matrix & | operator* (Matrix const &cMat) const |
Matrix & | operator= (Matrix const &cMat) |
void | Euler (double &Psi, double &Theta, double &Phi) |
void | Transform (double &dx, double &dy, double &dz) const |
Vector | operator* (Vector const &v) const |
Vector | glmult (Vector const &v) const |
double & | operator() (unsigned i, unsigned j) |
double | operator() (unsigned i, unsigned j) const |
This class provides some operations related to rotation of a solid in space. The matrices are 3x3.
gcu::Matrix::Matrix | ( | ) |
Default constructor. Initialized to unit matrix.
gcu::Matrix::Matrix | ( | double | d | ) |
d | a number. |
Constructs a scalar matrix. Initializes diagonal elements to d and other elements to 0.
gcu::Matrix::Matrix | ( | double | d[3][3] | ) |
d | a table of numbers. |
Constructs a matrix from the values in d.
gcu::Matrix::Matrix | ( | Matrix const & | m | ) |
m | a matrix. |
Copy contructor.
|
virtual |
The destructor of Matrix.
gcu::Matrix::Matrix | ( | double | Psi, |
double | Theta, | ||
double | Phi, | ||
MatrixType | Type | ||
) |
Psi,: | precession angle. |
Theta,: | nutaton angle. |
Phi,: | rotation angle. |
Type,: | the type of the Matrix. |
Constructs a Matrix instance starting from three angles and the type. if Type is euler or antieuler, the angles are the Euler's angles. If Type is rotation, the values have a somewhat different meaning: they are the angles describing the rotation applied to a solid; the resulting matrix is then multiplied by the current "euler" matrix to give the new euler matrix. The code used in CrystalView::Rotate and in GtkChem3DViewer code is (when mouse has moved by x and y on the screen):
The (M_PI / 90.) factor is arbitrary here.
gcu::Matrix::Matrix | ( | double | x11, |
double | x12, | ||
double | x13, | ||
double | x21, | ||
double | x22, | ||
double | x23, | ||
double | x31, | ||
double | x32, | ||
double | x33 | ||
) |
x11,: | value to use at first line and first column of the matrix. |
x12,: | value to use at first line and second column of the matrix. |
x13,: | value to use at first line and third column of the matrix. |
x21,: | value to use at second line and first column of the matrix. |
x22,: | value to use at second line and second column of the matrix. |
x23,: | value to use at second line and third column of the matrix. |
x31,: | value to use at third line and first column of the matrix. |
x32,: | value to use at third line and second column of the matrix. |
x33,: | value to use at third line and third column of the matrix. |
Constructs a matrix from its components.
void gcu::Matrix::Euler | ( | double & | Psi, |
double & | Theta, | ||
double & | Phi | ||
) |
Psi,: | precession angle. |
Theta,: | nutaton angle. |
Phi,: | rotation angle. |
Get the Euler's angles associated to a "euler" Matrix as defined in MatrixType.
|
inline |
|
inline |
cMat,: | a Matrix instance to use in the multiplication. |
The matricial multiplication operator.
void gcu::Matrix::Transform | ( | double & | dx, |
double & | dy, | ||
double & | dz | ||
) | const |
dx,: | the x coordinate. |
dy,: | the y coordinate. |
dz,: | the z coordinate. |
Initially, dx, dy and dz are the components of the vector to transform (multiply) by the matrix and after execution of this method, dx, dy and dz are the components of the transformed vector. So initial values are lost.