ClassesClasses | | Operators

dual_quat_interpolateT_dual_quat_interpolateDualQuatInterpolateDualQuatInterpolate (Operator)

Name

dual_quat_interpolateT_dual_quat_interpolateDualQuatInterpolateDualQuatInterpolate — Interpolate two dual quaternions.

Signature

dual_quat_interpolate( : : DualQuaternionStart, DualQuaternionEnd, InterpPos : DualQuaternionInterpolated)

Herror T_dual_quat_interpolate(const Htuple DualQuaternionStart, const Htuple DualQuaternionEnd, const Htuple InterpPos, Htuple* DualQuaternionInterpolated)

void DualQuatInterpolate(const HTuple& DualQuaternionStart, const HTuple& DualQuaternionEnd, const HTuple& InterpPos, HTuple* DualQuaternionInterpolated)

HDualQuaternionArray HDualQuaternion::DualQuatInterpolate(const HDualQuaternion& DualQuaternionEnd, const HTuple& InterpPos) const

HDualQuaternion HDualQuaternion::DualQuatInterpolate(const HDualQuaternion& DualQuaternionEnd, double InterpPos) const

static void HOperatorSet.DualQuatInterpolate(HTuple dualQuaternionStart, HTuple dualQuaternionEnd, HTuple interpPos, out HTuple dualQuaternionInterpolated)

HDualQuaternion[] HDualQuaternion.DualQuatInterpolate(HDualQuaternion dualQuaternionEnd, HTuple interpPos)

HDualQuaternion HDualQuaternion.DualQuatInterpolate(HDualQuaternion dualQuaternionEnd, double interpPos)

Description

The operator dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolateDualQuatInterpolate interpolates the two dual quaternions DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart and DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd at the interpolation position InterpPosInterpPosInterpPosInterpPosinterpPos.

For a brief introduction to dual quaternions, the used notation, and the relationship between dual quaternions and screws, see the documentation of this chapter (Transformations / Dual Quaternions).

For interpolations, the position InterpPosInterpPosInterpPosInterpPosinterpPos must lie within the interval . However, values outside this interval are also possible, which then correspond to an extrapolation. For InterpPosInterpPosInterpPosInterpPosinterpPos=0, the interpolated dual quaternion DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated corresponds to DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart. For InterpPosInterpPosInterpPosInterpPosinterpPos=1, the interpolated dual quaternion DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated corresponds to DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd.

The interpolation is performed by using screw linear interpolation (ScLERP). If both DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart and DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd are unit dual quaternions, DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated will be a unit dual quaternion as well. Hence, dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolateDualQuatInterpolate can be used to smoothly interpolate between two 3D rigid transformations.

Note that the interpolation of the rotation parts of DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart and DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd is performed identically to the interpolation of quaternions, i.e., the screw angle is interpolated linearly (see quat_interpolatequat_interpolateQuatInterpolateQuatInterpolateQuatInterpolate). The interpolation of the translation part is done by linearly interpolating the screw translation.

It is possible to pass a tuple of values for InterpPosInterpPosInterpPosInterpPosinterpPos. In this case, a tuple of interpolated DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated is returned, one for each value in InterpPosInterpPosInterpPosInterpPosinterpPos. This is more efficient than calling dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolateDualQuatInterpolate multiple times with a single value for InterpPosInterpPosInterpPosInterpPosinterpPos.

Execution Information

Parameters

DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart (input_control)  dual_quaternion HDualQuaternion, HTupleHTupleHtuple (real) (double) (double) (double)

Dual quaternion as the start point of the interpolation.

DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd (input_control)  dual_quaternion HDualQuaternion, HTupleHTupleHtuple (real) (double) (double) (double)

Dual quaternion as the end point of the interpolation.

InterpPosInterpPosInterpPosInterpPosinterpPos (input_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Interpolation parameter.

Default value: 0.5

Suggested values: 0.0, 0.25, 0.5, 0.75, 1.0

DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated (output_control)  dual_quaternion(-array) HDualQuaternion, HTupleHTupleHtuple (real) (double) (double) (double)

Interpolated dual quaternion.

Possible Predecessors

pose_to_dual_quatpose_to_dual_quatPoseToDualQuatPoseToDualQuatPoseToDualQuat, screw_to_dual_quatscrew_to_dual_quatScrewToDualQuatScrewToDualQuatScrewToDualQuat, dual_quat_normalizedual_quat_normalizeDualQuatNormalizeDualQuatNormalizeDualQuatNormalize

Possible Successors

dual_quat_to_hom_mat3ddual_quat_to_hom_mat3dDualQuatToHomMat3dDualQuatToHomMat3dDualQuatToHomMat3d, dual_quat_to_posedual_quat_to_poseDualQuatToPoseDualQuatToPoseDualQuatToPose, dual_quat_to_screwdual_quat_to_screwDualQuatToScrewDualQuatToScrewDualQuatToScrew

See also

dual_quat_composedual_quat_composeDualQuatComposeDualQuatComposeDualQuatCompose, dual_quat_conjugatedual_quat_conjugateDualQuatConjugateDualQuatConjugateDualQuatConjugate, serialize_dual_quatserialize_dual_quatSerializeDualQuatSerializeDualQuatSerializeDualQuat, deserialize_dual_quatdeserialize_dual_quatDeserializeDualQuatDeserializeDualQuatDeserializeDualQuat, dual_quat_trans_line_3ddual_quat_trans_line_3dDualQuatTransLine3dDualQuatTransLine3dDualQuatTransLine3d, quat_interpolatequat_interpolateQuatInterpolateQuatInterpolateQuatInterpolate

Module

Foundation


ClassesClasses | | Operators