axis_angle_to_quat T_axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat axis_angle_to_quat (Operator)
Name
axis_angle_to_quat T_axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat axis_angle_to_quat
— Create a rotation quaternion.
Signature
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 )
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 )
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]]
Description
Quaternions are an extension of the complex numbers. The set of quaternions
is given by
. In HALCON, quaternions are
represented by a tuple containing four elements:
.
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
(AxisX AxisX AxisX axisX axis_x
, AxisY AxisY AxisY axisY axis_y
,
AxisZ AxisZ AxisZ axisZ axis_z
) by an angle a (Angle Angle Angle angle angle
) can be described by
the unit quaternion q =(cos(a/2), sin(a/2) v).
The operator axis_angle_to_quat axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat axis_angle_to_quat
can be used to create such a
quaternion. To rotate a point using Quaternion Quaternion Quaternion quaternion quaternion
use the operator
quat_rotate_point_3d quat_rotate_point_3d QuatRotatePoint3d QuatRotatePoint3d quat_rotate_point_3d
.
Note that two rotations can be concatenated using the operator
quat_compose quat_compose QuatCompose QuatCompose quat_compose
. Further, you can use a rotation quaternion to
set the orientation of the 3D plot in set_paint set_paint SetPaint SetPaint set_paint
.
Attention
The operator axis_angle_to_quat axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat axis_angle_to_quat
does not check whether the vector
(AxisX AxisX AxisX axisX axis_x
, AxisY AxisY AxisY axisY axis_y
, AxisZ AxisZ AxisZ axisZ axis_z
) is of unit length (i.e. of
length 1). If this is not the case, Quaternion Quaternion Quaternion quaternion quaternion
will be no valid
rotation quaternion.
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
AxisX AxisX AxisX axisX axis_x
(input_control) real →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
X component of the rotation axis.
AxisY AxisY AxisY axisY axis_y
(input_control) real →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Y component of the rotation axis.
AxisZ AxisZ AxisZ axisZ axis_z
(input_control) real →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Z component of the rotation axis.
Angle Angle Angle angle angle
(input_control) real →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Rotation angle in radians.
Quaternion Quaternion Quaternion quaternion quaternion
(output_control) quaternion →
HQuaternion , HTuple Sequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (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_mat3d quat_to_hom_mat3d QuatToHomMat3d QuatToHomMat3d quat_to_hom_mat3d
,
quat_to_pose quat_to_pose QuatToPose QuatToPose quat_to_pose
,
quat_rotate_point_3d quat_rotate_point_3d QuatRotatePoint3d QuatRotatePoint3d quat_rotate_point_3d
,
quat_compose quat_compose QuatCompose QuatCompose quat_compose
See also
quat_normalize quat_normalize QuatNormalize QuatNormalize quat_normalize
,
quat_conjugate quat_conjugate QuatConjugate QuatConjugate quat_conjugate
,
quat_interpolate quat_interpolate QuatInterpolate QuatInterpolate quat_interpolate
,
screw_to_dual_quat screw_to_dual_quat ScrewToDualQuat ScrewToDualQuat screw_to_dual_quat
Module
Foundation