IMP logo
Public Member Functions | Related Functions
IMP::algebra::Transformation3D Class Reference

Detailed Description

Simple 3D transformation class.

The rotation is applied first, and then the point is translated.

See also:
IMP::core::Transform
Note:
This class is a geometric primitive. Also, this class is not not initialized by its default constructor.

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

List of all members.

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 Rotation3Dget_rotation () const
Vector3D get_transformed (const Vector3D &o) const
 transform
const Vector3Dget_translation () const
Vector3D operator* (const Vector3D &v) const
 apply transformation (rotate and then translate)
Transformation3D operator* (const Transformation3D &tr) const
const Transformation3Doperator*= (const Transformation3D &o)
Transformation3D operator/ (const Transformation3D &b) const
const Transformation3Doperator/= (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.

Constructor & Destructor Documentation

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.


Member Function Documentation

Vector3D IMP::algebra::Transformation3D::get_transformed ( const Vector3D o) const

transform

Vector3D IMP::algebra::Transformation3D::operator* ( const Vector3D v) const

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.


Friends And Related Function Documentation

Transformation3D compose ( const Transformation3D a,
const Transformation3D b 
)
related

compose two transformations

For any vector v (a*b)*v = a*(b*v).

Transformation3D get_identity_transformation_3d ( )
related

Return a transformation that does not do anything.

Transformation3D get_rotation_about_point ( const Vector3D point,
const Rotation3D rotation 
)
related

Generate a Transformation3D object from a rotation around a point.

Rotate about a point rather than the origin.

Parameters:
[in]pointCenter to rotate about
[in]rotationThe rotation to perform
template<class Vector3DsOrXYZs0 , class Vector3DsOrXYZs1 >
IMP::algebra::Transformation3D get_transformation_aligning_first_to_second ( IMP_RESTRICT const Vector3DsOrXYZs0 &  source,
IMP_RESTRICT const Vector3DsOrXYZs1 &  target 
)
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

\[ \operatornamewithlimits{argmin}_T \sum \left|T\left(f\left[i\right]\right)-t[i]\right|^2 \]

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

The documentation for this class was generated from the following files:

Generated on Tue May 22 2012 23:33:25 for IMP by doxygen 1.8.1