Rosetta
Public Member Functions | List of all members
numeric::HomogeneousTransform_Double Class Reference

#include <HomogeneousTransform.hh>

Inheritance diagram for numeric::HomogeneousTransform_Double:
Inheritance graph
[legend]

Public Member Functions

 HomogeneousTransform_Double ()
 
 HomogeneousTransform_Double (xyzVector< double > const &p1, xyzVector< double > const &p2, xyzVector< double > const &p3)
 
 HomogeneousTransform_Double (xyzVector< double > const &xaxis, xyzVector< double > const &yaxis, xyzVector< double > const &zaxis, xyzVector< double > const &point)
 
 HomogeneousTransform_Double (xyzMatrix< double > const &axes, xyzVector< double > const &point)
 
- Public Member Functions inherited from numeric::HomogeneousTransform< double >
 HomogeneousTransform ()
 Default constructor: axis aligned with the global coordinate frame and the point located at the origin. More...
 
 HomogeneousTransform (xyzVector< double > const &p1, xyzVector< double > const &p2, xyzVector< double > const &p3)
 Construct the coordinate frame from the points defined such that. More...
 
 HomogeneousTransform (xyzVector< double > const &xaxis, xyzVector< double > const &yaxis, xyzVector< double > const &zaxis, xyzVector< double > const &point)
 Constructor from xyzVectors: trust that the axis are indeed orthoganol. More...
 
 HomogeneousTransform (xyzMatrix< double > const &axes, xyzVector< double > const &point)
 Constructor from an xyzMatrix and xyzVectors: trust that the axis are indeed orthoganol. More...
 
bool is_close (HomogeneousTransform< double > const &other, platform::Real const threshold=1.0e-6)
 
value_type xx () const
 
value_type xy () const
 
value_type xz () const
 
value_type yx () const
 
value_type yy () const
 
value_type yz () const
 
value_type zx () const
 
value_type zy () const
 
value_type zz () const
 
value_type px () const
 
value_type py () const
 
value_type pz () const
 
xyzVector< doublexaxis () const
 
xyzVector< doubleyaxis () const
 
xyzVector< doublezaxis () const
 
xyzVector< doublepoint () const
 
xyzMatrix< doublerotation_matrix () const
 
void set_identity_rotation ()
 Mutators. More...
 
void set_identity_transform ()
 
void set_identity ()
 
void set_xaxis_rotation_deg (double angle)
 
void set_yaxis_rotation_deg (double angle)
 
void set_zaxis_rotation_deg (double angle)
 
void set_xaxis_rotation_rad (double angle)
 
void set_yaxis_rotation_rad (double angle)
 
void set_zaxis_rotation_rad (double angle)
 
void set_transform (xyzVector< double > const &t)
 Set this HT to describe a transformation along the three axes. This has the size effect of setting the axes to the global axes. More...
 
void set_point (xyzVector< double > const &p)
 Set the point that this HT is centered at. This leaves the axes untouched. More...
 
void walk_along_x (double delta)
 Right multiply this coordinate frame by the frame 1 0 0 delta 0 1 0 0 0 0 1 0. More...
 
void walk_along_y (double delta)
 Right multiply this coordinate frame by the frame 1 0 0 0 0 1 0 delta 0 0 1 0. More...
 
void walk_along_z (double delta)
 Right multiply this coordinate frame by the frame 1 0 0 0 0 1 0 0 0 0 1 delta. More...
 
HomogeneousTransform< doubleoperator* (HomogeneousTransform< double > const &rmat) const
 Multiplication. More...
 
xyzVector< doubleoperator* (xyzVector< double > const &vect) const
 Transform a point. The input point is a location in this coordinate frame the output point is the location in global coordinate frame. More...
 
HomogeneousTransform< doubleinverse () const
 Invert this matrix. More...
 
xyzVector< doubleto_local_coordinate (xyzVector< double > const &v) const
 Convert a point in the global coordinate system to a point in this coordinate frame. If this frame is F and the point is p, then this solves for x st: F x = p. Equivalent to computing (F.inverse() * p).point(). More...
 
xyzVector< doubleeuler_angles_rad () const
 Return the three euler angles (in radians) that describe this HomogeneousTransform as the series of a Z axis rotation by the angle phi (returned in position 1 of the output vector), followed by an X axis rotation by the angle theta (returned in position 3 of the output vector), followed by another Z axis rotation by the angle psi (returned in position 2 of the output vector). This code is a modified version of Alex Z's code from r++. More...
 
xyzVector< doubleeuler_angles_ZYX_rad () const
 Return the three euler angles (in radians) that describe this HomogeneousTransform as the series of a Z axis rotation by the angle psi (returned in position 1 of the output vector), followed by an Y axis rotation by the angle theta (returned in position 2 of the output vector), followed by an X axis rotation by the angle phi (returned in position 3 of the output vector). This convention of Euler angles is added for use in iterative algorithms that aim to minimize Euler angle errors. When Euler angle error between two vectors approaches zero, the three Euler axes of that error become increasingly orthogonal, which benefits stability and speed of conversion Equations adopted from http://web.mit.edu/2.05/www/Handout/HO2.PDF (by Olivier Chocron) More...
 
xyzVector< doubleeuler_angles_deg () const
 
void from_euler_angles_rad (xyzVector< double > const &euler)
 Construct the coordinate frame from three euler angles that describe the frame. Keep the point fixed. See the description for euler_angles_rad() to understand the Z-X-Z transformation convention. More...
 
void from_euler_angles_deg (xyzVector< double > const &euler)
 
double xform_magnitude (double radius_of_gyration)
 Less accurate functions. More...
 
std::ostream & show (std::ostream &stream=std::cout) const
 

Additional Inherited Members

- Public Types inherited from numeric::HomogeneousTransform< double >
typedef double value_type
 

Constructor & Destructor Documentation

◆ HomogeneousTransform_Double() [1/4]

numeric::HomogeneousTransform_Double::HomogeneousTransform_Double ( )
inline

◆ HomogeneousTransform_Double() [2/4]

numeric::HomogeneousTransform_Double::HomogeneousTransform_Double ( xyzVector< double > const &  p1,
xyzVector< double > const &  p2,
xyzVector< double > const &  p3 
)
inline

◆ HomogeneousTransform_Double() [3/4]

numeric::HomogeneousTransform_Double::HomogeneousTransform_Double ( xyzVector< double > const &  xaxis,
xyzVector< double > const &  yaxis,
xyzVector< double > const &  zaxis,
xyzVector< double > const &  point 
)
inline

◆ HomogeneousTransform_Double() [4/4]

numeric::HomogeneousTransform_Double::HomogeneousTransform_Double ( xyzMatrix< double > const &  axes,
xyzVector< double > const &  point 
)
inline

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