Open3D中的 open3d.geometry.Octree 类提供了 get_rotation_matrix_from_axis_angle 方法,在以给定的轴和角度为轴旋转时,返回旋转矩阵。
get_rotation_matrix_from_axis_angle(axis: numpy.ndarray, angle: float) -> numpy.ndarray
其中,参数 axis 是一个形状为 (3,) 的 numpy.ndarray,表示旋转轴的三个坐标值;参数 angle 是一个标量,表示围绕给定轴旋转的角度。
get_rotation_matrix_from_axis_angle 方法返回一个形状为 (3, 3) 的 numpy.ndarray,表示旋转矩阵。
下面的示例说明如何使用 get_rotation_matrix_from_axis_angle 方法创建一个绕着 x 轴旋转 90 度的旋转矩阵:
import numpy as np
from open3d.geometry import Octree
axis = np.array([1.0, 0.0, 0.0])
angle = np.pi/2
rot_mat = Octree.get_rotation_matrix_from_axis_angle(axis, angle)
print(rot_mat)
输出结果为:
[[ 1.0000000e+00 0.0000000e+00 0.0000000e+00]
[ 0.0000000e+00 6.1232340e-17 -1.0000000e+00]
[ 0.0000000e+00 1.0000000e+00 6.1232340e-17]]
可以看到,旋转矩阵中的每一行表示空间中的一个单位向量,在经过变换后向量所指的新方向。