在 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 内的点?
还有,如何让球体透明但不可见,从而使球体内的点可见?
感谢所有回答!
有两件事:
创建一个球体 -- 使用 Matlab 函数 sphere
,您可以创建一个单位球体。如果你想 shrink/enlarge,你可以将 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)
我有一个保存在 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 内的点? 还有,如何让球体透明但不可见,从而使球体内的点可见?
感谢所有回答!
有两件事:
创建一个球体 -- 使用 Matlab 函数
sphere
,您可以创建一个单位球体。如果你想 shrink/enlarge,你可以将 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)