ClassesClassesClassesClasses | | | | Operators

axis_angle_to_quatT_axis_angle_to_quatAxisAngleToQuataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuat (Operator)


axis_angle_to_quatT_axis_angle_to_quatAxisAngleToQuataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuat — Create a rotation quaternion.


axis_angle_to_quat( : : AxisX, AxisY, AxisZ, Angle : Quaternion)

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

Herror axis_angle_to_quat(const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle, HTuple* Quaternion)

void AxisAngleToQuat(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)

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 HOperatorSetX.AxisAngleToQuat(
[in] VARIANT AxisX, [in] VARIANT AxisY, [in] VARIANT AxisZ, [in] VARIANT Angle, [out] VARIANT* Quaternion)

void HQuaternionX.AxisAngleToQuat(
[in] VARIANT AxisX, [in] VARIANT AxisY, [in] VARIANT AxisZ, [in] VARIANT Angle)

static void HOperatorSet.AxisAngleToQuat(HTuple axisX, HTuple axisY, HTuple axisZ, HTuple angle, out HTuple quaternion)

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

public HQuaternion(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)


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 (AxisXAxisXAxisXAxisXAxisXaxisX, AxisYAxisYAxisYAxisYAxisYaxisY, AxisZAxisZAxisZAxisZAxisZaxisZ) by an angle a (AngleAngleAngleAngleAngleangle) can be described by the unit quaternion q =(cos(a/2), sin(a/2) v).

The operator axis_angle_to_quataxis_angle_to_quatAxisAngleToQuataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuat can be used to create such a quaternion. To rotate a point using QuaternionQuaternionQuaternionQuaternionQuaternionquaternion use the operator quat_rotate_point_3dquat_rotate_point_3dQuatRotatePoint3dquat_rotate_point_3dQuatRotatePoint3dQuatRotatePoint3d.

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


The operator axis_angle_to_quataxis_angle_to_quatAxisAngleToQuataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuat does not check whether the vector (AxisXAxisXAxisXAxisXAxisXaxisX, AxisYAxisYAxisYAxisYAxisYaxisY, AxisZAxisZAxisZAxisZAxisZaxisZ) is of unit length (i.e. of length 1). If this is not the case, QuaternionQuaternionQuaternionQuaternionQuaternionquaternion will be no valid rotation quaternion.



AxisXAxisXAxisXAxisXAxisXaxisX (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

X component of the rotation axis.

AxisYAxisYAxisYAxisYAxisYaxisY (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Y component of the rotation axis.

AxisZAxisZAxisZAxisZAxisZaxisZ (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Z component of the rotation axis.

AngleAngleAngleAngleAngleangle (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Rotation angle in radians.

QuaternionQuaternionQuaternionQuaternionQuaternionquaternion (output_control)  quaternion HQuaternion, HTupleHTupleHTupleHQuaternionX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (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)

Possible Successors

quat_to_hom_mat3dquat_to_hom_mat3dQuatToHomMat3dquat_to_hom_mat3dQuatToHomMat3dQuatToHomMat3d, quat_to_posequat_to_poseQuatToPosequat_to_poseQuatToPoseQuatToPose, quat_rotate_point_3dquat_rotate_point_3dQuatRotatePoint3dquat_rotate_point_3dQuatRotatePoint3dQuatRotatePoint3d, quat_composequat_composeQuatComposequat_composeQuatComposeQuatCompose

See also

quat_normalizequat_normalizeQuatNormalizequat_normalizeQuatNormalizeQuatNormalize, quat_conjugatequat_conjugateQuatConjugatequat_conjugateQuatConjugateQuatConjugate, quat_interpolatequat_interpolateQuatInterpolatequat_interpolateQuatInterpolateQuatInterpolate



ClassesClassesClassesClasses | | | | Operators