matlab r0,请教matlab变化圆心画圆具体函数如下:R0=100;r=27.5;L1=180;L2=105;du=180/pi;wt3=0:1:75;Y0=(acos((L1^2+L2^2-...

7d14a2b81882cfe4494b096a84150b2a.png 优质解答

第一种和第二种是动态的,第三种是静态的

1、3D版

clear all;

clc;

R0=100;

r=27.5;

L1=180;

L2=105;

du=180/pi;

wt3=0:1:75;

Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;

Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;

Y=Y0+Y1;

R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));

%以上为公式

%hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示

%axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似

x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定

y=zeros(1,76);% x,y的长度由0:75决定,所以为76

%以上为缩小范围

for i=0:1:75 %画曲线

x(i+1)=R(i+1)*cos(i*pi/180.0);

y(i+1)=R(i+1)*sin(i*pi/180.0);

k=1;

for t=0:0.1:2*pi %画圆

m(k)=x(i+1)+r*cos(t);

n(k)=y(i+1)+r*sin(t);

k=k+1;

end

z=repmat(i,1,k-1);

plot3(m,n,z,'r');

axis([-20 220 -40 200 0 78]);

hold on

plot3(x(1:i+1),y(1:i+1),0:i,'b');

pause(0.1);

% 将绘图语句放在循环外

% hold on % a 如:把hold on语句放在此处也行

end

2、2D版

clear all;

clc;

R0=100;

r=27.5;

L1=180;

L2=105;

du=180/pi;

wt3=0:1:75;

Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;

Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;

Y=Y0+Y1;

R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));

%以上为公式

hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示

axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似

x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定

y=zeros(1,76);% x,y的长度由0:75决定,所以为76

%以上为缩小范围

for i=0:1:75 %画曲线

x(i+1)=R(i+1)*cos(i*pi/180.0);

y(i+1)=R(i+1)*sin(i*pi/180.0);

k=1;

for t=0:0.1:2*pi %画圆

m(k)=x(i+1)+r*cos(t);

n(k)=y(i+1)+r*sin(t);

k=k+1;

end

plot(m,n,'r');

axis([-20 220 -40 200]);

hold on

plot(x(1:i+1),y(1:i+1),'b');

pause(0.1);

% 将绘图语句放在循环外

% hold on % a 如:把hold on语句放在此处也行

end

3、静态2D版

clear all;

clc;

R0=100;

r=27.5;

L1=180;

L2=105;

du=180/pi;

wt3=0:1:75;

Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*du;

Y1=23.9123*(pi*wt3/75-0.5*sin(2*pi*wt3/75))/pi;

Y=Y0+Y1;

R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));

%以上为公式

hold on;% 加上hold on使得所有图形都在一张图上,按照matlab顺序执行的特点,hold on不能放在多重绘图语句的最后面,一般放在第一个绘图语句的前面或者第一第二个语句的中间都行,如:a注释所示

axis equal% 是一种对当前图形句柄的修正命令,放在任意位置都行,注意只对当前图形句柄有效,对于动态图,其用法跟hold on类似

x=zeros(1,76);% 删除m,n的预开辟内存空间的语句,因为他们的长度是由0:0.1:2*pi的长度决定

y=zeros(1,76);% x,y的长度由0:75决定,所以为76

%以上为缩小范围

for i=0:1:75 %画曲线

x(i+1)=R(i+1)*cos(i*pi/180.0);

y(i+1)=R(i+1)*sin(i*pi/180.0);

k=1;

for t=0:0.1:2*pi %画圆

m(k)=x(i+1)+r*cos(t);

n(k)=y(i+1)+r*sin(t);

k=k+1;

end

plot(m,n,'r');

axis([-20 220 -40 200]);

hold on

plot(x(1:i+1),y(1:i+1),'b');

% 将绘图语句放在循环外

% hold on % a 如:把hold on语句放在此处也行

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值