IMP logo
IMP Reference Guide  develop.1a04b19ae7,2021/11/27
The Integrative Modeling Platform
IMP::kinematics::RevoluteJoint Class Referenceabstract

Abstract class for all revolute joints. More...

#include <IMP/kinematics/revolute_joints.h>

+ Inheritance diagram for IMP::kinematics::RevoluteJoint:

Detailed Description

Abstract class for all revolute joints.

Definition at line 47 of file revolute_joints.h.

Public Member Functions

 RevoluteJoint (IMP::core::RigidBody parent, IMP::core::RigidBody child)
 Construct on the line connecting a and b, with an initial angle 'angle'. More...
 
double get_angle () const
 
void set_angle (double angle)
 
- Public Member Functions inherited from IMP::kinematics::Joint
 Joint (IMP::core::RigidBody parent, IMP::core::RigidBody child)
 Constructor. More...
 
IMP::core::RigidBody get_child_node () const
 
KinematicForestget_owner_kf () const
 
IMP::core::RigidBody get_parent_node () const
 
virtual const
IMP::algebra::Transformation3D
get_transformation_child_to_parent () const
 
virtual std::string get_type_name () const
 
virtual ::IMP::VersionInfo get_version_info () const
 Get information about the module and version of the object. More...
 
- Public Member Functions inherited from IMP::Object
virtual void clear_caches ()
 
CheckLevel get_check_level () const
 
LogLevel get_log_level () const
 
void set_check_level (CheckLevel l)
 
void set_log_level (LogLevel l)
 Set the logging level used in this object. More...
 
void set_was_used (bool tf) const
 
void show (std::ostream &out=std::cout) const
 
const std::string & get_name () const
 
void set_name (std::string name)
 

Protected Member Functions

virtual double get_current_angle_from_cartesian_witnesses () const =0
 
const IMP::algebra::Vector3Dget_rot_axis_origin () const
 
const IMP::algebra::Vector3Dget_rot_axis_unit_vector () const
 
IMP::algebra::Transformation3D get_rotation_about_joint_in_parent_coordinates () const
 
virtual void update_axis_of_rotation_from_cartesian_witnesses ()=0
 
virtual void update_child_node_reference_frame () const
 
virtual void update_joint_from_cartesian_witnesses ()
 
- Protected Member Functions inherited from IMP::kinematics::Joint
virtual const
IMP::algebra::Transformation3D
get_transformation_child_to_parent_no_checks () const
 
void set_owner_kf (KinematicForest *kf)
 
void set_transformation_child_to_parent_no_checks (IMP::algebra::Transformation3D transformation)
 
- Protected Member Functions inherited from IMP::Object
 Object (std::string name)
 Construct an object with the given name. More...
 
virtual void do_destroy ()
 

Protected Attributes

double angle_
 
double last_updated_angle_
 
IMP::algebra::Vector3D rot_axis_origin_
 
IMP::algebra::Vector3D rot_axis_unit_vector_
 

Constructor & Destructor Documentation

IMP::kinematics::RevoluteJoint::RevoluteJoint ( IMP::core::RigidBody  parent,
IMP::core::RigidBody  child 
)

Construct on the line connecting a and b, with an initial angle 'angle'.

Parameters
parent,childkinematic nodes upstream and downstream (resp.) of this joint

Member Function Documentation

double IMP::kinematics::RevoluteJoint::get_angle ( ) const

gets the angle of the revolute joint. This method is kinematically safe (it triggers an update to internal coordinates if needed)

virtual double IMP::kinematics::RevoluteJoint::get_current_angle_from_cartesian_witnesses ( ) const
protectedpure virtual

this protected method uses the Cartesian witnesses to compute the actual current angle of this joint (assuming external coordinates of required Cartesian witnesses are up to date).

Note
this method does not update the angle stored in this joint, which may be strictly different (if external or internal coords are outdated)

Implemented in IMP::kinematics::BondAngleRevoluteJoint, and IMP::kinematics::DihedralAngleRevoluteJoint.

IMP::algebra::Transformation3D IMP::kinematics::RevoluteJoint::get_rotation_about_joint_in_parent_coordinates ( ) const
protected

Returns the transformation matrix for rotating a vector in parent coordinates about the axis of the joint, in a way that would bring the Cartesian witnesses to the correct joint angle (as measured by get_angle_from_cartesian_witnesses() ).

Definition at line 133 of file revolute_joints.h.

+ Here is the call graph for this function:

void IMP::kinematics::RevoluteJoint::set_angle ( double  angle)

sets the angle of the revolute joint and marks the internal coordinates as changed in the kinematic forest object

virtual void IMP::kinematics::RevoluteJoint::update_axis_of_rotation_from_cartesian_witnesses ( )
protectedpure virtual

this protected method updates the rot_axis_unit_vector_ and rot_axis_origin_ variables based on the Cartesian witnesses appropriate for a specific implementation of this abstract class, using parent coordinates, assuming all Cartesian witnesses are updated

Implemented in IMP::kinematics::BondAngleRevoluteJoint, and IMP::kinematics::DihedralAngleRevoluteJoint.

virtual void IMP::kinematics::RevoluteJoint::update_child_node_reference_frame ( ) const
protectedvirtual

Updates the reference frame of the child node by this joint angle, assuming the parent reference frame and the witnesses that affect update_axis_of_rotation_from_cartesian_witnesses() are all updated already

Reimplemented from IMP::kinematics::Joint.

virtual void IMP::kinematics::RevoluteJoint::update_joint_from_cartesian_witnesses ( )
protectedvirtual

Update the joint internal parameters based on external reference frames of witnesses and rigid bodies, assuming external parameters are updated

Reimplemented from IMP::kinematics::Joint.

Definition at line 119 of file revolute_joints.h.

+ Here is the call graph for this function:


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