axis_angle_to_quat T_axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat (Operator)
Name
axis_angle_to_quat T_axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat
— Generiert eine Rotationsquaternion.
Signatur
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 )
Beschreibung
Quaternionen sind eine Erweiterung der komplexen Zahlen. Die Menge der
Quaternionen ist gegeben durch
. In HALCON werden Quaternionen
durch Tuple der Länge vier dargestellt: [x_{0},x_{1},x_{2},x_{3}].
Einheitsquaternionen können verwendet werden, um Rotationen zu beschreiben.
Eine Quaternion ist eine Einheitsquaternion, wenn ihre Norm 1 beträgt.
Eine Rotation gegen den Uhrzeigersinn um einen Einheitsvektor v
(AxisX AxisX AxisX AxisX axisX
,AxisY AxisY AxisY AxisY axisY
,AxisZ AxisZ AxisZ AxisZ axisZ
) um den Winkel a
(Angle Angle Angle Angle angle
) kann durch die Einheitsquaternion
q = (cos(a/2), sin(a/2) v) beschrieben werden.
Der Operator axis_angle_to_quat axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat AxisAngleToQuat
kann genutzt werden, um solch eine
Quaternion zu erzeugen. Um einen Punkt mittels Quaternion Quaternion Quaternion Quaternion quaternion
zu
rotieren, kann der Operator quat_rotate_point_3d quat_rotate_point_3d QuatRotatePoint3d QuatRotatePoint3d QuatRotatePoint3d
verwendet werden.
Zwei Rotation können mit quat_compose quat_compose QuatCompose QuatCompose QuatCompose
multipliziert werden.
Außerdem können Rotationsquaternionen dazu verwendet werden, in
set_paint set_paint SetPaint SetPaint SetPaint
die Orientierung des 3D-Plots zu bestimmen.
Achtung
Der Operator axis_angle_to_quat axis_angle_to_quat AxisAngleToQuat AxisAngleToQuat AxisAngleToQuat
überprüft nicht, ob der Vektor
(AxisX AxisX AxisX AxisX axisX
, AxisY AxisY AxisY AxisY axisY
, AxisZ AxisZ AxisZ AxisZ axisZ
) ein Einheitsvektor ist (d.h.
Länge 1 hat).
Falls dies nicht der Fall ist, ist Quaternion Quaternion Quaternion Quaternion quaternion
keine gültige
Rotationsquaternion.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Wird ohne Parallelisierung verarbeitet.
Parameter
AxisX AxisX AxisX AxisX axisX
(input_control) real →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
X-Komponente der Rotationsachse.
AxisY AxisY AxisY AxisY axisY
(input_control) real →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Y-Komponente der Rotationsachse.
AxisZ AxisZ AxisZ AxisZ axisZ
(input_control) real →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Z-Komponente der Rotationsachse.
Angle Angle Angle Angle angle
(input_control) real →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Rotationswinkel im Bogenmaß.
Quaternion Quaternion Quaternion Quaternion quaternion
(output_control) quaternion →
HQuaternion , HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Rotationsquaternion.
Beispiel (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)
Nachfolger
quat_to_hom_mat3d quat_to_hom_mat3d QuatToHomMat3d QuatToHomMat3d QuatToHomMat3d
,
quat_to_pose quat_to_pose QuatToPose QuatToPose QuatToPose
,
quat_rotate_point_3d quat_rotate_point_3d QuatRotatePoint3d QuatRotatePoint3d QuatRotatePoint3d
,
quat_compose quat_compose QuatCompose QuatCompose QuatCompose
Siehe auch
quat_normalize quat_normalize QuatNormalize QuatNormalize QuatNormalize
,
quat_conjugate quat_conjugate QuatConjugate QuatConjugate QuatConjugate
,
quat_interpolate quat_interpolate QuatInterpolate QuatInterpolate QuatInterpolate
,
screw_to_dual_quat screw_to_dual_quat ScrewToDualQuat ScrewToDualQuat ScrewToDualQuat
Modul
Foundation