关于contourslice函数的不明白之处。

3 Ansichten (letzte 30 Tage)
pcfftpwx
pcfftpwx am 22 Mai 2023
Beantwortet: mhwbrx am 22 Mai 2023
取弧面与圆柱面的交线的坐标数据时,为何用元胞数值存储?代码见下:
R=40;
t=linspace(0,pi/4,25);
p=linspace(0,2*pi,25);
[Fia,Theta]=meshgrid(t,p);
X=R*sin(Fia).*cos(Theta);
Y=R*sin(Fia).*sin(Theta);
Z=R*cos(Fia);
surf(X,Y,Z,'linestyle','none');
alpha(0.5);
hold on;
[x,y,z]=cylinder(8);
x=x+8;y=y+7;z(2,:)=50;
surf(x,y,z);
xlabel('x');ylabel('y');zlabel('z');
axis equal tight;grid on;box on;
view(135,0)
figure
[x,y,z]=meshgrid(linspace(-40,40));
f = (x-8).^2+(y-7).^2-64;
S=contourslice(x,y,z,f,X,Y,Z,[0 0]);%画交线
x_intersect=get(S,'XData');
y_intersect=get(S,'YData');
z_intersect=get(S,'ZData');
xlabel('x');ylabel('y');zlabel('z');
axis equal tight;grid on;box on;
view(135,20);

Akzeptierte Antwort

mhwbrx
mhwbrx am 22 Mai 2023
不用避免,因为这两个patch组成了你的截面:
R=40;
t=linspace(0,pi/4,25);
p=linspace(0,2*pi,25);
[Fia,Theta]=meshgrid(t,p);
X=R*sin(Fia).*cos(Theta);
Y=R*sin(Fia).*sin(Theta);
Z=R*cos(Fia);
surf(X,Y,Z,'linestyle','none');
alpha(0.5);
hold on;
[x,y,z]=cylinder(8);
x=x+8;y=y+7;z(2,:)=50;
surf(x,y,z);
xlabel('x');ylabel('y');zlabel('z');
axis equal tight;grid on;box on;
view(135,0)
figure
[x,y,z]=meshgrid(linspace(-40,40));
f = (x-8).^2+(y-7).^2-64;
S=contourslice(x,y,z,f,X,Y,Z,[0 0]);%画交线
S(1).Vertices
S(2).Vertices
x_intersect=get(S,'XData');
y_intersect=get(S,'YData');
z_intersect=get(S,'ZData');
xlabel('x');ylabel('y');zlabel('z');
axis equal tight;grid on;box on;

Weitere Antworten (1)

mhwbrx
mhwbrx am 22 Mai 2023
不用避免,因为这两个patch组成了你的截面:
R=40;
t=linspace(0,pi/4,25);
p=linspace(0,2*pi,25);
[Fia,Theta]=meshgrid(t,p);
X=R*sin(Fia).*cos(Theta);
Y=R*sin(Fia).*sin(Theta);
Z=R*cos(Fia);
surf(X,Y,Z,'linestyle','none');
alpha(0.5);
hold on;
[x,y,z]=cylinder(8);
x=x+8;y=y+7;z(2,:)=50;
surf(x,y,z);
xlabel('x');ylabel('y');zlabel('z');
axis equal tight;grid on;box on;
view(135,0)
figure
[x,y,z]=meshgrid(linspace(-40,40));
f = (x-8).^2+(y-7).^2-64;
S=contourslice(x,y,z,f,X,Y,Z,[0 0]);%画交线
S(1).Vertices
S(2).Vertices
x_intersect=get(S,'XData');
y_intersect=get(S,'YData');
z_intersect=get(S,'ZData');
xlabel('x');ylabel('y');zlabel('z');
axis equal tight;grid on;box on;

Kategorien

Mehr zu 图形对象属性 finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!