PointCloud.rotate(R: numpy.ndarray, center: Optional[numpy.ndarray] = None) -> None
该函数旋转点云,并围绕中心点旋转。将变换结果存储在同一对象中。
R
:numpy.ndarray
类型,表示旋转矩阵。center
:numpy.ndarray
类型,表示旋转的中心点坐标。如果不指定,则默认为点云的质心。该函数没有返回值,但修改了点云本身。
import open3d as o3d
import numpy as np
pcd = o3d.io.read_point_cloud("filename.ply")
centroid = np.asarray(pcd.get_center())
# 定义旋转矩阵
theta = np.pi / 4 # 旋转角度
R = np.array([[np.cos(theta), -np.sin(theta), 0],
[np.sin(theta), np.cos(theta), 0],
[0, 0, 1]])
# 绕中心点旋转
pcd.rotate(R, center=centroid)
o3d.visualization.draw_geometries([pcd])
该示例将点云绕着其质心旋转了90度: