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
。