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

时间:2018-04-19 12:04:13

标签: matlab 3d point-clouds

我有一个保存在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 个答案:

答案 0 :(得分:4)

有两件事:

  1. 创建球体 - 使用Matlab函数sphere,您可以创建单位球体。如果你想缩小/放大,你可以乘以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)