问题补充:
这个程序是编程的一个公式,要调用一个子程序,能不能写成一个不用调用的,一主程序就能画出来图。因为,后续我要变换子程序的角度来制作动画。。有子程序我不太会。。
clear all;
clc
format long
R=17;
T=8;
B=6;
r=4;
global x y
xx=-T/2:0.2:T/2;
yy=-B/2:0.2:B/2;
m=length(xx);
n=length(yy);
options = optimset('Display','off');%不显示中间结果
z=zeros(m,n);
for i=1:m
x=xx(i);
for j=1:n
y=yy(j);
z(i,j)=fsolve(@obj,0.01,options);
end
end
%绘制图形
[X,Y]=meshgrid(xx,yy);
X=X';
Y=Y';
X1=real(X);
Y1=real(Y);
z1=real(z);
surf(X1,Y1,z1);
xlabel('x/mm');
ylabel('y/mm');
zlabel('d/mm');
title('figure:d');
colormap(gray);
子程序
function f=obj(z)
global x y;
%已知数据
R=17;
r=4;
b=-pi/10;
%方程
temporary=sqrt((R-sqrt(r^2-(y*cos(b)-(R-z)*sin(b))^2))^2-x^2);
f=z*cos(b)-y*sin(b)+R*(1-cos(b))-temporary;