0

我怎样才能让这两个表面在 y 平面上彼此重叠。我尝试使用此代码,但没有用。有人可以提供想法吗?我尝试了几种方法,但都无法正常工作

Cx=1/80;
Cy=1/70;
M=6;
Dr=20;

n=2^(M-1);
Vertex=[0 0 0];
phi = (linspace(-pi,pi,n));
r=(linspace(0,Dr,n))';

x = -r*cos(phi)+Vertex(1);

y = -r*sin(phi)+Vertex(2);

z=(Cx*x.^2+Cy*y.^2)./(1+(1-sqrt(Cx*x.^2+Cy*y.^2).^2)./(x.^2+y.^2))+Vertex(3);

surf(z,x,y)
axis
set(gca, 'YDir','reverse');    
xlabel('X-axis','fontweight','bold');
ylabel('Z-axis','fontweight','bold');
zlabel('Y-axis','fontweight','bold');
hold on
Vertex=[pi pi pi];
phi = (linspace(-pi,pi,n));
r=(linspace(0,Dr,n))';

x = -r*cos(phi)+Vertex(1);

y = -r*sin(phi)+Vertex(2);

z=(Cx*x.^2+Cy*y.^2)./(1+(1-sqrt(Cx*x.^2+Cy*y.^2).^2)./(x.^2+y.^2))+Vertex(3);

surf(z,x,y)
axis 
set(gca, 'YDir','reverse');    
xlabel('X-axis','fontweight','bold');
ylabel('Z-axis','fontweight','bold');
zlabel('Y-axis','fontweight','bold');

编辑

这个想法是产生类似的东西:

M=5;
n=2^(M-1);
c=1/20;
Dr=1/10;
k=-1;
Vertex=[0 0 0];

phi = (linspace(0,2*pi,n));
r=(linspace(0,Dr,n))';

x = r*cos(phi)+Vertex(1);
y = r*sin(phi)+Vertex(2);
z = (c*((r*cos(phi)).^2+(r*sin(phi)).^2))./ ...
    (1+sqrt(1-(1+k)*c^2*((r*cos(phi)).^2+ ...
    (r*sin(phi)).^2)))+Vertex(3);

surf(x,z,y);

set(gcf, 'Renderer', 'ZBuffer')
hold on
Vertex=[0 0.399 0];

phi = (linspace(0,2*pi,n));
r=(linspace(0,Dr,n))';

x = r*cos(phi)+Vertex(1);
y = r*sin(phi)+Vertex(2);
z = (c*((r*cos(phi)).^2+(r*sin(phi)).^2))./ ...
    (1+sqrt(1-(1+k)*c^2*((r*cos(phi)).^2+ ...
    (r*sin(phi)).^2)))+Vertex(3);

surf(x,z,y)
4

0 回答 0