机械原理课程设计 凸轮机构设计 C程序

/*本程序为凸轮机构设计,逆时针,运动过程为:等加速45,等减速45,远休止90,正弦加速120,近休止60*/
#include
#include
#include
#include
main()
{
FILE *fp;
int a,step;
float r0=50,rr=10,e=20,h=20;
double pi=3.14159,s,s0,x,y,x1,y1,a0,a1,a2,a3;
double b,b1,b2,c1,c2;
char filename[20];
printf("please input filename you want to save date:");//输入需要保存数据结果的文件名(不需要加类型后缀)
gets(filename);
strcat(filename,".txt");
fp=fopen(filename,"w");
printf("input start angle and step angle:");//输入起始角度和计算间隔即步进角度
scanf("%d%d",&a,&step);
for(a;a<=360;a=a+step)
{
a1=a*pi/180;
s0=sqrt(r0*r0-e*e); printf("s0= %f\n",s0);
if(a>=0&&a<=360)
{
if(a>=0&&a<=45)
{
a0=90*pi/180;
s=2*h*a1*a1/a0/a0;printf("s= %f\n",s);
b=4*h*a1/a0/a0;printf("ds/dδ= %f\n",b);
a3=(b-e)/(s0+s);printf("tanα= %f\n",a3);
}
if(a>45&&a<=90)
{
a0=90*pi/180;
s=h-2*h*(a0-a1)*(a0-a1)/a0/a0;printf("s= %f\n",s);
b=4*h*(a0-a1)/a0/a0;printf("ds/dδ= %f\n",b);
a3=(b-e)/(s0+s);printf("tanα= %f\n",a3);
}
if(a>90&&a<=180)
{
a0=90*pi/180;
s=20;printf("s= %f\n",s);
b=0;printf("ds/dδ= %f\n",b);
}
if(a>180&&a<=300)
{
a0=120*pi/180;
a2=(a-180)*pi/180;
s=h*(1-(a2/a0)+sin(2*pi*a2/a0)/(2*pi));printf("s= %f\n",s);
b=h*(cos(2*pi*a2/a0)-1)/a0;printf("ds/dδ= %f\n",b);
}
if(a>300&&a<=360)
{
a0=60*pi/180;
s=0;printf("s= %f\n",s);
b=0;printf("ds/dδ= %f\n",b);
}
x=(s0+s)*sin(a1)+e*cos(a1);printf("x= %f\n",x);
y=(s0+s)*cos(a1)-e*sin(a1);printf("y= %f\n",y);
b1=(b-e)*sin(a1)+(s0+s)*cos(a1);printf("dx/dδ= %f\n",b1);
b2=(b-e)*cos(a1)-(s0+s)*sin(a1);printf("dy/dδ= %f\n",b2);
c1=b1/sqrt(b1*b1+b2*b2);printf("sinθ= %f\n",c1);
c2=-b2/sqrt(b1*b1+b2*b2);printf("cosθ= %f\n",c2);
x1=x-rr*c2;printf("x'= %f\n",x1);
y1=y-rr*c1;printf("y'= %f\n",y1);

fprintf(fp,"δ=%d, s=%7.3f, x=%7.3f, y=%7.3f, x'=%7.3f, y'=%7.3f\n",a,s,x,y,x1,y1);

}
else printf("输出错误\n");
}fclose(fp);
}

相关文档
最新文档