dual_quat_interpolateT_dual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate (Operator)

Name

dual_quat_interpolateT_dual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate — 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)

def dual_quat_interpolate(dual_quaternion_start: Sequence[float], dual_quaternion_end: Sequence[float], interp_pos: MaybeSequence[float]) -> Sequence[float]

Description

The operator dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate interpolates the two dual quaternions DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStartdual_quaternion_start and DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnddual_quaternion_end at the interpolation position InterpPosInterpPosInterpPosInterpPosinterpPosinterp_pos.

For a brief introduction to dual quaternions, the used notation, and the relationship between dual quaternions and screws, see “Solution Guide III-C - 3D Vision”.

For interpolations, the position InterpPosInterpPosInterpPosInterpPosinterpPosinterp_pos must lie within the interval . However, values outside this interval are also possible, which then correspond to an extrapolation. For InterpPosInterpPosInterpPosInterpPosinterpPosinterp_pos=0, the interpolated dual quaternion DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolateddual_quaternion_interpolated corresponds to DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStartdual_quaternion_start. For InterpPosInterpPosInterpPosInterpPosinterpPosinterp_pos=1, the interpolated dual quaternion DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolateddual_quaternion_interpolated corresponds to DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnddual_quaternion_end.

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

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

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

Execution Information

Parameters

DualQuaternionStartDualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStartdual_quaternion_start (input_control)  dual_quaternion HDualQuaternion, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Dual quaternion as the start point of the interpolation.

DualQuaternionEndDualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnddual_quaternion_end (input_control)  dual_quaternion HDualQuaternion, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Dual quaternion as the end point of the interpolation.

InterpPosInterpPosInterpPosInterpPosinterpPosinterp_pos (input_control)  real(-array) HTupleMaybeSequence[float]HTupleHtuple (real) (double) (double) (double)

Interpolation parameter.

Default: 0.5

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

DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolateddual_quaternion_interpolated (output_control)  dual_quaternion(-array) HDualQuaternion, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Interpolated dual quaternion.

Possible Predecessors

pose_to_dual_quatpose_to_dual_quatPoseToDualQuatPoseToDualQuatPoseToDualQuatpose_to_dual_quat, screw_to_dual_quatscrew_to_dual_quatScrewToDualQuatScrewToDualQuatScrewToDualQuatscrew_to_dual_quat, dual_quat_normalizedual_quat_normalizeDualQuatNormalizeDualQuatNormalizeDualQuatNormalizedual_quat_normalize

Possible Successors

dual_quat_to_hom_mat3ddual_quat_to_hom_mat3dDualQuatToHomMat3dDualQuatToHomMat3dDualQuatToHomMat3ddual_quat_to_hom_mat3d, dual_quat_to_posedual_quat_to_poseDualQuatToPoseDualQuatToPoseDualQuatToPosedual_quat_to_pose, dual_quat_to_screwdual_quat_to_screwDualQuatToScrewDualQuatToScrewDualQuatToScrewdual_quat_to_screw

See also

dual_quat_composedual_quat_composeDualQuatComposeDualQuatComposeDualQuatComposedual_quat_compose, dual_quat_conjugatedual_quat_conjugateDualQuatConjugateDualQuatConjugateDualQuatConjugatedual_quat_conjugate, serialize_dual_quatserialize_dual_quatSerializeDualQuatSerializeDualQuatSerializeDualQuatserialize_dual_quat, deserialize_dual_quatdeserialize_dual_quatDeserializeDualQuatDeserializeDualQuatDeserializeDualQuatdeserialize_dual_quat, dual_quat_trans_line_3ddual_quat_trans_line_3dDualQuatTransLine3dDualQuatTransLine3dDualQuatTransLine3ddual_quat_trans_line_3d, dual_quat_trans_point_3ddual_quat_trans_point_3dDualQuatTransPoint3dDualQuatTransPoint3dDualQuatTransPoint3ddual_quat_trans_point_3d, quat_interpolatequat_interpolateQuatInterpolateQuatInterpolateQuatInterpolatequat_interpolate

Module

Foundation