yy.c

来自「在以前公司DOS环境下」· C语言 代码 · 共 80 行

C
80
字号
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
static 
int lmtspeedcal(ilen);

main(void)
{
 int len;
 printf("Please input the length:");
 scanf("%d",&len);
 printf("\nlspd=%d",lmtspeedcal(len));
}



int lmtspeedcal(int ilen)
{double knifecircle;
 double lengthref;
 double synangle;
 double lengthgap;
 double synlength;
 double lmtwidth;
 double heigthtemp;
 double shearlength;
 double topwtemp;
 double width;
 double ktemp;
 double knifemaxspeed;
 double lmtacc;
 double k1,k2,k;

 if(ilen>9999) return iSPD;
 if(ilen<500) return 0;

 knifecircle=dCIR*10.0;
 lengthref=ilen*10.0;
 shearlength=dANG/360.0*knifecircle;
 lengthgap=lengthref-knifecircle;
 synangle=dSYN;
 knifemaxspeed=dMAX*knifecircle*10.0/6.0/dRAT;
 lmtacc=dACC;

 if(lengthref<knifecircle)
  synangle=90.0-0.015*(knifecircle-lengthref);
 synlength=knifecircle*synangle/360.0;
 lmtwidth=2.0*knifecircle-shearlength-synlength;
 if(lengthref>lmtwidth)
  {width=lmtwidth-shearlength-synlength;
   heigthtemp=1.0;
   topwtemp=lengthref-lmtwidth;
  }
 else
  {width=lengthref-shearlength-synlength;
   heigthtemp=2.0*lengthgap/width;
   topwtemp=0;
  }

 ktemp=3.0*heigthtemp/width;

 if(lengthref<knifecircle-200.0)
  { k1=knifemaxspeed/(1.0-heigthtemp);
    k2=sqrt(-1000.0*lmtacc/ktemp);
    k=max(k1,k2);
  }
 else if(lengthref>knifecircle+200.0)
  { k1=knifemaxspeed;
    k2=sqrt(1000.0*lmtacc/ktemp);
    k=min(k1,k2);
  }
 else
  k=0.9*knifemaxspeed;

 return min((int)(0.5+6.0*k/1000.0),iSPD);
}




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?