Simple 3D transformation class.
The rotation is applied first, and then the point is translated.
Examples: symmetry, randomize rigid body, markers, cg pdb, rigid collisions, dock with crosslinks, rigid brownian dynamics, local fitting, rigid body excluded volume, rigid body and excluded volume restraint
Public Member Functions | |
| Transformation3D () | |
| construct an invalid transformation | |
| Transformation3D (const Rotation3D &r, const Vector3D &t=Vector3D(0, 0, 0)) | |
| Transformation3D (const Vector3D &t) | |
| Transformation3D | get_inverse () const |
| const Rotation3D & | get_rotation () const |
| Vector3D | get_transformed (const Vector3D &o) const |
| transform | |
| const Vector3D & | get_translation () const |
| Vector3D | operator* (const Vector3D &v) const |
| apply transformation (rotate and then translate) | |
| Transformation3D | operator* (const Transformation3D &tr) const |
| const Transformation3D & | operator*= (const Transformation3D &o) |
| Transformation3D | operator/ (const Transformation3D &b) const |
| const Transformation3D & | operator/= (const Transformation3D &o) |
| void | show (std::ostream &out=std::cout) const |
Related Functions | |
(Note that these are not member functions.) | |
| Transformation3D | compose (const Transformation3D &a, const Transformation3D &b) |
| compose two transformations | |
| Transformation3D | get_identity_transformation_3d () |
| Return a transformation that does not do anything. | |
| Transformation3D | get_rotation_about_point (const Vector3D &point, const Rotation3D &rotation) |
| Generate a Transformation3D object from a rotation around a point. | |
| template<class Vector3DsOrXYZs0 , class Vector3DsOrXYZs1 > | |
| IMP::algebra::Transformation3D | get_transformation_aligning_first_to_second (IMP_RESTRICT const Vector3DsOrXYZs0 &source, IMP_RESTRICT const Vector3DsOrXYZs1 &target) |
| Compute the rigid transform bringing the first point set to the second. | |
| IMP::algebra::Transformation3D::Transformation3D | ( | ) |
construct an invalid transformation
| IMP::algebra::Transformation3D::Transformation3D | ( | const Rotation3D & | r, |
| const Vector3D & | t = Vector3D(0,0,0) |
||
| ) |
basic constructor
| IMP::algebra::Transformation3D::Transformation3D | ( | const Vector3D & | t | ) |
Construct a transformation with an identity rotation.
apply transformation (rotate and then translate)
| Transformation3D IMP::algebra::Transformation3D::operator* | ( | const Transformation3D & | tr | ) | const |
compose two rigid transformation such that for any vector v (rt1*rt2)*v = rt1*(rt2*v)
| Transformation3D IMP::algebra::Transformation3D::operator/ | ( | const Transformation3D & | b | ) | const |
Compute the transformation which, when composed with b, gives *this. That is a(x)== d(b(x)) for all x.
For consistency, this should probably have a nice name, but I don't know what name to give it.
|
related |
compose two transformations
For any vector v (a*b)*v = a*(b*v).
|
related |
Return a transformation that does not do anything.
|
related |
Generate a Transformation3D object from a rotation around a point.
Rotate about a point rather than the origin.
| [in] | point | Center to rotate about |
| [in] | rotation | The rotation to perform |
|
related |
Compute the rigid transform bringing the first point set to the second.
The points are assumed to be corresponding (that is, from[0] is aligned to to[0] etc.). The alignment computed is that which minimized the sum of squared distances between corresponding points. Return the
If the point sets lie in a 1 or 2 dimensional subspace, the alignment algorithm is unstable and not guaranteed to work. A warning is printed in this case.
\see Vector3D