8 #ifndef IMPALGEBRA_REFERENCE_FRAME_3D_H
9 #define IMPALGEBRA_REFERENCE_FRAME_3D_H
11 #include <IMP/algebra/algebra_config.h>
14 IMPALGEBRA_BEGIN_NAMESPACE
22 mutable bool has_inverse_;
26 tri_ = tr_.get_inverse();
47 : tr_(tr), has_inverse_(false) {}
60 return tr_.get_transformed(v);
65 return get_inverse().get_transformed(v);
87 inline Transformation3D get_transformation_from_first_to_second(
88 const ReferenceFrame3D &a,
const ReferenceFrame3D &b) {
89 return b.get_transformation_to() * a.get_transformation_from();
92 IMPALGEBRA_END_NAMESPACE
#define IMP_SHOWABLE_INLINE(Name, how_to_show)
Declare the methods needed by an object that can be printed.
const Transformation3D & get_transformation_from() const
ReferenceFrame3D get_local_reference_frame(const ReferenceFrame3D &v) const
ReferenceFrame3D get_global_reference_frame(const ReferenceFrame3D &v) const
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
Vector3D get_local_coordinates(const Vector3D &v) const
const Transformation3D & get_transformation_to() const
Transformation3D get_identity_transformation_3d()
Return a transformation that does not do anything.
ReferenceFrame3D()
Create the default reference frame.
Vector3D get_global_coordinates(const Vector3D &v) const
DensityMap * get_transformed(const DensityMap *input, const algebra::Transformation3D &tr, double threshold)
Return a new density map containing a rotated version of the old one.
ReferenceFrame3D(const Transformation3D &tr)
a reference frame specified by a transformation matrix