Blender V5.0
IK_QSegment Class Referenceabstract

#include <IK_QSegment.h>

Inherited by IK_QElbowSegment, IK_QNullSegment, IK_QRevoluteSegment, IK_QSphericalSegment, IK_QSwingSegment, and IK_QTranslateSegment.

Public Member Functions

virtual EIGEN_MAKE_ALIGNED_OPERATOR_NEW ~IK_QSegment ()
void SetTransform (const Vector3d &start, const Matrix3d &rest_basis, const Matrix3d &basis, const double length)
void SetParent (IK_QSegment *parent)
IK_QSegmentChild () const
IK_QSegmentSibling () const
IK_QSegmentParent () const
void SetComposite (IK_QSegment *seg)
IK_QSegmentComposite () const
int NumberOfDoF () const
int DoFId () const
void SetDoFId (int dof_id)
double MaxExtension () const
Matrix3d BasisChange () const
Vector3d TranslationChange () const
Vector3d GlobalStart () const
Vector3d GlobalEnd () const
const Affine3d & GlobalTransform () const
bool Translational () const
bool Locked (int dof) const
void UnLock ()
double Weight (int dof) const
void ScaleWeight (int dof, double scale)
void UpdateTransform (const Affine3d &global)
virtual Vector3d Axis (int dof) const =0
virtual bool UpdateAngle (const IK_QJacobian &, Vector3d &, bool *)=0
virtual void Lock (int, IK_QJacobian &, Vector3d &)
virtual void UpdateAngleApply ()=0
virtual void SetLimit (int, double, double)
virtual void SetWeight (int, double)
virtual void SetBasis (const Matrix3d &basis)
void PrependBasis (const Matrix3d &mat)
void Reset ()
virtual void Scale (double scale)

Protected Member Functions

 IK_QSegment (int num_DoF, bool translational)
void extracted ()
void RemoveChild (IK_QSegment *child)

Protected Attributes

IK_QSegmentm_parent
IK_QSegmentm_child
IK_QSegmentm_sibling
IK_QSegmentm_composite
Vector3d m_start
Matrix3d m_rest_basis
Matrix3d m_basis
Vector3d m_translation
Matrix3d m_orig_basis
Vector3d m_orig_translation
double m_max_extension
Vector3d m_global_start
Affine3d m_global_transform
int m_num_DoF
int m_DoF_id
bool m_locked [3]
bool m_translational
double m_weight [3]

Detailed Description

An IK_Qsegment encodes information about a segments local coordinate system.

These segments always point along the y-axis.

Here we define the local coordinates of a joint as local_transform = translate(tr1) * rotation(A) * rotation(q) * translate(0,length,0) You can read this as:

  • first translate by (0,length,0)
  • multiply by the rotation matrix derived from the current angle parameterization q.
  • multiply by the user defined matrix representing the rest position of the bone.
  • translate by the used defined translation (tr1) The ordering of these transformations is vital, you must use exactly the same transformations when displaying the segments

Definition at line 33 of file IK_QSegment.h.

Constructor & Destructor Documentation

◆ ~IK_QSegment()

IK_QSegment::~IK_QSegment ( )
virtual

Definition at line 75 of file IK_QSegment.cpp.

References IK_QSegment(), m_child, and m_parent.

◆ IK_QSegment()

Member Function Documentation

◆ Axis()

◆ BasisChange()

Matrix3d IK_QSegment::BasisChange ( ) const

Definition at line 65 of file IK_QSegment.cpp.

References m_basis, and m_orig_basis.

Referenced by IK_GetBasisChange().

◆ Child()

IK_QSegment * IK_QSegment::Child ( ) const
inline

Definition at line 51 of file IK_QSegment.h.

References IK_QSegment(), and m_child.

◆ Composite()

◆ DoFId()

int IK_QSegment::DoFId ( ) const
inline

Definition at line 81 of file IK_QSegment.h.

References m_DoF_id.

Referenced by IK_QOrientationTask::ComputeJacobian(), and IK_QPositionTask::ComputeJacobian().

◆ extracted()

void IK_QSegment::extracted ( )
protected

References IK_QSegment().

◆ GlobalEnd()

Vector3d IK_QSegment::GlobalEnd ( ) const
inline

Definition at line 107 of file IK_QSegment.h.

References m_global_transform.

◆ GlobalStart()

Vector3d IK_QSegment::GlobalStart ( ) const
inline

Definition at line 102 of file IK_QSegment.h.

References m_global_start.

Referenced by IK_QPositionTask::ComputeJacobian().

◆ GlobalTransform()

const Affine3d & IK_QSegment::GlobalTransform ( ) const
inline

Definition at line 113 of file IK_QSegment.h.

References m_global_transform.

◆ Lock()

virtual void IK_QSegment::Lock ( int ,
IK_QJacobian & ,
Vector3d &  )
inlinevirtual

◆ Locked()

bool IK_QSegment::Locked ( int dof) const
inline

Definition at line 125 of file IK_QSegment.h.

References m_locked.

◆ MaxExtension()

double IK_QSegment::MaxExtension ( ) const
inline

Definition at line 92 of file IK_QSegment.h.

References m_max_extension.

Referenced by IK_QPositionTask::IK_QPositionTask().

◆ NumberOfDoF()

int IK_QSegment::NumberOfDoF ( ) const
inline

Definition at line 75 of file IK_QSegment.h.

References m_num_DoF.

Referenced by IK_QOrientationTask::ComputeJacobian(), and IK_QPositionTask::ComputeJacobian().

◆ Parent()

IK_QSegment * IK_QSegment::Parent ( ) const
inline

◆ PrependBasis()

void IK_QSegment::PrependBasis ( const Matrix3d & mat)

Definition at line 145 of file IK_QSegment.cpp.

References m_basis, and m_rest_basis.

Referenced by IK_QJacobianSolver::Solve().

◆ RemoveChild()

void IK_QSegment::RemoveChild ( IK_QSegment * child)
protected

Definition at line 109 of file IK_QSegment.cpp.

References IK_QSegment(), m_child, and m_sibling.

◆ Reset()

void IK_QSegment::Reset ( )

◆ Scale()

void IK_QSegment::Scale ( double scale)
virtual

◆ ScaleWeight()

void IK_QSegment::ScaleWeight ( int dof,
double scale )
inline

Definition at line 141 of file IK_QSegment.h.

References m_weight.

◆ SetBasis()

virtual void IK_QSegment::SetBasis ( const Matrix3d & basis)
inlinevirtual

Reimplemented in IK_QElbowSegment, IK_QNullSegment, IK_QRevoluteSegment, and IK_QSwingSegment.

Definition at line 164 of file IK_QSegment.h.

References m_basis.

Referenced by Reset(), and SetTransform().

◆ SetComposite()

void IK_QSegment::SetComposite ( IK_QSegment * seg)

Definition at line 104 of file IK_QSegment.cpp.

References IK_QSegment(), and m_composite.

Referenced by IK_CreateSegment().

◆ SetDoFId()

void IK_QSegment::SetDoFId ( int dof_id)
inline

Definition at line 86 of file IK_QSegment.h.

References m_DoF_id.

◆ SetLimit()

virtual void IK_QSegment::SetLimit ( int ,
double ,
double  )
inlinevirtual

◆ SetParent()

void IK_QSegment::SetParent ( IK_QSegment * parent)

Definition at line 86 of file IK_QSegment.cpp.

References IK_QSegment(), m_child, m_parent, and m_sibling.

Referenced by IK_CreateSegment(), and IK_SetParent().

◆ SetTransform()

void IK_QSegment::SetTransform ( const Vector3d & start,
const Matrix3d & rest_basis,
const Matrix3d & basis,
const double length )

◆ SetWeight()

virtual void IK_QSegment::SetWeight ( int ,
double  )
inlinevirtual

◆ Sibling()

IK_QSegment * IK_QSegment::Sibling ( ) const
inline

Definition at line 56 of file IK_QSegment.h.

References IK_QSegment(), and m_sibling.

◆ Translational()

bool IK_QSegment::Translational ( ) const
inline

◆ TranslationChange()

Vector3d IK_QSegment::TranslationChange ( ) const

Definition at line 70 of file IK_QSegment.cpp.

References m_orig_translation, and m_translation.

Referenced by IK_GetTranslationChange().

◆ UnLock()

void IK_QSegment::UnLock ( )
inline

Definition at line 130 of file IK_QSegment.h.

References m_locked.

◆ UpdateAngle()

virtual bool IK_QSegment::UpdateAngle ( const IK_QJacobian & ,
Vector3d & ,
bool *  )
pure virtual

◆ UpdateAngleApply()

virtual void IK_QSegment::UpdateAngleApply ( )
pure virtual

◆ UpdateTransform()

void IK_QSegment::UpdateTransform ( const Affine3d & global)

◆ Weight()

double IK_QSegment::Weight ( int dof) const
inline

Definition at line 136 of file IK_QSegment.h.

References m_weight.

Member Data Documentation

◆ m_basis

◆ m_child

IK_QSegment* IK_QSegment::m_child
protected

◆ m_composite

IK_QSegment* IK_QSegment::m_composite
protected

Definition at line 188 of file IK_QSegment.h.

Referenced by Composite(), IK_QSegment(), and SetComposite().

◆ m_DoF_id

◆ m_global_start

Vector3d IK_QSegment::m_global_start
protected

Definition at line 205 of file IK_QSegment.h.

Referenced by GlobalStart(), Scale(), and UpdateTransform().

◆ m_global_transform

◆ m_locked

◆ m_max_extension

double IK_QSegment::m_max_extension
protected

Definition at line 202 of file IK_QSegment.h.

Referenced by IK_QSegment(), MaxExtension(), Scale(), and SetTransform().

◆ m_num_DoF

int IK_QSegment::m_num_DoF
protected

Definition at line 209 of file IK_QSegment.h.

Referenced by IK_QSegment(), NumberOfDoF(), and IK_QTranslateSegment::SetWeight().

◆ m_orig_basis

Matrix3d IK_QSegment::m_orig_basis
protected

Definition at line 198 of file IK_QSegment.h.

Referenced by BasisChange(), IK_QSegment(), Reset(), and SetTransform().

◆ m_orig_translation

Vector3d IK_QSegment::m_orig_translation
protected

Definition at line 199 of file IK_QSegment.h.

Referenced by IK_QSegment(), Reset(), Scale(), SetTransform(), and TranslationChange().

◆ m_parent

IK_QSegment* IK_QSegment::m_parent
protected

Definition at line 185 of file IK_QSegment.h.

Referenced by IK_QSegment(), Parent(), SetParent(), and ~IK_QSegment().

◆ m_rest_basis

Matrix3d IK_QSegment::m_rest_basis
protected

Definition at line 193 of file IK_QSegment.h.

Referenced by IK_QSegment(), PrependBasis(), SetTransform(), and UpdateTransform().

◆ m_sibling

IK_QSegment* IK_QSegment::m_sibling
protected

Definition at line 187 of file IK_QSegment.h.

Referenced by IK_QSegment(), RemoveChild(), SetParent(), and Sibling().

◆ m_start

Vector3d IK_QSegment::m_start
protected

Definition at line 192 of file IK_QSegment.h.

Referenced by IK_QSegment(), Scale(), SetTransform(), and UpdateTransform().

◆ m_translation

◆ m_translational

bool IK_QSegment::m_translational
protected

Definition at line 212 of file IK_QSegment.h.

Referenced by IK_QSegment(), and Translational().

◆ m_weight


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