Skip to content

axis_angle_to_quatAxisAngleToQuatAxisAngleToQuataxis_angle_to_quatT_axis_angle_to_quat🔗

Short description🔗

axis_angle_to_quatAxisAngleToQuatAxisAngleToQuataxis_angle_to_quatT_axis_angle_to_quat — Create a rotation quaternion.

Signature🔗

axis_angle_to_quat( real AxisX, real AxisY, real AxisZ, real Angle, out quaternion Quaternion )void AxisAngleToQuat( const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle, HTuple* Quaternion )static void HOperatorSet.AxisAngleToQuat( HTuple axisX, HTuple axisY, HTuple axisZ, HTuple angle, out HTuple quaternion )def axis_angle_to_quat( axis_x: Union[float, int], axis_y: Union[float, int], axis_z: Union[float, int], angle: Union[float, int] ) -> Sequence[Union[float, int]]

Herror T_axis_angle_to_quat( const Htuple AxisX, const Htuple AxisY, const Htuple AxisZ, const Htuple Angle, Htuple* Quaternion )

void HQuaternion::HQuaternion( const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle )

void HQuaternion::HQuaternion( double AxisX, double AxisY, double AxisZ, double Angle )

public HQuaternion( HTuple axisX, HTuple axisY, HTuple axisZ, HTuple angle )

public HQuaternion( double axisX, double axisY, double axisZ, double angle )

void HQuaternion::AxisAngleToQuat( const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle )

void HQuaternion::AxisAngleToQuat( double AxisX, double AxisY, double AxisZ, double Angle )

void HQuaternion.AxisAngleToQuat( HTuple axisX, HTuple axisY, HTuple axisZ, HTuple angle )

void HQuaternion.AxisAngleToQuat( double axisX, double axisY, double axisZ, double angle )

Description🔗

Quaternions are an extension of the complex numbers. The set of quaternions is given by \(\{x_{0} + x_{1}*i + x_{2}*j + x_{3}*k | x_{0},x_{1},x_{2},x_{3} \in R \}\). In HALCON, quaternions are represented by a tuple containing four elements: \([x_{0},x_{1},x_{2},x_{3}]\).

Unit quaternions can be used to describe rotations. A quaternion is a unit quaternion if its norm is 1. A counterclockwise rotation around an unit vector \(v\) (AxisXaxisXaxis_x, AxisYaxisYaxis_y, AxisZaxisZaxis_z) by an angle \(a\) (Angleangleangle) can be described by the unit quaternion \(q =(cos(a/2), sin(a/2) v)\).

The operator axis_angle_to_quatAxisAngleToQuat can be used to create such a quaternion. To rotate a point using Quaternionquaternionquaternion use the operator quat_rotate_point_3dQuatRotatePoint3d.

Note that two rotations can be concatenated using the operator quat_composeQuatCompose. Further, you can use a rotation quaternion to set the orientation of the 3D plot in set_paintSetPaint.

Attention🔗

The operator axis_angle_to_quatAxisAngleToQuat does not check whether the vector (AxisXaxisXaxis_x, AxisYaxisYaxis_y, AxisZaxisZaxis_z) is of unit length (i.e. of length 1). If this is not the case, Quaternionquaternionquaternion will be no valid rotation quaternion.

Execution information🔗

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🔗

AxisXaxisXaxis_x (input_control) real → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)

X component of the rotation axis.

AxisYaxisYaxis_y (input_control) real → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)

Y component of the rotation axis.

AxisZaxisZaxis_z (input_control) real → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)

Z component of the rotation axis.

Angleangleangle (input_control) real → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)

Rotation angle in radians.

Quaternionquaternionquaternion (output_control) quaternion → (real / integer)HTuple (double / Hlong)HQuaternion, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)

Rotation quaternion.

Example🔗

(HDevelop)


** Normalize a vector and create a rotation quaternion
Length := sqrt(AxisX*AxisX+AxisY*AxisY+AxisZ*AxisZ)
AxisX := AxisX/Length
AxisY := AxisY/Length
AxisZ := AxisZ/Length
axis_angle_to_quat (AxisX, AxisY, AxisZ, rad(90), Quaternion)

Combinations with other operators🔗

Combinations

Possible successors

quat_to_hom_mat3dQuatToHomMat3d, quat_to_poseQuatToPose, quat_rotate_point_3dQuatRotatePoint3d, quat_composeQuatCompose

See also

quat_normalizeQuatNormalize, quat_conjugateQuatConjugate, quat_interpolateQuatInterpolate, screw_to_dual_quatScrewToDualQuat

Module🔗

Foundation