screw_to_dual_quatScrewToDualQuatScrewToDualQuatscrew_to_dual_quatT_screw_to_dual_quat
Short description
screw_to_dual_quatScrewToDualQuatScrewToDualQuatscrew_to_dual_quatT_screw_to_dual_quat β Convert a screw into a dual quaternion.
Signature
screw_to_dual_quat( string ScrewFormat, point3d.x AxisDirectionX, point3d.y AxisDirectionY, point3d.z AxisDirectionZ, point3d.x AxisMomentOrPointX, point3d.y AxisMomentOrPointY, point3d.z AxisMomentOrPointZ, angle.rad Rotation, real Translation, out dual_quaternion DualQuaternion )void ScrewToDualQuat( const HTuple& ScrewFormat, const HTuple& AxisDirectionX, const HTuple& AxisDirectionY, const HTuple& AxisDirectionZ, const HTuple& AxisMomentOrPointX, const HTuple& AxisMomentOrPointY, const HTuple& AxisMomentOrPointZ, const HTuple& Rotation, const HTuple& Translation, HTuple* DualQuaternion )static void HOperatorSet.ScrewToDualQuat( HTuple screwFormat, HTuple axisDirectionX, HTuple axisDirectionY, HTuple axisDirectionZ, HTuple axisMomentOrPointX, HTuple axisMomentOrPointY, HTuple axisMomentOrPointZ, HTuple rotation, HTuple translation, out HTuple dualQuaternion )def screw_to_dual_quat( screw_format: str, axis_direction_x: Union[float, int], axis_direction_y: Union[float, int], axis_direction_z: Union[float, int], axis_moment_or_point_x: Union[float, int], axis_moment_or_point_y: Union[float, int], axis_moment_or_point_z: Union[float, int], rotation: Union[float, int], translation: Union[float, int] ) -> Sequence[Union[float, int]]
Herror T_screw_to_dual_quat( const Htuple ScrewFormat, const Htuple AxisDirectionX, const Htuple AxisDirectionY, const Htuple AxisDirectionZ, const Htuple AxisMomentOrPointX, const Htuple AxisMomentOrPointY, const Htuple AxisMomentOrPointZ, const Htuple Rotation, const Htuple Translation, Htuple* DualQuaternion )
void HDualQuaternion::HDualQuaternion( const HString& ScrewFormat, const HTuple& AxisDirectionX, const HTuple& AxisDirectionY, const HTuple& AxisDirectionZ, const HTuple& AxisMomentOrPointX, const HTuple& AxisMomentOrPointY, const HTuple& AxisMomentOrPointZ, const HTuple& Rotation, const HTuple& Translation )
void HDualQuaternion::HDualQuaternion( const HString& ScrewFormat, double AxisDirectionX, double AxisDirectionY, double AxisDirectionZ, double AxisMomentOrPointX, double AxisMomentOrPointY, double AxisMomentOrPointZ, double Rotation, double Translation )
void HDualQuaternion::HDualQuaternion( const char* ScrewFormat, double AxisDirectionX, double AxisDirectionY, double AxisDirectionZ, double AxisMomentOrPointX, double AxisMomentOrPointY, double AxisMomentOrPointZ, double Rotation, double Translation )
void HDualQuaternion::HDualQuaternion( const wchar_t* ScrewFormat, double AxisDirectionX, double AxisDirectionY, double AxisDirectionZ, double AxisMomentOrPointX, double AxisMomentOrPointY, double AxisMomentOrPointZ, double Rotation, double Translation ) (Windows only)
public HDualQuaternion( string screwFormat, HTuple axisDirectionX, HTuple axisDirectionY, HTuple axisDirectionZ, HTuple axisMomentOrPointX, HTuple axisMomentOrPointY, HTuple axisMomentOrPointZ, HTuple rotation, HTuple translation )
public HDualQuaternion( string screwFormat, double axisDirectionX, double axisDirectionY, double axisDirectionZ, double axisMomentOrPointX, double axisMomentOrPointY, double axisMomentOrPointZ, double rotation, double translation )
void HDualQuaternion::ScrewToDualQuat( const HString& ScrewFormat, const HTuple& AxisDirectionX, const HTuple& AxisDirectionY, const HTuple& AxisDirectionZ, const HTuple& AxisMomentOrPointX, const HTuple& AxisMomentOrPointY, const HTuple& AxisMomentOrPointZ, const HTuple& Rotation, const HTuple& Translation )
void HDualQuaternion::ScrewToDualQuat( const HString& ScrewFormat, double AxisDirectionX, double AxisDirectionY, double AxisDirectionZ, double AxisMomentOrPointX, double AxisMomentOrPointY, double AxisMomentOrPointZ, double Rotation, double Translation )
void HDualQuaternion::ScrewToDualQuat( const char* ScrewFormat, double AxisDirectionX, double AxisDirectionY, double AxisDirectionZ, double AxisMomentOrPointX, double AxisMomentOrPointY, double AxisMomentOrPointZ, double Rotation, double Translation )
void HDualQuaternion::ScrewToDualQuat( const wchar_t* ScrewFormat, double AxisDirectionX, double AxisDirectionY, double AxisDirectionZ, double AxisMomentOrPointX, double AxisMomentOrPointY, double AxisMomentOrPointZ, double Rotation, double Translation ) (Windows only)
void HDualQuaternion.ScrewToDualQuat( string screwFormat, HTuple axisDirectionX, HTuple axisDirectionY, HTuple axisDirectionZ, HTuple axisMomentOrPointX, HTuple axisMomentOrPointY, HTuple axisMomentOrPointZ, HTuple rotation, HTuple translation )
void HDualQuaternion.ScrewToDualQuat( string screwFormat, double axisDirectionX, double axisDirectionY, double axisDirectionZ, double axisMomentOrPointX, double axisMomentOrPointY, double axisMomentOrPointZ, double rotation, double translation )
Description
The operator screw_to_dual_quatScrewToDualQuat converts the screw parameters
to the unit dual quaternion DualQuaterniondualQuaterniondual_quaternion, which represents a 3D
rigid transformation.
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β.
A screw is described by the direction of the screw axis
\({\mathbf L}=(L_{x},L_{y},L_{z})^T\)
with \(\|{\mathbf L}\|=1\), the moment of the screw axis
\({\mathbf M}=(M_{x},M_{y},M_{z})^T\)
with \({\mathbf L} \cdot {\mathbf M}=0\),
the screw angle \(\theta\), and the screw translation
\(d\).
If ScrewFormatscrewFormatscrew_format is set to 'moment'"moment", these parameters
can be passed in the corresponding parameters AxisDirectionXaxisDirectionXaxis_direction_x,
AxisDirectionYaxisDirectionYaxis_direction_y, AxisDirectionZaxisDirectionZaxis_direction_z, AxisMomentOrPointXaxisMomentOrPointXaxis_moment_or_point_x,
AxisMomentOrPointYaxisMomentOrPointYaxis_moment_or_point_y, AxisMomentOrPointZaxisMomentOrPointZaxis_moment_or_point_z, Rotationrotationrotation,
and Translationtranslationtranslation.
For convenience reasons, it is also possible to specify an arbitrary point
on the screw axis instead of the moment of the screw axis. For this,
ScrewFormatscrewFormatscrew_format must be set to 'point'"point" and the
coordinates of the points must be passed in AxisMomentOrPointXaxisMomentOrPointXaxis_moment_or_point_x,
AxisMomentOrPointYaxisMomentOrPointYaxis_moment_or_point_y, and AxisMomentOrPointZaxisMomentOrPointZaxis_moment_or_point_z.
Attention
screw_to_dual_quatScrewToDualQuat assumes that the direction vector of the screw
axis has length 1, i.e.,
\(\sqrt{L_{x}^2+L_{y}^2+L_{z}^2}=1\).
Otherwise the returned dual quaternion is not meaningful.
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
ScrewFormatscrewFormatscrew_format (input_control) string β (string)HTuple (HString)HTuple (string)strHtuple (char*)
Format of the screw parameters.
Default: 'moment'"moment"
List of values: 'moment', 'point'"moment", "point"
AxisDirectionXaxisDirectionXaxis_direction_x (input_control) point3d.x β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
X component of the direction vector of the screw axis.
AxisDirectionYaxisDirectionYaxis_direction_y (input_control) point3d.y β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
Y component of the direction vector of the screw axis.
AxisDirectionZaxisDirectionZaxis_direction_z (input_control) point3d.z β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
Z component of the direction vector of the screw axis.
AxisMomentOrPointXaxisMomentOrPointXaxis_moment_or_point_x (input_control) point3d.x β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
X component of the moment vector or a point on the
screw axis.
AxisMomentOrPointYaxisMomentOrPointYaxis_moment_or_point_y (input_control) point3d.y β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
Y component of the moment vector or a point on the
screw axis.
AxisMomentOrPointZaxisMomentOrPointZaxis_moment_or_point_z (input_control) point3d.z β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
Z component of the moment vector or a point on the
screw axis.
Rotationrotationrotation (input_control) angle.rad β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
Rotation angle in radians.
Translationtranslationtranslation (input_control) real β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)
Translation.
DualQuaterniondualQuaterniondual_quaternion (output_control) dual_quaternion β (real / integer)HTuple (double / Hlong)HDualQuaternion, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)
Dual quaternion.
Combinations with other operators
Combinations
Possible successors
dual_quat_composeDualQuatCompose, dual_quat_conjugateDualQuatConjugate, dual_quat_interpolateDualQuatInterpolate
Alternatives
pose_to_dual_quatPoseToDualQuat
See also
dual_quat_to_hom_mat3dDualQuatToHomMat3d, pose_to_dual_quatPoseToDualQuat, dual_quat_to_screwDualQuatToScrew, dual_quat_to_poseDualQuatToPose, dual_quat_normalizeDualQuatNormalize, serialize_dual_quatSerializeDualQuat, deserialize_dual_quatDeserializeDualQuat, dual_quat_trans_line_3dDualQuatTransLine3d, dual_quat_trans_point_3dDualQuatTransPoint3d, axis_angle_to_quatAxisAngleToQuat
Module
Foundation