- 11
- 0
- 约1.34千字
- 约 4页
- 2017-08-18 发布于重庆
- 举报
圆中滚圆动画演示
圆中滚圆动画演示
设置参数
大圆半径R;小圆半径r;大圆圆心(0,0);小圆圆心
圆上一点A坐标
滚动过程中以,R,r为参数变化。在此A点都为圆上一个点,对于A为圆内点的情况另做考虑。
设A为圆内点,切距离圆心距离为d(dr),则A坐标为
figure(name,滚圆曲线);%设置标题名字
%t=0:0.01*pi:50*pi;
t=0;
s=0:0.01*pi:2*pi;
hold on;axis equal;
R=5;r=2;d=r;%参数更改区域 若A为圆上点则d=r,若为圆内点则取d(dr)
be=(1-r/R);
pausetime=0.002;%设置暂停时间
set(gcf,doublebuffer,on) %消除抖动
set(gca,xlim,[-8 8],ylim,[-8 8]);%设置坐标轴范围
plot(R*cos(s),R*sin(s));%大圆
p1=plot(r*cos(s)-(R-r)*sin((1-be)*t),r*sin(s)-(R-r)*cos((1-be)*t),color,b);%小圆初始位置
Ax=(R-r)*sin((1-be)*t)-d*sin(be*t); Ay=-(R-r)*cos((1-be)*t)-d*cos(be*t); %A点坐标值
p2=plot(Ax,Ay,color,r,marker,.,markersize,5); %圆上A点初始位置
orbit=line(xdata,Ax,ydata,Ay,color,r); %画A点的运动轨迹
for ii=1:5000
set(p1,xdata,r*cos(s)+(R-r)*sin((1-be)*t),ydata,r*sin(s)-(R-r)*cos((1-be)*t));%设置小圆的运动过程
pemx=(R-r)*sin((1-be)*t)-d*sin(be*t);pemy=-(R-r)*cos((1-be)*t)-d*cos(be*t);
set(p2,xdata,pemx,ydata,pemy);%设置A点运动过程
%p2x=[Ax,pemx];p2y=[Ay,pemy];
plot(pemx,pemy,color,b);
% set(orbit,xdata,p2x,ydata,p2y);%设置A点运动轨迹
% 但是这种设置并不能A点让轨迹被画出来,结果是把A点当前位置和初始位置连在了一起而已。
t=t+0.01*pi;
pause(pausetime); %暂停一会
drawnow
end
图1 设置参数为R=5,r=2,d=r
图2 参数设置为R=6,r=1,d=r
图3 参数设置为R=5,r=4,d=3
图4 参数设置R=7,r=4,d=r
图5 参数设置R=7,r=2.3,d=r。
图中还没有画成闭合曲线,还可以继续让小圆运动。
原创力文档

文档评论(0)