在MATLAB图中隐藏补丁曲面的一部分

时间:2014-06-19 08:01:07

标签: matlab-figure

这是我的问题:我在3D绘图中有一个MATLAB补丁表面,我想隐藏它的一部分。

补丁创建如下:

%% Setting parameters

alfa=1;
beta=1;
vth=1;

%% Initalize tridimensional grid

[x,y,z]=meshgrid(0:1:beta+1, 0:1:beta+1, -1/alfa:0.1:beta/alfa);

%% Evaluate sigma, a function of x,y and z

sigma = (beta-y)/(vth)+lambertw(-alfa*z/(vth).*exp((y-beta)/(vth)))-...
 (1-x)/(vth)-lambertw(alfa*z/(vth).*exp((x-1)/(vth)));

%% Create a patch for the isosurface sigma=0

patch(isosurface(x,y,z,sigma,0),'FaceColor','blue','EdgeColor','none');

hold on

请注意,“lambertw”是Lambert W函数。 一旦创建了补丁,我就将它绘制在一个3D图形上,并与给定顶点的四面体一起绘制:

%% Tetrahedron T

FV.vertices=[ 0 0 -1/alfa
        0 0 beta/alfa
        beta+1 0 beta/alfa
        0 beta+1 -1/alfa ];
FV.faces=nchoosek([1 2 3 4],3);
FV.facevertexcdata=rand(4,3);
FV.facecolor='interp';
grid
patch(FV)
view(3)
alpha(0.2)

现在,我想要获得的是隐藏位于四面体T外侧的表面sigma = 0的部分,因此该图仅显示T和表面的剩余部分。

请注意,四面体T定义为以下坐标集:

0 <= x <= beta+1
0 <= y <= beta+1
(x-1)/alfa <= z <= (beta-y)/alfa

任何帮助都将受到高度赞赏!

对于问题表单中的任何错误感到抱歉,因为这是我第一次访问此类网站。 如有必要,请询问任何进一步的解释。

0 个答案:

没有答案