Blender V4.3
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)
const double MaxExtension () const
Matrix3d BasisChange () const
Vector3d TranslationChange () const
const Vector3d GlobalStart () const
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 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 35 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, m_parent, and NULL.

◆ 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 53 of file IK_QSegment.h.

References IK_QSegment(), and m_child.

◆ Composite()

◆ DoFId()

int IK_QSegment::DoFId ( ) const
inline

Definition at line 83 of file IK_QSegment.h.

References m_DoF_id.

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

◆ GlobalEnd()

const Vector3d IK_QSegment::GlobalEnd ( ) const
inline

Definition at line 109 of file IK_QSegment.h.

References m_global_transform.

◆ GlobalStart()

const Vector3d IK_QSegment::GlobalStart ( ) const
inline

Definition at line 104 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 115 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 127 of file IK_QSegment.h.

References m_locked.

◆ MaxExtension()

const double IK_QSegment::MaxExtension ( ) const
inline

Definition at line 94 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 77 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, m_sibling, and NULL.

◆ 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 143 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 166 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 88 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 58 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 132 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 138 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 189 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 206 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 203 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 210 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 199 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 200 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 186 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 194 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 188 of file IK_QSegment.h.

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

◆ m_start

Vector3d IK_QSegment::m_start
protected

Definition at line 193 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 213 of file IK_QSegment.h.

Referenced by IK_QSegment(), and Translational().

◆ m_weight


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