【问题标题】:Plot sphere containing a 3d point cloud in Matlab在 Matlab 中绘制包含 3d 点云的球体
【发布时间】:2018-09-29 22:23:35
【问题描述】:

我有一个保存在 PLY 文件中的 3D 点云。

以一个点 (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 3d point-clouds


    【解决方案1】:

    有两件事:

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

    2. 绘制球体并操纵绘图的属性 -- 在这里,您可以更改图形的属性以使其透明。在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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2010-12-07
      • 2022-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多