该函数返回一个旋转矩阵,用于将一个3D轴对齐的盒子(Oriented Bounding Box,OBB)从zxy方向旋转到指定的新方向。其中z表示轴线主方向,x和y分别表示平行于z平面上的两个方向。
get_rotation_matrix_from_zxy(new_direction: np.ndarray) -> np.ndarray
参数:
new_direction
: 3D向量,表示OBB新的朝向。返回值:
import open3d as o3d
import numpy as np
# 创建一个OBB
obb = o3d.geometry.OrientedBoundingBox()
obb.center = [0, 0, 0]
obb.R = np.identity(3)
obb.extent = [1, 2, 3]
# 获取将OBB从原来的方向(z轴)旋转到x轴的旋转矩阵
new_direction = np.array([1, 0, 0]) # 新方向为x轴
rot_matrix = obb.get_rotation_matrix_from_zxy(new_direction)
# 在旋转后的OBB中显示一个立方体
cube = o3d.geometry.TriangleMesh.create_box(1,1,1)
cube.paint_uniform_color([0, 0.7, 0])
transformed_cube = cube.transform(rot_matrix).translate([obb.center])
o3d.visualization.draw_geometries([obb, transformed_cube])