37 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
46 const Matrix3d &rest_basis,
47 const Matrix3d &basis,
153 virtual Vector3d
Axis(
int dof)
const = 0;
176 virtual void Scale(
double scale);
221 Vector3d
Axis(
int dof)
const;
229 void SetLimit(
int axis,
double lmin,
double lmax);
233 Matrix3d m_new_basis;
234 bool m_limit_x, m_limit_y, m_limit_z;
235 double m_min[2], m_max[2];
236 double m_min_y, m_max_y, m_max_x, m_max_z, m_offset_x, m_offset_z;
237 double m_locked_ax, m_locked_ay, m_locked_az;
252 return Vector3d(0, 0, 0);
265 Vector3d
Axis(
int dof)
const;
271 void SetLimit(
int axis,
double lmin,
double lmax);
273 void SetBasis(
const Matrix3d &basis);
277 double m_angle, m_new_angle;
287 Vector3d
Axis(
int dof)
const;
293 void SetLimit(
int axis,
double lmin,
double lmax);
295 void SetBasis(
const Matrix3d &basis);
298 Matrix3d m_new_basis;
299 bool m_limit_x, m_limit_z;
300 double m_min[2], m_max[2];
301 double m_max_x, m_max_z, m_offset_x, m_offset_z;
310 Vector3d
Axis(
int dof)
const;
316 void SetLimit(
int axis,
double lmin,
double lmax);
318 void SetBasis(
const Matrix3d &basis);
323 double m_twist, m_angle, m_new_twist, m_new_angle;
324 double m_cos_twist, m_sin_twist;
326 bool m_limit, m_limit_twist;
327 double m_min, m_max, m_min_twist, m_max_twist;
337 Vector3d
Axis(
int dof)
const;
344 void SetLimit(
int axis,
double lmin,
double lmax);
346 void Scale(
double scale);
350 bool m_axis_enabled[3], m_limit[3];
351 Vector3d m_new_translation;
352 double m_min[3], m_max[3];
Vector3d Axis(int dof) const
void SetLimit(int axis, double lmin, double lmax)
IK_QElbowSegment(int axis)
void Lock(int dof, IK_QJacobian &jacobian, Vector3d &delta)
void SetWeight(int axis, double weight)
bool UpdateAngle(const IK_QJacobian &jacobian, Vector3d &delta, bool *clamp)
void SetBasis(const Matrix3d &basis)
bool UpdateAngle(const IK_QJacobian &, Vector3d &, bool *)
void SetBasis(const Matrix3d &)
void SetWeight(int axis, double weight)
bool UpdateAngle(const IK_QJacobian &jacobian, Vector3d &delta, bool *clamp)
Vector3d Axis(int dof) const
IK_QRevoluteSegment(int axis)
void SetBasis(const Matrix3d &basis)
void Lock(int dof, IK_QJacobian &jacobian, Vector3d &delta)
void SetLimit(int axis, double lmin, double lmax)
virtual void SetBasis(const Matrix3d &basis)
const Vector3d GlobalStart() const
const Affine3d & GlobalTransform() const
virtual EIGEN_MAKE_ALIGNED_OPERATOR_NEW ~IK_QSegment()
const Vector3d GlobalEnd() const
virtual void Lock(int, IK_QJacobian &, Vector3d &)
virtual void UpdateAngleApply()=0
virtual bool UpdateAngle(const IK_QJacobian &, Vector3d &, bool *)=0
Vector3d m_orig_translation
void ScaleWeight(int dof, double scale)
bool Translational() const
bool Locked(int dof) const
void UpdateTransform(const Affine3d &global)
IK_QSegment * Parent() const
const double MaxExtension() const
virtual Vector3d Axis(int dof) const =0
Affine3d m_global_transform
virtual void Scale(double scale)
virtual void SetWeight(int, double)
void SetComposite(IK_QSegment *seg)
Matrix3d BasisChange() const
IK_QSegment(int num_DoF, bool translational)
double Weight(int dof) const
IK_QSegment * Composite() const
void PrependBasis(const Matrix3d &mat)
void SetParent(IK_QSegment *parent)
void SetDoFId(int dof_id)
IK_QSegment * m_composite
IK_QSegment * Child() const
void RemoveChild(IK_QSegment *child)
IK_QSegment * Sibling() const
virtual void SetLimit(int, double, double)
Vector3d TranslationChange() const
void SetTransform(const Vector3d &start, const Matrix3d &rest_basis, const Matrix3d &basis, const double length)
void SetWeight(int axis, double weight)
Vector3d Axis(int dof) const
void Lock(int dof, IK_QJacobian &jacobian, Vector3d &delta)
bool ComputeClampRotation(Vector3d &clamp)
bool UpdateAngle(const IK_QJacobian &jacobian, Vector3d &delta, bool *clamp)
void SetLimit(int axis, double lmin, double lmax)
void SetWeight(int axis, double weight)
void Lock(int dof, IK_QJacobian &jacobian, Vector3d &delta)
Vector3d Axis(int dof) const
bool UpdateAngle(const IK_QJacobian &jacobian, Vector3d &delta, bool *clamp)
void SetLimit(int axis, double lmin, double lmax)
void SetBasis(const Matrix3d &basis)
void SetWeight(int axis, double weight)
void Lock(int, IK_QJacobian &, Vector3d &)
Vector3d Axis(int dof) const
bool UpdateAngle(const IK_QJacobian &jacobian, Vector3d &delta, bool *clamp)
void SetLimit(int axis, double lmin, double lmax)