#include
#include
#define pi 3.1415926
#include
#include
#include
void main()
{ char str[10];
int alf=0,n=2000,i,j,gd,gm,t,q;
float mp=1.395,mc=2.135,mk=0.276,l=0.210,la=0.15098,lb=0.05902,
r=0.05754,d=0.095, mj, 活塞组的质量与连杆往复运动部分质量的和 pg[180]={
0.089,0.090,0.093,0.096,0.100,0.107,0.109,0.107,0.100,0.090,0.089,0.090, 0.094,0.095,0.095,0.094,0.094,0.093,0.092,0.090,0.091,0.092,0.093,0.095, 0.097,0.099,0.100,0.099,0.099,0.099,0.099,0.100,0.099,0.098,0.098,0.099, 0.099,0.100,0.100,0.099,0.100,0.100,0.100,0.101,0.105,0.108,0.110,0.108, 0.108,0.108,0.110,0.113,0.115,0.118,0.121,0.124,0.130,0.136,0.146,0.152, 0.160,0.172,0.190,0.205,0.225,0.231,0.220,0.200,0.220,0.240,0.260,0.300, 0.400,0.420,0.500,0.600,0.760,0.840,1.000,1.180,1.400,1.630,2.000,2.400,
2.820,3.430,3.700,4.400,5.060,5.400,6.600,7.000,8.080,8.600,8.730,8.230,
7.230,6.250,5.850,5.150,4.500,3.850,3.550,3.000,2.700,2.400,2.150,2.000, 1.700,1.550,1.400,1.300,1.150,1.100,1.000,0.960,0.920,0.850,0.810,0.800, 0.770,0.730,0.690,0.680,0.650,0.620,0.620,0.580,0.560,0.540,0.520,0.500, 0.480,0.350,0.380,0.370,0.250,0.240,0.230,0.210,0.200,0.150,0.150,0.157, 0.160,0.160,0.157,0.146,0.136,0.125,0.118,0.118,0.110,0.107,0.104,0.100, 0.100,0.096,0.093,0.093,0.089,0.086,0.082,0.079,0.075,0.075,0.070,0.070, 0.082,0.086,0.089,0.089,0.086,0.086,0.086,0.089,0.089,0.093,0.089,0.089 };
double a,lamd,m1,m2,omeg, arc ,alf1, pr,pk, Pg[180],Pj, p[180], ph[180],pc[180],pn[180], pt[180],rb[180],ro[180],bit; arc=pi/180 ( bit 角位移ß=arcsin(lamd*sinà) m1=mc*lb/l;
m2=mc*la/l;
omeg=pi*n/30;
mj=mp+m1;
arc=pi/180;
lamd=r/l;
printf("what we want to get:\n");
printf("%9s %9s %9s %9s %9s %9s %9s\n","alf","ph(N)",
"pc(N)","pt(N)", "pn(N)","rb(N)","ro(N)");
getch();
for(i=0;i
{ alf1=alf*arc;
bit=asin(lamd*sin(alf1));
pr=-m2*r*omeg*omeg; 连杆旋转部分质量的旋转惯性力 pk=-mk*r*omeg*omeg; 曲轴组的旋转惯性力
a=(r*(omeg*omeg)*cos(alf1)+r*(omeg*omeg)*lamd*cos(2*alf1)); Pj=-mj*a;
Pg[i]=pi*d*d*pg[i]*1000000/4; 气体作用力
p[i]=Pg[i]+Pj ;
ph[i]=p[i]*tan(bit);
pc[i]=p[i]/cos(bit);
pt[i]=p[i]*sin(alf1+bit)/cos(bit);
pn[i]=p[i]*cos(alf1+bit)/cos(bit);
rb[i]=sqrt(pt[i]*pt[i]+(pn[i]+pr)*(pn[i]+pr));
ro[i]=0.5*sqrt((pr+pk+pn[i])*(pr+pk+pn[i])+pt[i]*pt[i]);
printf("alf=%3d %12.4f%12.4f%12.4f%12.4f%12.4f%12.4f\n", alf,ph[i],pc[i],pt[i],pn[i],rb[i],ro[i]);
if(i%20==0)
{ printf("Press any key to continue:\n");
getch();
}
if(i==179)
{ printf("Press any key to continue:\n");
getch();
}
}
gd=DETECT;
initgraph(&gd,&gm,"e:\\TC\\BGI");
setviewport(10,10,600,470,0);
setcolor(15);
setbkcolor(1);
rectangle(40,25,580,440);
line(40,325,580,325);
q=35;
for(i=40,t=0;i
{ if(t%5==0) line(i,430,i,440);
else line(i,435,i,440); } system("cls");
for(j=0;j
{ itoa(j,str,10);
outtextxy(q,445,str);
q+=59;
}
for(i=25,t=0;i
{ if(t%5==0) line(40,i,50,i);
else line(40,i,45,i);
}
q=423;
for(j=-2000;j
{ itoa(j,str,10);
if(j>0) outtextxy(6,q,str);
else if(j==0) outtextxy(30,q,str);
else outtextxy(0,q,str);
q-=50;}
setcolor(12);
for(i=0;i
{ putpixel(40+3*i,325-ph[i]/20,4); circle(40+3*i,325-ph[i]/20,2); floodfill(40+3*i,325-ph[i]/20,RED); } for(i=0;i
setcolor(15);
settextstyle(0,0,1);
rectangle(40,10,580,440);
line(40,365,580,365);
q=35;
for(i=40,t=0;i
else line(i,435,i,440); } for(j=0;j
for(i=15,t=0;i
{ if(t%5==0) line(40,i,50,i); else line(40,i,45,i); }
q=413;
for(j=-10;j
{ itoa(j,str,10); if(j>0) outtextxy(20,q,str); else if(j==0) outtextxy(30,q,str); else outtextxy(15,q,str); q-=50;} setcolor(12); for(i=0;i
}
for(i=0;i
line(40+3*i,365-pc[i]/200,40+3*(i+1),365-pc[i+1]/200); }
setcolor(14);
outtextxy(220,460,"picture-2 pC=f(alfa)"); settextstyle(0,1,1); outtextxy(60,35,"pc(KN)");
getch();
cleardevice();
setcolor(15);
settextstyle(0,0,1);
rectangle(40,10,580,440);
line(40,300,580,300);
q=35;
for(i=40,t=0;i
else line(i,435,i,440); }
for(j=0;j
{ itoa(j,str,10);
outtextxy(q,445,str);
cleardevice();
setcolor(15);
settextstyle(0,0,1);
rectangle(40,10,580,440);
line(40,350,580,350);
q=35; setcolor(12); for(i=0;i0) outtextxy(20,q,str); else if(j==0) outtextxy(30,q,str); else outtextxy(15,q,str); q-=50;}
for(i=40,t=0;i
{ if(t%5==0) line(i,430,i,440);
else line(i,435,i,440); }
for(j=0;j
{ itoa(j,str,10);
outtextxy(q,445,str);
q+=59;
}
for(i=50,t=0;i
{ if(t%5==0) line(40,i,50,i);
else line(40,i,45,i);
}
q=397;
for(j=-10;j
{ itoa(j,str,10);
if(j>0) outtextxy(20,q,str);
else if(j==0) outtextxy(30,q,str);
else outtextxy(15,q,str);
q-=50;}
setcolor(12);
for(i=0;i
{
putpixel(40+3*i,350-pn[i]/200,4);
circle(40+3*i,350-pn[i]/200,2);
floodfill(40+3*i,350-pn[i]/200,RED);
}
for(i=0;i
line(40+3*i,350-pn[i]/200,40+3*(i+1),350-pn[i+1]/200); }
setcolor(14);
outtextxy(220,460,"picture-4 pn=f(alfa)");
settextstyle(0,1,1);
outtextxy(60,35,"pn(KN)");
getch();
cleardevice();
setcolor(15);
settextstyle(0,0,1);
rectangle(40,10,580,440);
line(40,410,580,410);
q=35;
for(i=40,t=0;i
{ if(t%5==0) line(i,430,i,440);
else line(i,435,i,440); }
for(j=0;j
{ itoa(j,str,10);
outtextxy(q,445,str);
q+=59;
}
for(i=50,t=0;i
{ if(t%5==0) line(40,i,50,i);
else line(40,i,45,i);
}
q=407;
for(j=0;j
{ itoa(j,str,10);
if(j>0) outtextxy(20,q,str);
else if(j==0) outtextxy(30,q,str);
else outtextxy(15,q,str);
q-=60;}
setcolor(12);
for(i=0;i
{
putpixel(40+3*i,410-rb[i]*6/1000,4);
circle(40+3*i,410-rb[i]*6/1000,2);
floodfill(40+3*i,410-rb[i]*6/1000,RED);
}
for(i=0;i
line(40+3*i,410-rb[i]*6/1000,40+3*(i+1),410-rb[i+1]*6/1000); }
setcolor(14);
outtextxy(220,460,"picture-5 rb=f(alfa)");
settextstyle(0,1,1);
outtextxy(60,35,"rb(KN)");
getch();
cleardevice();
setcolor(15);
settextstyle(0,0,1);
rectangle(40,10,580,440);
line(40,410,580,410);
q=35;
for(i=40,t=0;i
{ if(t%5==0) line(i,430,i,440);
else line(i,435,i,440); }
for(j=0;j
{ itoa(j,str,10);
outtextxy(q,445,str);
q+=59;
}
for(i=50,t=0;i
{ if(t%5==0) line(40,i,50,i);
else line(40,i,45,i);
}
q=407;
for(j=0;j
{ itoa(j,str,10);
if(j>0) outtextxy(20,q,str); else if(j==0) outtextxy(30,q,str); else outtextxy(15,q,str); q-=60;}
setcolor(12);
for(i=0;i
{
putpixel(40+3*i,410-ro[i]*6/500,4);
circle(40+3*i,410-ro[i]*6/500,2);
floodfill(40+3*i,410-ro[i]*6/500,RED);
}
for(i=0;i
line(40+3*i,410-ro[i]*6/500,40+3*(i+1),410-ro[i+1]*6/500); }
setcolor(14);
outtextxy(220,460,"picture-6 ro=f(alfa)");
settextstyle(0,1,1);
outtextxy(60,35,"ro(KN)");
getch();
closegraph();
}