get_rotation_matrix_from_quaternion(quaternion: numpy.ndarray[float64[4]], xyzw: bool = True) -> numpy.ndarray[float64[3, 3]]
从四元数(Quaternion)获取旋转矩阵(Rotation Matrix)。
quaternion
: numpy.ndarray[float64[4]] - 四元数,[x, y, z, w]形式的数组,其中[x,y,z]代表绕着指定轴的旋转向量,w代表旋转的角度,具体可以见四元数相关的数学知识。xyzw
: bool - 标记quaternion的排列方式。默认值为True,即[x,y,z,w];如果该值为False,将按照[w,x,y,z]的顺序排列。numpy.ndarray[float64[3, 3]]
- 旋转矩阵,[i, j, k]分别代表矩阵的每个行向量。import numpy as np
import open3d
# 获取四元数
q = np.array([0.5, 0.5, 0, 0.70710678])
# 获取旋转矩阵
rot_mat = open3d.geometry.Octree.get_rotation_matrix_from_quaternion(q)
# 打印旋转矩阵
print(rot_mat)
array([[ 1.0000000e+00, -1.1102230e-16, 0.0000000e+00],
[ 1.1102230e-16, 1.0000000e+00, 0.0000000e+00],
[ 0.0000000e+00, 0.0000000e+00, 1.0000000e+00]])
下面展示的是四元数(q)和旋转矩阵(rot_mat)的联系与解释。
四元数(x,y,z,w)通过复数和三维单位向量组成,并代表一个三维空间中的旋转,即:
q = w + xi + yj + zk
四元数可以通过以下公式转化成旋转矩阵:
[[1 - 2(y^2+z^2), 2(xy - wz), 2(xz + wy) ],
[2(xy + wz) 1 - 2(x^2+z^2), 2(yz - wx) ],
[2(xz - wy) 2(yz + wx) 1 - 2(x^2+y^2) ]]
因此,当我们有一个四元数时,可以通过执行 get_rotation_matrix_from_quaternion
方法获取旋转矩阵。