【问题标题】:Plotting smooth surface using 3D points使用 3D 点绘制光滑表面
【发布时间】:2015-09-14 07:27:00
【问题描述】:

这是我需要在 matlab 中使用 3D 点创建的表面。

我有大量密集的 3D 点,我想使用这些点创建一个光滑的表面。我需要的表面类型在这里作为示例显示:

这些点采用 x、y 和 z 数组的形式,其中一些如下所示。

x = [195.758412316115   194.820087484229    193.880003014141    192.938917413610    191.998009541608. ],
y = [153.551961825705   153.449992277448    153.348399077453    153.246913790771    153.145452172192 ...],
z = [-45.8030209004629  -45.4679110367076   -45.1377265101793   -44.8100698973253   -44.4818298688393...].

这些点的3D图如下:

【问题讨论】:

标签: matlab 3d


【解决方案1】:

您可以使用 trisurf() 计算凸包和绘图。这是一个示例立方体:

x = [-1 1 -1 1 -1 1 -1 1]
y = [-1 -1 1 1 1 1 -1 -1]
z = [-1 -1 -1 -1 1 1 1 1]

C = convhull(x,y,z);
trisurf(C, x, y, z);

【讨论】:

  • 凸包不会恢复恐龙的形状,或其他任何东西。
【解决方案2】:

您可以尝试使用 surfl() 函数创建带阴影的曲面图,将阴影更改为 interpolate 模式并选择合适的颜色图(粉红色)

surfl(z)
colormap(pink)    % change color map
shading interp    % interpolate colors across lines and faces

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多