ClassesClassesClassesClasses | | | | Operators

dual_quat_interpolateT_dual_quat_interpolateDualQuatInterpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolate (Operator)

Name

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

Herror 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

void HOperatorSetX.DualQuatInterpolate(
[in] VARIANT DualQuaternionStart, [in] VARIANT DualQuaternionEnd, [in] VARIANT InterpPos, [out] VARIANT* DualQuaternionInterpolated)

IHDualQuaternionX* HDualQuaternionX.DualQuatInterpolate(
[in] IHDualQuaternionX* DualQuaternionEnd, [in] VARIANT InterpPos)

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_interpolateDualQuatInterpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolate interpolates the two dual quaternions DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart and DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd at the interpolation position InterpPosInterpPosInterpPosInterpPosInterpPosinterpPos.

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 InterpPosInterpPosInterpPosInterpPosInterpPosinterpPos must lie within the interval . However, values outside this interval are also possible, which then correspond to an extrapolation. For InterpPosInterpPosInterpPosInterpPosInterpPosinterpPos=0, the interpolated dual quaternion DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated corresponds to DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart. For InterpPosInterpPosInterpPosInterpPosInterpPosinterpPos=1, the interpolated dual quaternion DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated corresponds to DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd.

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

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

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

Parallelization

Parameters

DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStart (input_control)  dual_quaternion HDualQuaternion, HTupleHTupleHTupleHDualQuaternionX, VARIANTHtuple (real) (double) (double) (double) (double) (double)

Dual quaternion as the start point of the interpolation.

DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnd (input_control)  dual_quaternion HDualQuaternion, HTupleHTupleHTupleHDualQuaternionX, VARIANTHtuple (real) (double) (double) (double) (double) (double)

Dual quaternion as the end point of the interpolation.

InterpPosInterpPosInterpPosInterpPosInterpPosinterpPos (input_control)  real(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Interpolation parameter.

Default value: 0.5

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

DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolated (output_control)  dual_quaternion(-array) HDualQuaternion, HTupleHTupleHTupleHDualQuaternionX, VARIANTHtuple (real) (double) (double) (double) (double) (double)

Interpolated dual quaternion.

Possible Predecessors

pose_to_dual_quatpose_to_dual_quatPoseToDualQuatpose_to_dual_quatPoseToDualQuatPoseToDualQuat, screw_to_dual_quatscrew_to_dual_quatScrewToDualQuatscrew_to_dual_quatScrewToDualQuatScrewToDualQuat, dual_quat_normalizedual_quat_normalizeDualQuatNormalizedual_quat_normalizeDualQuatNormalizeDualQuatNormalize

Possible Successors

dual_quat_to_hom_mat3ddual_quat_to_hom_mat3dDualQuatToHomMat3ddual_quat_to_hom_mat3dDualQuatToHomMat3dDualQuatToHomMat3d, dual_quat_to_posedual_quat_to_poseDualQuatToPosedual_quat_to_poseDualQuatToPoseDualQuatToPose, dual_quat_to_screwdual_quat_to_screwDualQuatToScrewdual_quat_to_screwDualQuatToScrewDualQuatToScrew

See also

dual_quat_composedual_quat_composeDualQuatComposedual_quat_composeDualQuatComposeDualQuatCompose, dual_quat_conjugatedual_quat_conjugateDualQuatConjugatedual_quat_conjugateDualQuatConjugateDualQuatConjugate, serialize_dual_quatserialize_dual_quatSerializeDualQuatserialize_dual_quatSerializeDualQuatSerializeDualQuat, deserialize_dual_quatdeserialize_dual_quatDeserializeDualQuatdeserialize_dual_quatDeserializeDualQuatDeserializeDualQuat, dual_quat_trans_line_3ddual_quat_trans_line_3dDualQuatTransLine3ddual_quat_trans_line_3dDualQuatTransLine3dDualQuatTransLine3d, quat_interpolatequat_interpolateQuatInterpolatequat_interpolateQuatInterpolateQuatInterpolate

Module

Foundation


ClassesClassesClassesClasses | | | | Operators