0

我想通过以下方式绘制一个夸张的 3D 图,该图在其底部被切割(图)

有任何想法吗?在此处输入图像描述

4

1 回答 1

1

好的,这是我对你的问题的看法。这是我一直在使用的实验脚本:

%%# first part    
%#------------------

clf

%# use cylinder to get unit cone
[x,y,z] = cylinder( linspace(1, 0, 1e3), 1e3);

%# intersect the cone with this surface
inds = z < (cos(x).*sin(pi*y/2)+1)/4;

x(inds) = NaN; %# remove all corresponding 
y(inds) = NaN; %# indices, in all arrays
z(inds) = NaN;

%# Now plot the cone. Note that edges are ugly when 
%# using a large number of points
surf(x, y, z, 'edgecolor', 'none');

%%# second part
%#------------------

hold on

%# the surface to intersect the cone with
f = @(x,y) (cos(x).*sin(pi*y/2)+1)/4;

%# add the surfacfe to the cone plot
[x,y] = meshgrid( linspace(-1,1, 1e3) );
surf(x,y, f(x,y), 'edgecolor', 'none')

第一部分显示与曲线相交的圆锥。您可能需要稍微修改一下曲线以使整体形状正确,这就是第二部分的用途。

如果你想要一个抛物面(或其他),只需使用

[x,y] = meshgrid( linspace(-1,1, 1e3) );
z = 1-x.^2-y.^2;  %# or whatever other equation

而不是cylinder命令。

于 2012-09-18T06:54:52.850 回答