这是我的问题:我在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
任何帮助都将受到高度赞赏!
对于问题表单中的任何错误感到抱歉,因为这是我第一次访问此类网站。 如有必要,请询问任何进一步的解释。