dual_quat_interpolate T_dual_quat_interpolate DualQuatInterpolate DualQuatInterpolate dual_quat_interpolate (Operator)
Name
dual_quat_interpolate T_dual_quat_interpolate DualQuatInterpolate DualQuatInterpolate dual_quat_interpolate
— Interpolate two dual quaternions.
Signature
Description
The operator dual_quat_interpolate dual_quat_interpolate DualQuatInterpolate DualQuatInterpolate DualQuatInterpolate dual_quat_interpolate
interpolates the two dual
quaternions DualQuaternionStart DualQuaternionStart DualQuaternionStart DualQuaternionStart dualQuaternionStart dual_quaternion_start
and DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd dualQuaternionEnd dual_quaternion_end
at the interpolation position InterpPos InterpPos InterpPos InterpPos interpPos interp_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 InterpPos InterpPos InterpPos InterpPos interpPos interp_pos
must lie within the
interval
. However, values outside this interval are also
possible, which then correspond to an extrapolation. For
InterpPos InterpPos InterpPos InterpPos interpPos interp_pos
=0, the interpolated dual quaternion
DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated dualQuaternionInterpolated dual_quaternion_interpolated
corresponds to
DualQuaternionStart DualQuaternionStart DualQuaternionStart DualQuaternionStart dualQuaternionStart dual_quaternion_start
. For InterpPos InterpPos InterpPos InterpPos interpPos interp_pos
=1, the
interpolated dual quaternion DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated dualQuaternionInterpolated dual_quaternion_interpolated
corresponds
to DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd dualQuaternionEnd dual_quaternion_end
.
The interpolation is performed by using screw linear interpolation (ScLERP).
If both DualQuaternionStart DualQuaternionStart DualQuaternionStart DualQuaternionStart dualQuaternionStart dual_quaternion_start
and DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd dualQuaternionEnd dual_quaternion_end
are unit
dual quaternions, DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated dualQuaternionInterpolated dual_quaternion_interpolated
will be a unit dual
quaternion as well. Hence, dual_quat_interpolate dual_quat_interpolate DualQuatInterpolate DualQuatInterpolate DualQuatInterpolate dual_quat_interpolate
can be used to
smoothly interpolate between two 3D rigid transformations.
Note that the interpolation of the rotation parts of
DualQuaternionStart DualQuaternionStart DualQuaternionStart DualQuaternionStart dualQuaternionStart dual_quaternion_start
and DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd dualQuaternionEnd dual_quaternion_end
is performed
identically to the interpolation of quaternions, i.e., the screw angle
is interpolated linearly (see quat_interpolate quat_interpolate QuatInterpolate QuatInterpolate QuatInterpolate quat_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 InterpPos InterpPos InterpPos InterpPos interpPos interp_pos
. In this
case, a tuple of interpolated DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated dualQuaternionInterpolated dual_quaternion_interpolated
is
returned, one for each value in InterpPos InterpPos InterpPos InterpPos interpPos interp_pos
. This is more
efficient than calling dual_quat_interpolate dual_quat_interpolate DualQuatInterpolate DualQuatInterpolate DualQuatInterpolate dual_quat_interpolate
multiple times with
a single value for InterpPos InterpPos InterpPos InterpPos interpPos interp_pos
.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Processed without parallelization.
Parameters
DualQuaternionStart DualQuaternionStart DualQuaternionStart DualQuaternionStart dualQuaternionStart dual_quaternion_start
(input_control) dual_quaternion →
HDualQuaternion , HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Dual quaternion as the start point of the
interpolation.
DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd DualQuaternionEnd dualQuaternionEnd dual_quaternion_end
(input_control) dual_quaternion →
HDualQuaternion , HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Dual quaternion as the end point of the interpolation.
InterpPos InterpPos InterpPos InterpPos interpPos interp_pos
(input_control) real(-array) →
HTuple MaybeSequence[float] HTuple Htuple (real) (double ) (double ) (double )
Interpolation parameter.
Default:
0.5
Suggested values:
0.0, 0.25, 0.5, 0.75, 1.0
DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated DualQuaternionInterpolated dualQuaternionInterpolated dual_quaternion_interpolated
(output_control) dual_quaternion(-array) →
HDualQuaternion , HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Interpolated dual quaternion.
Possible Predecessors
pose_to_dual_quat pose_to_dual_quat PoseToDualQuat PoseToDualQuat PoseToDualQuat pose_to_dual_quat
,
screw_to_dual_quat screw_to_dual_quat ScrewToDualQuat ScrewToDualQuat ScrewToDualQuat screw_to_dual_quat
,
dual_quat_normalize dual_quat_normalize DualQuatNormalize DualQuatNormalize DualQuatNormalize dual_quat_normalize
Possible Successors
dual_quat_to_hom_mat3d dual_quat_to_hom_mat3d DualQuatToHomMat3d DualQuatToHomMat3d DualQuatToHomMat3d dual_quat_to_hom_mat3d
,
dual_quat_to_pose dual_quat_to_pose DualQuatToPose DualQuatToPose DualQuatToPose dual_quat_to_pose
,
dual_quat_to_screw dual_quat_to_screw DualQuatToScrew DualQuatToScrew DualQuatToScrew dual_quat_to_screw
See also
dual_quat_compose dual_quat_compose DualQuatCompose DualQuatCompose DualQuatCompose dual_quat_compose
,
dual_quat_conjugate dual_quat_conjugate DualQuatConjugate DualQuatConjugate DualQuatConjugate dual_quat_conjugate
,
serialize_dual_quat serialize_dual_quat SerializeDualQuat SerializeDualQuat SerializeDualQuat serialize_dual_quat
,
deserialize_dual_quat deserialize_dual_quat DeserializeDualQuat DeserializeDualQuat DeserializeDualQuat deserialize_dual_quat
,
dual_quat_trans_line_3d dual_quat_trans_line_3d DualQuatTransLine3d DualQuatTransLine3d DualQuatTransLine3d dual_quat_trans_line_3d
,
dual_quat_trans_point_3d dual_quat_trans_point_3d DualQuatTransPoint3d DualQuatTransPoint3d DualQuatTransPoint3d dual_quat_trans_point_3d
,
quat_interpolate quat_interpolate QuatInterpolate QuatInterpolate QuatInterpolate quat_interpolate
Module
Foundation