get_rotation_matrix_from_zyx 函数返回一个 3 x 3 的旋转矩阵,该矩阵可用于将一个点绕坐标系的 z, y 和 x 轴旋转。该函数的输入是一个 3 元素的向量,表示旋转角度,其中第一个元素表示绕 z 轴旋转的角度,第二个元素表示绕 y 轴旋转的角度,第三个元素表示绕 x 轴旋转的角度。该函数采用 Z-Y-X(绕 z,绕 y,绕 x)的固定旋转顺序。
open3d.geometry.OrientedBoundingBox.get_rotation_matrix_from_zyx(angles)
angles: 3 元素的向量,分别表示绕 z, 绕 y 和绕 x 轴旋转的角度,单位为弧度。rotation_matrix: 3 x 3 的旋转矩阵。import open3d as o3d
import numpy as np
# 创建一个 3D 边框框
box = o3d.geometry.OrientedBoundingBox(np.array([0, 0, 0]), np.array([2, 1, 1]), np.eye(3))
print('Original axis-aligned bounding box:')
print(box)
# 获取绕 Z 轴,Y 轴和 X 轴旋转 45 度的旋转矩阵
angles = np.radians([45, 45, 45])
R = o3d.geometry.OrientedBoundingBox.get_rotation_matrix_from_zyx(angles)
# 将 3D 边框框绕 Z 轴,Y 轴和 X 轴旋转 45 度
box.rotate(R)
print('Rotated oriented bounding box:')
print(box)
Original axis-aligned bounding box:
OrientedBoundingBox with center:
[0 0 0]
and measurements:
[2. 1. 1.]
R:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
Rotated oriented bounding box:
OrientedBoundingBox with center:
[0. 0. 0.]
and measurements:
[1.93185165 1.06460195 1.06460195]
R:
[[ 0.38786695 0.5228475 -0.7586529 ]
[-0.33968311 0.85113268 0.40059244]
[ 0.85646558 0.05004425 0.51450989]]
ValueError: 如果 angles 长度不为 3。