axis_angle_to_quatT_axis_angle_to_quatAxisAngleToQuatAxisAngleToQuataxis_angle_to_quat轴角度至四元数(算子)
名称
axis_angle_to_quatT_axis_angle_to_quatAxisAngleToQuatAxisAngleToQuataxis_angle_to_quat — 创建旋转四元数。
签名
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]]
描述
四元数是复数的扩展。四元数集由 定义。在 HALCON 中,四元数通过包含四个元素的元组表示:
。
单位四元数可用于描述旋转。若四元数的范数为 1,则称为单位四元数。围绕单位向量 v
(AxisXAxisXAxisXAxisXaxisXaxis_x, AxisYAxisYAxisYAxisYaxisYaxis_y,
AxisZAxisZAxisZAxisZaxisZaxis_z) 进行逆时针旋转角度 a(AngleAngleAngleAngleangleangle)时,可由单位四元数 q =(cos(a/2), sin(a/2) v) 描述。
算子 axis_angle_to_quataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuatAxisAngleToQuataxis_angle_to_quat 可用于创建此类四元数。使用 QuaternionQuaternionQuaternionQuaternionquaternionquaternion 旋转点时,请采用算子
quat_rotate_point_3dquat_rotate_point_3dQuatRotatePoint3dQuatRotatePoint3dQuatRotatePoint3dquat_rotate_point_3d。
请注意,可使用算子 quat_composequat_composeQuatComposeQuatComposeQuatComposequat_compose 两个旋转进行组合。此外,您可以在 set_paintset_paintSetPaintSetPaintSetPaintset_paint 中使用旋转四元数来设置 3D 图形的朝向。
注意
算子 axis_angle_to_quataxis_angle_to_quatAxisAngleToQuatAxisAngleToQuatAxisAngleToQuataxis_angle_to_quat 不检查向量
(AxisXAxisXAxisXAxisXaxisXaxis_x, AxisYAxisYAxisYAxisYaxisYaxis_y, AxisZAxisZAxisZAxisZaxisZaxis_z) 是否为单位长度(即长度为 1)。若非如此,QuaternionQuaternionQuaternionQuaternionquaternionquaternion 将不是有效的旋转四元数。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
参数
AxisXAxisXAxisXAxisXaxisXaxis_x (输入控制) real → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
旋转轴的 X 分量。
AxisYAxisYAxisYAxisYaxisYaxis_y (输入控制) real → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
旋转轴的 Y 分量。
AxisZAxisZAxisZAxisZaxisZaxis_z (输入控制) real → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
旋转轴的 Z 分量。
AngleAngleAngleAngleangleangle (输入控制) real → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
旋转角度(单位:弧度)。
QuaternionQuaternionQuaternionQuaternionquaternionquaternion (输出控制) quaternion → HQuaternion, HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
旋转四元数。
示例(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)
可能的后继
quat_to_hom_mat3dquat_to_hom_mat3dQuatToHomMat3dQuatToHomMat3dQuatToHomMat3dquat_to_hom_mat3d,
quat_to_posequat_to_poseQuatToPoseQuatToPoseQuatToPosequat_to_pose,
quat_rotate_point_3dquat_rotate_point_3dQuatRotatePoint3dQuatRotatePoint3dQuatRotatePoint3dquat_rotate_point_3d,
quat_composequat_composeQuatComposeQuatComposeQuatComposequat_compose
另见
quat_normalizequat_normalizeQuatNormalizeQuatNormalizeQuatNormalizequat_normalize,
quat_conjugatequat_conjugateQuatConjugateQuatConjugateQuatConjugatequat_conjugate,
quat_interpolatequat_interpolateQuatInterpolateQuatInterpolateQuatInterpolatequat_interpolate,
screw_to_dual_quatscrew_to_dual_quatScrewToDualQuatScrewToDualQuatScrewToDualQuatscrew_to_dual_quat
模块
基础