axis_angle_to_quatT_axis_angle_to_quatAxisAngleToQuatAxisAngleToQuat (Operator)

Name

axis_angle_to_quatT_axis_angle_to_quatAxisAngleToQuatAxisAngleToQuat — Generiert eine Rotationsquaternion.

Signatur

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)

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 (AxisXAxisXAxisXAxisXaxisX,AxisYAxisYAxisYAxisYaxisY,AxisZAxisZAxisZAxisZaxisZ) um den Winkel a (AngleAngleAngleAngleangle) kann durch die Einheitsquaternion q = (cos(a/2), sin(a/2) v) beschrieben werden.

Der Operator axis_angle_to_quataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuatAxisAngleToQuat kann genutzt werden, um solch eine Quaternion zu erzeugen. Um einen Punkt mittels QuaternionQuaternionQuaternionQuaternionquaternion zu rotieren, kann der Operator quat_rotate_point_3dquat_rotate_point_3dQuatRotatePoint3dQuatRotatePoint3dQuatRotatePoint3d verwendet werden.

Zwei Rotation können mit quat_composequat_composeQuatComposeQuatComposeQuatCompose multipliziert werden. Außerdem können Rotationsquaternionen dazu verwendet werden, in set_paintset_paintSetPaintSetPaintSetPaint die Orientierung des 3D-Plots zu bestimmen.

Achtung

Der Operator axis_angle_to_quataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuatAxisAngleToQuat überprüft nicht, ob der Vektor (AxisXAxisXAxisXAxisXaxisX, AxisYAxisYAxisYAxisYaxisY, AxisZAxisZAxisZAxisZaxisZ) ein Einheitsvektor ist (d.h. Länge 1 hat). Falls dies nicht der Fall ist, ist QuaternionQuaternionQuaternionQuaternionquaternion keine gültige Rotationsquaternion.

Ausführungsinformationen

Parameter

AxisXAxisXAxisXAxisXaxisX (input_control)  real HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

X-Komponente der Rotationsachse.

AxisYAxisYAxisYAxisYaxisY (input_control)  real HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Y-Komponente der Rotationsachse.

AxisZAxisZAxisZAxisZaxisZ (input_control)  real HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Z-Komponente der Rotationsachse.

AngleAngleAngleAngleangle (input_control)  real HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Rotationswinkel im Bogenmaß.

QuaternionQuaternionQuaternionQuaternionquaternion (output_control)  quaternion HQuaternion, HTupleHTupleHtuple (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_mat3dquat_to_hom_mat3dQuatToHomMat3dQuatToHomMat3dQuatToHomMat3d, quat_to_posequat_to_poseQuatToPoseQuatToPoseQuatToPose, quat_rotate_point_3dquat_rotate_point_3dQuatRotatePoint3dQuatRotatePoint3dQuatRotatePoint3d, quat_composequat_composeQuatComposeQuatComposeQuatCompose

Siehe auch

quat_normalizequat_normalizeQuatNormalizeQuatNormalizeQuatNormalize, quat_conjugatequat_conjugateQuatConjugateQuatConjugateQuatConjugate, quat_interpolatequat_interpolateQuatInterpolateQuatInterpolateQuatInterpolate, screw_to_dual_quatscrew_to_dual_quatScrewToDualQuatScrewToDualQuatScrewToDualQuat

Modul

Foundation