Blender
V3.3
|
#include <IK_QSegment.h>
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_QSegment * | Child () const |
IK_QSegment * | Sibling () const |
IK_QSegment * | Parent () const |
void | SetComposite (IK_QSegment *seg) |
IK_QSegment * | Composite () 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_QSegment * | m_parent |
IK_QSegment * | m_child |
IK_QSegment * | m_sibling |
IK_QSegment * | m_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] |
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:
Definition at line 35 of file IK_QSegment.h.
|
virtual |
Definition at line 73 of file IK_QSegment.cpp.
References m_child, m_parent, m_sibling, NULL, and RemoveChild().
|
protected |
Definition at line 12 of file IK_QSegment.cpp.
References m_basis, m_locked, m_max_extension, m_orig_basis, m_orig_translation, m_rest_basis, m_start, m_translation, and m_weight.
|
pure virtual |
Implemented in IK_QNullSegment, IK_QTranslateSegment, IK_QElbowSegment, IK_QSwingSegment, IK_QRevoluteSegment, and IK_QSphericalSegment.
Referenced by IK_QPositionTask::ComputeJacobian(), and IK_QOrientationTask::ComputeJacobian().
Matrix3d IK_QSegment::BasisChange | ( | ) | const |
Definition at line 63 of file IK_QSegment.cpp.
References m_basis, and m_orig_basis.
Referenced by IK_GetBasisChange().
|
inline |
Definition at line 53 of file IK_QSegment.h.
References m_child.
|
inline |
Definition at line 71 of file IK_QSegment.h.
References m_composite.
Referenced by IK_FreeSegment(), IK_GetBasisChange(), IK_GetTranslationChange(), IK_SetLimit(), IK_SetParent(), IK_SetStiffness(), IK_SetTransform(), IK_SolverAddGoal(), IK_SolverAddGoalOrientation(), and IK_SolverSetPoleVectorConstraint().
|
inline |
Definition at line 83 of file IK_QSegment.h.
References m_DoF_id.
Referenced by IK_QPositionTask::ComputeJacobian(), and IK_QOrientationTask::ComputeJacobian().
|
inline |
Definition at line 109 of file IK_QSegment.h.
References m_global_transform.
Referenced by IK_QPositionTask::ComputeJacobian(), and IK_QPositionTask::Distance().
|
inline |
Definition at line 104 of file IK_QSegment.h.
References m_global_start.
Referenced by IK_QPositionTask::ComputeJacobian().
|
inline |
Definition at line 115 of file IK_QSegment.h.
References m_global_transform.
Referenced by IK_QOrientationTask::ComputeJacobian().
|
inlinevirtual |
Reimplemented in IK_QTranslateSegment, IK_QElbowSegment, IK_QSwingSegment, IK_QRevoluteSegment, and IK_QSphericalSegment.
Definition at line 157 of file IK_QSegment.h.
|
inline |
Definition at line 127 of file IK_QSegment.h.
References m_locked.
|
inline |
Definition at line 94 of file IK_QSegment.h.
References m_max_extension.
Referenced by IK_QPositionTask::IK_QPositionTask().
|
inline |
Definition at line 77 of file IK_QSegment.h.
References m_num_DoF.
Referenced by IK_QPositionTask::ComputeJacobian(), and IK_QOrientationTask::ComputeJacobian().
|
inline |
Definition at line 63 of file IK_QSegment.h.
References m_parent.
Referenced by IK_QPositionTask::ComputeJacobian(), IK_QOrientationTask::ComputeJacobian(), and IK_QPositionTask::IK_QPositionTask().
void IK_QSegment::PrependBasis | ( | const Matrix3d & | mat | ) |
Definition at line 134 of file IK_QSegment.cpp.
References m_basis, and m_rest_basis.
Referenced by IK_QJacobianSolver::Solve().
|
protected |
Definition at line 103 of file IK_QSegment.cpp.
References m_child, m_sibling, and NULL.
Referenced by SetParent(), and ~IK_QSegment().
void IK_QSegment::Reset | ( | ) |
Definition at line 34 of file IK_QSegment.cpp.
References m_basis, m_child, m_locked, m_orig_basis, m_orig_translation, m_sibling, m_translation, and SetBasis().
Reimplemented in IK_QTranslateSegment.
Definition at line 139 of file IK_QSegment.cpp.
References m_global_start, m_global_transform, m_max_extension, m_orig_translation, m_start, and m_translation.
Referenced by IK_QTranslateSegment::Scale().
Definition at line 143 of file IK_QSegment.h.
References m_weight.
|
inlinevirtual |
Reimplemented in IK_QElbowSegment, IK_QSwingSegment, IK_QRevoluteSegment, and IK_QNullSegment.
Definition at line 172 of file IK_QSegment.h.
References m_basis.
Referenced by Reset(), and SetTransform().
void IK_QSegment::SetComposite | ( | IK_QSegment * | seg | ) |
Definition at line 98 of file IK_QSegment.cpp.
References m_composite.
Referenced by IK_CreateSegment().
|
inline |
Definition at line 88 of file IK_QSegment.h.
References m_DoF_id.
Referenced by IK_QJacobianSolver::Setup().
Reimplemented in IK_QTranslateSegment, IK_QElbowSegment, IK_QSwingSegment, IK_QRevoluteSegment, and IK_QSphericalSegment.
Definition at line 163 of file IK_QSegment.h.
Referenced by IK_SetLimit().
void IK_QSegment::SetParent | ( | IK_QSegment * | parent | ) |
Definition at line 82 of file IK_QSegment.cpp.
References m_child, m_parent, m_sibling, and RemoveChild().
Referenced by IK_CreateSegment(), and IK_SetParent().
void IK_QSegment::SetTransform | ( | const Vector3d & | start, |
const Matrix3d & | rest_basis, | ||
const Matrix3d & | basis, | ||
const double | length | ||
) |
Definition at line 46 of file IK_QSegment.cpp.
References blender::math::length(), m_max_extension, m_orig_basis, m_orig_translation, m_rest_basis, m_start, m_translation, and SetBasis().
Referenced by IK_SetTransform().
Reimplemented in IK_QTranslateSegment, IK_QElbowSegment, IK_QSwingSegment, IK_QRevoluteSegment, and IK_QSphericalSegment.
Definition at line 168 of file IK_QSegment.h.
Referenced by IK_SetStiffness().
|
inline |
Definition at line 58 of file IK_QSegment.h.
References m_sibling.
|
inline |
Definition at line 121 of file IK_QSegment.h.
References m_translational.
Referenced by IK_QPositionTask::ComputeJacobian(), IK_QOrientationTask::ComputeJacobian(), IK_GetBasisChange(), IK_GetTranslationChange(), IK_SetLimit(), and IK_SetStiffness().
Vector3d IK_QSegment::TranslationChange | ( | ) | const |
Definition at line 68 of file IK_QSegment.cpp.
References m_orig_translation, and m_translation.
Referenced by IK_GetTranslationChange().
|
inline |
Definition at line 132 of file IK_QSegment.h.
References m_locked.
|
pure virtual |
Implemented in IK_QTranslateSegment, IK_QElbowSegment, IK_QSwingSegment, IK_QRevoluteSegment, IK_QSphericalSegment, and IK_QNullSegment.
|
pure virtual |
Implemented in IK_QTranslateSegment, IK_QElbowSegment, IK_QSwingSegment, IK_QRevoluteSegment, IK_QNullSegment, and IK_QSphericalSegment.
void IK_QSegment::UpdateTransform | ( | const Affine3d & | global | ) |
Definition at line 120 of file IK_QSegment.cpp.
References m_basis, m_child, m_global_start, m_global_transform, m_rest_basis, m_sibling, m_start, and m_translation.
Referenced by IK_QJacobianSolver::Solve().
|
inline |
Definition at line 138 of file IK_QSegment.h.
References m_weight.
|
protected |
Definition at line 201 of file IK_QSegment.h.
Referenced by BasisChange(), IK_QSegment(), PrependBasis(), Reset(), IK_QNullSegment::SetBasis(), SetBasis(), IK_QRevoluteSegment::SetBasis(), IK_QSwingSegment::SetBasis(), IK_QElbowSegment::SetBasis(), IK_QSphericalSegment::UpdateAngle(), IK_QSwingSegment::UpdateAngle(), IK_QSphericalSegment::UpdateAngleApply(), IK_QRevoluteSegment::UpdateAngleApply(), IK_QSwingSegment::UpdateAngleApply(), IK_QElbowSegment::UpdateAngleApply(), and UpdateTransform().
|
protected |
Definition at line 193 of file IK_QSegment.h.
Referenced by Child(), RemoveChild(), Reset(), SetParent(), UpdateTransform(), and ~IK_QSegment().
|
protected |
Definition at line 195 of file IK_QSegment.h.
Referenced by Composite(), and SetComposite().
|
protected |
Definition at line 216 of file IK_QSegment.h.
Referenced by DoFId(), IK_QSphericalSegment::Lock(), IK_QRevoluteSegment::Lock(), IK_QSwingSegment::Lock(), IK_QElbowSegment::Lock(), IK_QTranslateSegment::Lock(), SetDoFId(), IK_QSphericalSegment::UpdateAngle(), IK_QRevoluteSegment::UpdateAngle(), IK_QSwingSegment::UpdateAngle(), IK_QElbowSegment::UpdateAngle(), and IK_QTranslateSegment::UpdateAngle().
|
protected |
Definition at line 212 of file IK_QSegment.h.
Referenced by GlobalStart(), Scale(), and UpdateTransform().
|
protected |
Definition at line 213 of file IK_QSegment.h.
Referenced by IK_QSphericalSegment::Axis(), IK_QRevoluteSegment::Axis(), IK_QSwingSegment::Axis(), IK_QElbowSegment::Axis(), IK_QTranslateSegment::Axis(), GlobalEnd(), GlobalTransform(), Scale(), and UpdateTransform().
|
protected |
Definition at line 218 of file IK_QSegment.h.
Referenced by IK_QSegment(), IK_QSphericalSegment::Lock(), IK_QRevoluteSegment::Lock(), IK_QSwingSegment::Lock(), IK_QElbowSegment::Lock(), IK_QTranslateSegment::Lock(), Locked(), Reset(), UnLock(), IK_QSphericalSegment::UpdateAngle(), IK_QRevoluteSegment::UpdateAngle(), IK_QSwingSegment::UpdateAngle(), IK_QElbowSegment::UpdateAngle(), and IK_QTranslateSegment::UpdateAngle().
|
protected |
Definition at line 209 of file IK_QSegment.h.
Referenced by IK_QSegment(), MaxExtension(), Scale(), and SetTransform().
|
protected |
Definition at line 216 of file IK_QSegment.h.
Referenced by NumberOfDoF(), and IK_QTranslateSegment::SetWeight().
|
protected |
Definition at line 205 of file IK_QSegment.h.
Referenced by BasisChange(), IK_QSegment(), Reset(), and SetTransform().
|
protected |
Definition at line 206 of file IK_QSegment.h.
Referenced by IK_QSegment(), Reset(), Scale(), SetTransform(), and TranslationChange().
|
protected |
Definition at line 192 of file IK_QSegment.h.
Referenced by Parent(), SetParent(), and ~IK_QSegment().
|
protected |
Definition at line 200 of file IK_QSegment.h.
Referenced by IK_QSegment(), PrependBasis(), SetTransform(), and UpdateTransform().
|
protected |
Definition at line 194 of file IK_QSegment.h.
Referenced by RemoveChild(), Reset(), SetParent(), Sibling(), UpdateTransform(), and ~IK_QSegment().
|
protected |
Definition at line 199 of file IK_QSegment.h.
Referenced by IK_QSegment(), Scale(), SetTransform(), and UpdateTransform().
|
protected |
Definition at line 202 of file IK_QSegment.h.
Referenced by IK_QSegment(), Reset(), Scale(), SetTransform(), TranslationChange(), IK_QTranslateSegment::UpdateAngle(), IK_QTranslateSegment::UpdateAngleApply(), and UpdateTransform().
|
protected |
Definition at line 219 of file IK_QSegment.h.
Referenced by Translational().
|
protected |
Definition at line 220 of file IK_QSegment.h.
Referenced by IK_QSegment(), ScaleWeight(), IK_QSphericalSegment::SetWeight(), IK_QRevoluteSegment::SetWeight(), IK_QSwingSegment::SetWeight(), IK_QElbowSegment::SetWeight(), IK_QTranslateSegment::SetWeight(), and Weight().