rotate
方法旋转体素网格。
open3d.geometry.VoxelGrid.rotate(self, R: numpy.ndarray, center: Optional[numpy.ndarray] = None, inplace: bool = True) -> Optional[open3d.geometry.VoxelGrid]
R
:旋转矩阵 3x3
。center
:选择一个 3x1
的向量作为旋转中心。默认为 None,即使用体素网格的中心作为旋转中心。inplace
:是否直接更改原体素网格。默认为 True
。如果 inplace=True
,则返回 None
,否则返回旋转后的体素网格。
import open3d as o3d
import numpy as np
from scipy.spatial.transform import Rotation as R
voxel_size = 0.2
x = np.floor(np.random.rand(100, 3) / voxel_size) * voxel_size
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(x)
voxel_grid = o3d.geometry.VoxelGrid.create_from_point_cloud(pcd, voxel_size=voxel_size)
print(voxel_grid)
R = np.array([[-1, 0, 0],[0, 1, 0],[0, 0, -1]])
voxel_grid_d = voxel_grid.rotate(R, center=voxel_grid.get_center())
o3d.visualization.draw_geometries([voxel_grid_d])
TypeError
:旋转矩阵不是 3x3
的 numpy 数组。ValueError
:选择的旋转中心不是 3x1
的 numpy 数组。RuntimeError
:无法直接更改原体素网格。