37 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
46 const Matrix3d &rest_basis,
47 const Matrix3d &basis,
153 virtual Vector3d
Axis(
int dof)
const = 0;
182 virtual void Scale(
double scale);
227 Vector3d
Axis(
int dof)
const;
235 void SetLimit(
int axis,
double lmin,
double lmax);
239 Matrix3d m_new_basis;
240 bool m_limit_x, m_limit_y, m_limit_z;
241 double m_min[2], m_max[2];
242 double m_min_y, m_max_y, m_max_x, m_max_z, m_offset_x, m_offset_z;
243 double m_locked_ax, m_locked_ay, m_locked_az;
260 return Vector3d(0, 0, 0);
273 Vector3d
Axis(
int dof)
const;
279 void SetLimit(
int axis,
double lmin,
double lmax);
281 void SetBasis(
const Matrix3d &basis);
285 double m_angle, m_new_angle;
295 Vector3d
Axis(
int dof)
const;
301 void SetLimit(
int axis,
double lmin,
double lmax);
303 void SetBasis(
const Matrix3d &basis);
306 Matrix3d m_new_basis;
307 bool m_limit_x, m_limit_z;
308 double m_min[2], m_max[2];
309 double m_max_x, m_max_z, m_offset_x, m_offset_z;
318 Vector3d
Axis(
int dof)
const;
324 void SetLimit(
int axis,
double lmin,
double lmax);
326 void SetBasis(
const Matrix3d &basis);
331 double m_twist, m_angle, m_new_twist, m_new_angle;
332 double m_cos_twist, m_sin_twist;
334 bool m_limit, m_limit_twist;
335 double m_min, m_max, m_min_twist, m_max_twist;
345 Vector3d
Axis(
int dof)
const;
352 void SetLimit(
int axis,
double lmin,
double lmax);
354 void Scale(
double scale);
358 bool m_axis_enabled[3], m_limit[3];
359 Vector3d m_new_translation;
360 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
virtual EIGEN_MAKE_ALIGNED_OPERATOR_NEW ~IK_QSegment()
const Affine3d & GlobalTransform() const
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
IK_QSegment * Composite() const
IK_QSegment * Child() const
IK_QSegment * Sibling() const
void ScaleWeight(int dof, double scale)
bool Translational() const
bool Locked(int dof) const
void UpdateTransform(const Affine3d &global)
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
void PrependBasis(const Matrix3d &mat)
void SetParent(IK_QSegment *parent)
void SetDoFId(int dof_id)
IK_QSegment * m_composite
void RemoveChild(IK_QSegment *child)
virtual void SetLimit(int, double, double)
IK_QSegment * Parent() const
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)
T clamp(const T &a, const T &min, const T &max)
T length(const vec_base< T, Size > &a)