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 m_child, m_parent, m_sibling, NULL, and RemoveChild().

◆ IK_QSegment()

IK_QSegment::IK_QSegment ( int num_DoF,
bool translational )
protected

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 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.

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

◆ 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.

Referenced by IK_QOrientationTask::ComputeJacobian().

◆ 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 m_child, m_sibling, and NULL.

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

◆ 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 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.

Referenced by IK_QJacobianSolver::Setup().

◆ 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 m_child, m_parent, m_sibling, and RemoveChild().

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 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

Definition at line 187 of file IK_QSegment.h.

Referenced by Child(), RemoveChild(), Reset(), SetParent(), UpdateTransform(), and ~IK_QSegment().

◆ m_composite

IK_QSegment* IK_QSegment::m_composite
protected

Definition at line 189 of file IK_QSegment.h.

Referenced by Composite(), 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 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 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 RemoveChild(), Reset(), SetParent(), Sibling(), UpdateTransform(), and ~IK_QSegment().

◆ 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 Translational().

◆ m_weight


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