关于contourslice函数的不明白之处。
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens

取弧面与圆柱面的交线的坐标数据时,为何用元胞数值存储?代码见下:
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);
0 commentaires
Réponse acceptée
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;
0 commentaires
Plus de réponses (1)
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;
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!