[原创]摆线的形成过程
摆线被称为“几何学中的海伦”,在物理中称为“最速降线”。摆线是一类重要的曲线,齿轮的齿廓、偏心轮、凸轮以及许多机器零件的轮廓线都是摆线,摆线的实用价值与椭圆、抛物线、渐开线等曲线相比毫不逊色。早在公元前140年前后,希腊天文学家希帕克就知道此种曲线。
德沙格在1639年,欧拉在1781年分别圆外旋轮线,德沙格首次用此种曲线来设计齿轮的齿形。
最近在上“行星传动设计”的课中,有一章是专门介绍摆线针轮行星传动的。一部分内容是摆线的形成原理及方程。用MATLAB编了几个程序,演示摆线的形成过程。
function cycloid(r,n)
fig=figure;
set(fig,'Color',);
% r=100;
% n=4;
theta=0:pi/100:2*pi;
x=r*(n*theta-sin(n*theta));% 摆线x坐标
y=r*(1-cos(n*theta)); % 摆线y坐标
x0=r*sin(theta-pi);% 圆x坐标
y0=r*cos(theta-pi); % 圆y坐标
xa=[-r,8*n*r];% 坐标轴x
ya=[-2.5*r,5*r];% 坐标轴y
m=length(theta);
mov=avifile('cycloid.avi');
for i=1:m
plot(xa,,'k',,ya,'k');
hold on
AA=*;
xr=AA(1,:);
yr=AA(2,:);
xr=xr+r*n*theta(i);
yr=yr+r;
plot(xr,yr);
plot(xr(1,),yr(1,),'k');
plot(xr(1,[(m-1)/4,(m-1)*3/4]),yr(1,[(m-1)/4,(m-1)*3/4]),'k');
plot(xr(1),yr(1),'og','linewidth',2,'markeredgecolor','k','markerfacecolor','g');
plot(x(1:i),y(1:i),'r','linewidth',2);
axis equal
axis off
F=getframe(gcf);
mov=addframe(mov,F);
hold off
end
mov = close(mov);
[ 本帖最后由 eight 于 2008-5-5 15:45 编辑 ] 定义:当半径为b的圆沿着半径为a的定圆的外侧无滑动地滚动时,动圆圆周上的一点p所描绘的点的轨迹。
在以定圆中心为原点的直角坐标系中,其方程为
x=(a+b)cosθ-bcos[(a+b)θ/b];
y=(a+b)sinθ-bsin[(a+b)θ/b];
function epicycloid(ra,rb)
fig=figure;
set(fig,'Color',);
theta=0:pi/50:2*pi;
xa=ra*cos(theta); % 定圆x坐标
ya=ra*sin(theta); % 定圆y坐标
xb=rb*cos(theta-pi); % 动圆x坐标
yb=rb*sin(theta-pi); % 动圆y坐标
xc=(ra+rb)*cos(theta)-rb*cos((ra+rb)*theta/rb); % 摆线x坐标
yc=(ra+rb)*sin(theta)-rb*sin((ra+rb)*theta/rb); % 摆线y坐标
xax=[-1.2*ra,1.2*ra];
yax=[-1.2*ra,1.2*ra];
m=length(theta);
mov=avifile('epicycloid.avi');
for i=1:m
plot(xax,,'k',,yax,'k');
hold on
plot(xa,ya,'k','linewidth',2);
plot(xc(1,),yc(1,),'r','linewidth',2);
AA=*;
xbb=AA(1,:);
ybb=AA(2,:);
xbb=xbb+(ra+rb)*cos(theta(i));
ybb=ybb+(ra+rb)*sin(theta(i));
plot(xbb,ybb,'b','linewidth',2);
plot(xbb(1),ybb(1),'o','linewidth',2,'markeredgecolor','k','markerfacecolor','g');
plot(,,'k',,,'k')
axis([-1.2*(ra+rb),1.2*(ra+rb),-1.2*(ra+rb),1.2*(ra+rb)]);
axis equal
axis off
F=getframe(gcf);
mov=addframe(mov,F);
hold off
end
mov = close(mov);
[ 本帖最后由 paradiseboy 于 2008-5-5 13:50 编辑 ] 定义:当半径为b的圆沿着半径为a(a>b)的圆的内侧无滑动滚动时,动圆圆周上一点p的轨迹。
在以定圆中心为原点的直角坐标系中,其方程为:
X=(a-b)cosθ+bcos[(a-b)θ/b];
Y=(a-b)sinθ-bsin[(a-b)θ/b];
function hypocycloid(ra,rb)
fig=figure;
set(fig,'Color',);
theta=0:pi/100:2*pi;
xa=ra*cos(theta); % 定圆x坐标
ya=ra*sin(theta); % 定圆y坐标
xb=rb*cos(theta); % 动圆x坐标
yb=rb*sin(theta); % 动圆y坐标
xc=(ra-rb)*cos(theta)+rb*cos((ra-rb)*theta/rb); % 摆线x坐标
yc=(ra-rb)*sin(theta)-rb*sin((ra-rb)*theta/rb); % 摆线y坐标
xax=[-1.2*ra,1.2*ra];
yax=[-1.2*ra,1.2*ra];
m=length(theta);
mov=avifile('hypocycloid.avi');
for i=1:m
plot(xax,,'k',,yax,'k');
hold on
plot(xa,ya,'k','linewidth',2);
plot(xc(1,),yc(1,),'r','linewidth',2);
AA=*;
xbb=AA(1,:);
ybb=AA(2,:);
xbb=xbb+(ra-rb)*cos(theta(i));
ybb=ybb+(ra-rb)*sin(theta(i));
plot(xbb,ybb,'b','linewidth',2);
plot(xbb(1),ybb(1),'o','linewidth',2,'markeredgecolor','k','markerfacecolor','g');
plot(,,'k',,,'k')
axis equal
axis off
F=getframe(gcf);
mov=addframe(mov,F);
hold off
end
mov = close(mov);
[ 本帖最后由 paradiseboy 于 2008-5-5 13:48 编辑 ] 很好,请问是原创吗 回管理员:
我不知道是否有其他人也编过这样的程序,上面的程序是我自己编写的。
程序中摆线是由摆线方程直接计算出来的,要理想一些,应该由动圆上一点的轨迹构成。我试了试,那样的话程序要稍麻烦一些,运行起来速度也稍慢。
程序写得不好,还请各位多多指教。
[ 本帖最后由 eight 于 2008-5-5 15:44 编辑 ] 原帖由 paradiseboy 于 2008-5-5 15:37 发表 http://www.chinavib.com/forum/images/common/back.gif
回管理员:
我不知道是否有其他人也编过这样的程序,上面的程序是我自己编写的。
程序中摆线是由摆线方程直接计算出来的,要理想一些,应该由动圆上一点的轨迹构成。我试了试,那样的话程序要稍麻烦一些,运行起来 ... 别紧张,我只是问问,既然是原创,就给你多加点威望 我只能说见过与第一个相似的程序。建议版主设置为“精华”:victory:
[ 本帖最后由 huright 于 2008-5-5 21:19 编辑 ] 很漂亮,真的好厉害哦,学习学习! 原帖由 huright 于 2008-5-5 20:26 发表 http://www.chinavib.com/forum/images/common/back.gif
建议版主设置为“精华”:victory: 已经设置
页:
[1]