找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2983|回复: 0
打印 上一主题 下一主题
收起左侧

C语言计算凸轮源程序

[复制链接]
跳转到指定楼层
楼主
ID:585024 发表于 2019-7-17 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {  int  r0=20,  r1=10;
  5.   double  a,b,c,m,d,x,y,x1,y1,s,h;

  6.   for( a=0;a>=0&&a<=360;a=a+5)
  7.   {  if(a>=0&&a<=120)
  8.     {  s=30*a/180;    m=(atan2(30,((r0+s)*3.14))*180)/3.14;
  9.        b=30*sin(3.14*a/180)/3.14+(r0+s)*cos(3.14*a/180);  c=30*cos(3.14*a/180)/3.14-(r0+s)*sin(3.14*a/180);
  10.     x=(r0+s)*sin(3.14*a/180);
  11.        y=(r0+s)*cos(3.14*a/180);
  12.         d=b/sqrt(b*b+c*c);  h=-c/sqrt(b*b+c*c);
  13.         x1=x-r1*h;     y1=y-r1*d;
  14.     printf("%f\t%f\t%f\t%f\t%f\t%f\n",a,x,y,x1,y1,m);}
  15.      if(a>120&&a<=180)
  16. {  s=20;     m=0;
  17.       b=(r0+s)*cos(3.14*a/180);    c=-(r0+s)*sin(3.14*a/180);
  18.   //b=-320*a/(180*3.14)*sin(3.14+3.14*a/180)+(r0+s)*cos(3.14+3.14*a/180)
  19.   x=(r0+s)*sin(3.14*a/180);
  20.         y=(r0+s)*cos(3.14*a/180);
  21.         d=b/sqrt(b*b+c*c);  h=-c/sqrt(b*b+c*c);
  22.          x1=x-r1*h;     y1=y-r1*d;
  23.   printf("%f\t%f\t%f\t%f\t%f\t%f\n",a,x,y,x1,y1,m);}
  24.   if(a>180&&a<=225)
  25. {  s=20-160*(a*3.14/180-3.14)/(3.14*3.14);   m=(atan2((320*(a*3.14-180*3.14)),(r0+s)*180*3.14*3.14))*180/3.14;
  26.       b=-320*(a-180)/(180*3.14)*sin(3.14*a/180)+(r0+s)*cos(3.14*a/180);
  27.          c=-320*(a-180)/(180*3.14)*cos(3.14*a/180)-(r0+s)*sin(3.14*a/180);
  28.    x=(r0+s)*sin(3.14*a/180);
  29.          y=(r0+s)*cos(3.14*a/180);
  30.          d=b/sqrt(b*b+c*c);  h=-c/sqrt(b*b+c*c);
  31.          x1=x-r1*h;     y1=y-r1*d;
  32.    printf("%f\t%f\t%f\t%f\t%f\t%f\n",a,x,y,x1,y1,m);}
  33.   if(a>225&&a<=270)
  34. {  s=40*((315-a)/90)*((315-a)/90);
  35.       m=(atan2(160*(315-a),90*3.14*(r0+s)))*180/3.14;
  36.    b=-160*(a-315)/(90*3.14)*sin(3.14*(a-45)/180)+(r0+s)*cos(3.14*(a-45)/180);
  37.    c=-160*(a-315)/(90*3.14)*cos(3.14*(a-45)/180)-(r0+s)*sin(3.14*(a-45)/180);
  38.    x=(r0+s)*sin(3.14*a/180);
  39.          y=(r0+s)*cos(3.14*a/180);
  40.          d=b/sqrt(b*b+c*c);  h=-c/sqrt(b*b+c*c);
  41.          x1=x-r1*h;     y1=y-r1*d;
  42.           printf("%f\t%f\t%f\t%f\t%f\t%f\n",a,x,y,x1,y1,m);}
  43.   if(a>270&&a<=360)
  44. {  s=0;  m=0;
  45.       b=(r0+s)*cos(3.14*a/180);
  46.    c=-(r0+s)*sin(3.14*a/180);
  47.    x=(r0+s)*sin(3.14*a/180);
  48.           y=(r0+s)*cos(3.14*a/180);
  49.          d=b/sqrt(b*b+c*c);  h=-c/sqrt(b*b+c*c);
  50.          x1=x-r1*h;     y1=y-r1*d;
  51.     printf("%f\t%f\t%f\t%f\t%f\t%f\n",a,x,y,x1,y1,m);}
  52.   }
  53.   return 0;
  54.   
  55. }

复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表