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

3 vues (au cours des 30 derniers jours)
pcfftpwx
pcfftpwx le 22 Mai 2023
Réponse apportée : mhwbrx le 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);

Réponse acceptée

mhwbrx
mhwbrx le 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;

Plus de réponses (1)

mhwbrx
mhwbrx le 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;

Catégories

En savoir plus sur 图形对象属性 dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!