#include "vec3.h"
#include "emobject.h"
#include <cstdio>
Include dependency graph for transform.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Namespaces | |
namespace | EMAN |
Classes | |
class | EMAN::Transform |
A Transform object is a somewhat specialized object designed specifically for EMAN2/Sparx storage of alignment parameters and euler orientations. More... | |
class | EMAN::Transform3D |
Transform3D These are a collection of transformation tools: rotation, translation, and construction of symmetric objects. More... | |
Defines | |
#define | eman__transform_h__ 1 |
| |
Functions | |
Transform | operator * (const Transform &M2, const Transform &M1) |
Matrix times Matrix, a pure mathematical operation. | |
template<typename Type> | |
Vec3f | operator * (const Transform &M, const Vec3< Type > &v) |
Matrix times Vector, a pure mathematical operation. | |
template<typename Type> | |
Vec2f | operator * (const Transform &M, const Vec2< Type > &v) |
Matrix times Vector, a pure mathematical operation. | |
template<typename Type> | |
Vec3f | operator * (const Vec3< Type > &v, const Transform &M) |
Vector times a matrix. | |
Transform3D | operator * (const Transform3D &M1, const Transform3D &M2) |
template<typename Type> | |
Vec3f | operator * (const Vec3< Type > &v, const Transform3D &M) |
template<typename Type> | |
Vec3f | operator * (const Transform3D &M, const Vec3< Type > &v) |
template<typename Type> | |
Vec2f | operator * (const Transform3D &M, const Vec2< Type > &v) |
|
Definition at line 38 of file transform.h. |
|
Definition at line 899 of file transform.h. References v, EMAN::Vec2f, x, and y. 00900 { 00901 // This is the left multiplication of a vector, v by a matrix M 00902 float x = M[0][0] * v[0] + M[0][1] * v[1] + M[0][3] ; 00903 float y = M[1][0] * v[0] + M[1][1] * v[1] + M[1][3]; 00904 return Vec2f(x, y); 00905 }
|
|
Definition at line 888 of file transform.h. References v, EMAN::Vec3f, x, and y. 00889 { 00890 // This is the left multiplication of a vector, v by a matrix M 00891 float x = M[0][0] * v[0] + M[0][1] * v[1] + M[0][2] * v[2] + M[0][3]; 00892 float y = M[1][0] * v[0] + M[1][1] * v[1] + M[1][2] * v[2] + M[1][3]; 00893 float z = M[2][0] * v[0] + M[2][1] * v[1] + M[2][2] * v[2] + M[2][3]; 00894 return Vec3f(x, y, z); 00895 }
|
|
Definition at line 878 of file transform.h. References v, EMAN::Vec3f, x, and y. 00879 { 00880 // This is the right multiplication of a row vector, v by a transform3D matrix M 00881 float x = v[0] * M[0][0] + v[1] * M[1][0] + v[2] * M[2][0] ; 00882 float y = v[0] * M[0][1] + v[1] * M[1][1] + v[2] * M[2][1]; 00883 float z = v[0] * M[0][2] + v[1] * M[1][2] + v[2] * M[2][2]; 00884 return Vec3f(x, y, z); 00885 }
|
|
Definition at line 1544 of file transform.cpp. 01545 { 01546 // This is the left multiplication of a matrix M1 by a matrix M2; that is M2*M1 01547 // It returns a new matrix 01548 Transform3D resultant; 01549 for (int i=0; i<3; i++) { 01550 for (int j=0; j<4; j++) { 01551 resultant[i][j] = M2[i][0] * M1[0][j] + M2[i][1] * M1[1][j] + M2[i][2] * M1[2][j]; 01552 } 01553 resultant[i][3] += M2[i][3]; // add on the new translation (not included above) 01554 } 01555 01556 for (int j=0; j<3; j++) { 01557 resultant[3][j] = M2[3][j]; 01558 } 01559 01560 return resultant; // This will have the post_trans of M2 01561 }
|
|
Vector times a matrix. Highly specialized. Useful when the upper 3x3 only contains rotations and you want to quickly multiply by the rotation matrix inverse (transpose) Definition at line 473 of file transform.h. References v, EMAN::Vec3f, x, and y. 00474 { 00475 float x = v[0] * M[0][0] + v[1] * M[1][0] + v[2] * M[2][0] ; 00476 float y = v[0] * M[0][1] + v[1] * M[1][1] + v[2] * M[2][1]; 00477 float z = v[0] * M[0][2] + v[1] * M[1][2] + v[2] * M[2][2]; 00478 return Vec3f(x, y, z); 00479 }
|
|
Matrix times Vector, a pure mathematical operation.
Definition at line 464 of file transform.h. References EMAN::Transform::transform(), v, and EMAN::Vec2f. 00465 {
00466 return M.transform(v);
00467 }
|
|
Matrix times Vector, a pure mathematical operation.
Definition at line 457 of file transform.h. References EMAN::Transform::transform(), v, and EMAN::Vec3f. 00458 {
00459 return M.transform(v);
00460 }
|
|
Matrix times Matrix, a pure mathematical operation.
Definition at line 1160 of file transform.cpp. 01161 { 01162 Transform result; 01163 for (int i=0; i<3; i++) { 01164 for (int j=0; j<4; j++) { 01165 result[i][j] = M2[i][0] * M1[0][j] + M2[i][1] * M1[1][j] + M2[i][2] * M1[2][j]; 01166 } 01167 result[i][3] += M2[i][3]; 01168 } 01169 01170 return result; 01171 }
|