在 Matlab 中绘制包含 3d 点云的球体

Plot sphere containing a 3d point cloud in Matlab

我有一个保存在 PLY 文件中的三维点云。

以点(x,y,z)为球心,想绘制整个点云,但半径为R的球体包含点云的几个点,但不是全部云。

球体应该是非常透明的,以便让其内部的点可见。

我尝试了以下但没有成功:

% Read point cloud file
ptCloud = pcread('frame0000.ply');
% Show point cloud
pcshow(ptCloud);
hold on

% Sphere generation
[x, y, z] = sphere;
surf(x,y,z)
hold on 
% Sphere centered at (3, -2, 0)
surf(x+3,y-2,z) 

这样做,我得到了一个以 (3, -2, 0) 为中心的球体的图,但它需要球体内的所有点云。更重要的是,我看不到点云,因为球体是不透明的。

我怎样才能给球体一个特定的半径,让它只取半径 R 内的点? 还有,如何让球体透明但不可见,从而使球体内的点可见?

感谢所有回答!

有两件事:

  1. 创建一个球体 -- 使用 Matlab 函数 sphere,您可以创建一个单位球体。如果你想 shrink/enlarge,你可以将 x、y 和 z s' 乘以一个标量。确保在移动原点之前这样做。之后,您可以移动原点。

  2. 绘制球体并操纵绘图的属性 -- 在这里,您可以更改图形的属性以使其透明。可以在 Surface Properties.

  3. 找到各种选项

示例:

[x, y, z] = sphere;
mesh(3*x+3,3*y-2,3*z, 'Marker', '.', 'EdgeColor', 'flat', 'FaceColor', 'none', 'LineStyle', ':')
hold on;
plot3(3, -2, 0, '+r', 'MarkerSize', 20)