dual_quat_interpolateT_dual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate (Operator)

Name

dual_quat_interpolateT_dual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate — Interpolation von zwei dualen Quaternionen.

Signatur

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]

Beschreibung

Der Operator dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate interpoliert zwischen den beiden dualen Quaternionen DualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStartdual_quaternion_start und DualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnddual_quaternion_end an der Position InterpPosInterpPosInterpPosinterpPosinterp_pos.

Eine kurze Einführung in duale Quaternionen, die verwendete Notation und die Beziehung zwischen dualen Quaternionen und Schraubungen findet sich in „Solution Guide III-C - 3D Vision“.

Für Interpolationen muss InterpPosInterpPosInterpPosinterpPosinterp_pos innerhalb des Intervalls liegen, wenngleich auch Werte außerhalb dieses Intervalls möglich sind. Letzteres entspricht dann einer Extrapolation. Im Fall InterpPosInterpPosInterpPosinterpPosinterp_pos=0 entspricht die interpolierte duale Quaternion DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolateddual_quaternion_interpolated dem Startpunkt DualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStartdual_quaternion_start der Interpolation. Im Fall InterpPosInterpPosInterpPosinterpPosinterp_pos=1 entspricht DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolateddual_quaternion_interpolated dem Endpunkt DualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnddual_quaternion_end der Interpolation.

Die Interpolation wird durch eine lineare Schraubungsinterpolation (screw linear interpolation, ScLERP) durchgeführt. Sind sowohl DualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStartdual_quaternion_start als auch DualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnddual_quaternion_end duale Einheitsquaternionen, so ist auch DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolateddual_quaternion_interpolated eine duale Einheitsquaternion. dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate kann also dazu verwendet werden, um weich zwischen zwei starren 3D-Abbildungen zu interpolieren.

Die Interpolation des Rotationsanteils zwischen DualQuaternionStartDualQuaternionStartDualQuaternionStartdualQuaternionStartdual_quaternion_start und DualQuaternionEndDualQuaternionEndDualQuaternionEnddualQuaternionEnddual_quaternion_end ist identisch zur Interpolation von Quaternionen, d.h. der Schraubungswinkel wird linear interpoliert (siehe quat_interpolatequat_interpolateQuatInterpolateQuatInterpolatequat_interpolate). Die Interpolation des Translationsanteils erfolgt durch die lineare Interpolation der Translation der Schraubung.

Es ist möglich, für InterpPosInterpPosInterpPosinterpPosinterp_pos ein Tupel mit mehreren Werten zu übergeben. In diesem Fall wird in DualQuaternionInterpolatedDualQuaternionInterpolatedDualQuaternionInterpolateddualQuaternionInterpolateddual_quaternion_interpolated für jeden Wert in InterpPosInterpPosInterpPosinterpPosinterp_pos eine interpolierte duale Quaternion zurückgegeben. Dies ist effizienter als dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate mehrfach mit einem einzelnen Wert für InterpPosInterpPosInterpPosinterpPosinterp_pos aufzurufen.

Ausführungsinformationen

Parameter

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

Duale Quaternion als Startpunkt der Interpolation.

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

Duale Quaternion als Endpunkt der Interpolation.

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

Interpolationsparameter.

Default: 0.5

Wertevorschläge: 0.0, 0.25, 0.5, 0.75, 1.0

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

Interpolierte duale Quaternion.

Vorgänger

pose_to_dual_quatpose_to_dual_quatPoseToDualQuatPoseToDualQuatpose_to_dual_quat, screw_to_dual_quatscrew_to_dual_quatScrewToDualQuatScrewToDualQuatscrew_to_dual_quat, dual_quat_normalizedual_quat_normalizeDualQuatNormalizeDualQuatNormalizedual_quat_normalize

Nachfolger

dual_quat_to_hom_mat3ddual_quat_to_hom_mat3dDualQuatToHomMat3dDualQuatToHomMat3ddual_quat_to_hom_mat3d, dual_quat_to_posedual_quat_to_poseDualQuatToPoseDualQuatToPosedual_quat_to_pose, dual_quat_to_screwdual_quat_to_screwDualQuatToScrewDualQuatToScrewdual_quat_to_screw

Siehe auch

dual_quat_composedual_quat_composeDualQuatComposeDualQuatComposedual_quat_compose, dual_quat_conjugatedual_quat_conjugateDualQuatConjugateDualQuatConjugatedual_quat_conjugate, serialize_dual_quatserialize_dual_quatSerializeDualQuatSerializeDualQuatserialize_dual_quat, deserialize_dual_quatdeserialize_dual_quatDeserializeDualQuatDeserializeDualQuatdeserialize_dual_quat, dual_quat_trans_line_3ddual_quat_trans_line_3dDualQuatTransLine3dDualQuatTransLine3ddual_quat_trans_line_3d, dual_quat_trans_point_3ddual_quat_trans_point_3dDualQuatTransPoint3dDualQuatTransPoint3ddual_quat_trans_point_3d, quat_interpolatequat_interpolateQuatInterpolateQuatInterpolatequat_interpolate

Modul

Foundation