Matlab 使用轮廓切片获得等值面边界?

Matlab 使用轮廓切片获得等值面边界?,matlab,matlab-figure,matlab-guide,Matlab,Matlab Figure,Matlab Guide,我有个问题。我目前有一个3D曲面的数据,它描述了一个复杂的三角函数f(rho1,rho2,beta)=0。我使用等值面获得了这些数据,因此: [rho1,rho2,beta] = meshgrid(linspace(pi,0,100),linspace(0,pi,100),linspace(0,pi/2,100)); data = sin(rho1).*sin(rho2) + sin(beta).^3 + cos(2.*beta).*sin(beta).*cos(rho2) + sin(bet

我有个问题。我目前有一个3D曲面的数据,它描述了一个复杂的三角函数f(rho1,rho2,beta)=0。我使用等值面获得了这些数据,因此:

[rho1,rho2,beta] = meshgrid(linspace(pi,0,100),linspace(0,pi,100),linspace(0,pi/2,100));

data = sin(rho1).*sin(rho2) + sin(beta).^3 + cos(2.*beta).*sin(beta).*cos(rho2) + sin(beta).^3.*cos(rho1).*cos(rho2).^2 + cos(2.*beta).*sin(beta).*cos(rho1).*cos(rho2) - cos(beta).^2.*sin(beta).*cos(rho1) + sin(beta).*cos(rho1).*sin(rho2).^2 + 2.*cos(beta).^2.*sin(rho1).*sin(rho2) + cos(beta).^2.*sin(beta).*cos(rho2).^2 + 2.*sin(beta).^2.*cos(rho2).*sin(rho1).*sin(rho2);

fv = isosurface(rho1,rho2,beta,data,0);
p = patch(fv);
isonormals(rho1,rho2,beta,data,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';
daspect([1,1,1])
view(3); axis tight
camlight  
lighting gouraud
我试图用3D绘制这个表面的几个“切片”。目前我正在使用contourslice。我知道该函数基于曲面的体积表示来插值轮廓。我希望等高线精确(或尽可能接近数字)位于我的体积边界。我目前有:

hold on
s = contourslice(rho1, rho2, beta, data, [], [], [pi/4], 1, 'nearest'); 
view(3); 
grid on;
这是使用“最近”插值方法在pi/4处的一个z切片。这并没有给我想要的

非常感谢您的帮助


通过使用等值面函数中的面/顶点数据,并将这些向量组合成一个循环,在给定某个z值的情况下找到x,y对,我能够找到各种答案:

fv = isosurface(rho1,rho2,beta,data,0);
x=fv.vertices(:,1); y=fv.vertices(:,2); z=fv.vertices(:,3);
x_ring = [];
y_ring = [];
for i =1:length(z)
    if z(i)>pi/4-.01 && z(i)<pi/4+.01
        x_ring = [x_ring x(i)];
        y_ring = [y_ring y(i)];
    end
end
z_ring = ones(length(x_ring))*pi/4;
根据“切片”宽度,我们可以得到大约1%以内的面积

你同意吗

[k, area] = boundary(x_ring',y_ring');
hold on
plot3(x_ring(k)',y_ring(k)',z_ring(k)')