我有一个保存在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内的点? 而且,如何使球体透明但不可见,以便球体内的点可见?
我感谢所有答案!
答案 0 :(得分:4)
有两件事:
创建球体 - 使用Matlab函数sphere
,您可以创建单位球体。如果你想缩小/放大,你可以乘以x,y和z s'用标量。确保在移动原点之前执行此操作。在那之后,你可以改变原点。
绘制球体并操纵绘图的属性 - 在这里,您可以更改图形的属性以使其透明。在Surface Properties可以找到各种选项。
示例:
[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)