C语言编程齿轮轮廓线坐标,【100分高分】如何用C语言画齿轮?

满意答案

00e27ab806e4881f8254fe7ae8741834.png

daocitiwen

2014.03.16

00e27ab806e4881f8254fe7ae8741834.png

采纳率:59%    等级:12

已帮助:9668人

下面为C语言画凸轮形状程序

#include"stdarg.h"

#include"stdio.h"

#include"graphics.h"

#include"math.h"

#define H 60 /*最大行程*/

#define W 7.5 /*角速度(度/秒)*/

#define K 5 /*循环步骤*/

#define A1 45 /*各段角度*/

#define A2 210

#define A3 240

#define A4 360

#define X0 400 /*凸轮转轴坐标*/

#define Y0 280

#define pi 3.14159

#define t pi/180 /*度--》弧度*/

main() /*主程序*/

{float e,ro,rr,p,so,dx,dy,st,ct,C3,C4,C5; /*变量说明*/

float s[200],ds[200],dv[200],da[200],x[200],y[200],xp[200],yp[200];

int a=DETECT,b,i=0,w=0;

/*----------------------------------------*/

initgraph(&a,&b,"");

e=10; /*偏心距*/

ro=90; /*基圆半径*/

rr=20; /*滚子半径*/

so=sqrt(ro*ro-e*e);

/*-------------------------------------------*/

C3=(300-5*(A1/W))/pow((pi/4),3);/*五次方高斯方和三个参数*/

C4=((26.25(A1/W))-1350)/(pow(pi/4),4);/*五次方高斯方和三个参数*/

C5=(180-3.75(A1/W))/pow((pi/4),5);/*五次方高斯方和三个参数*/

for(p=0;p<=A4;p+=K)

{if(p<=A1)/*第一段:等加速等减速运动*/

{s[i]=C3*pow(p,3)+C4*pow(p,4)+C5*pow(p,5);

ds[i]=3*C3*W*pow(p,2)+4*C4*W*pow(p,3)+5*C5*pow(p,4);

dv[i]=6*C3*W*W*p+12*C4*W*W*pow(p,2)+20*C5*w*w*pow(p,4);

}

if(p>A1&&p<=A2)/*第二段:直线运动*/

{s[i]=30+27.5*(p-A1)/(A2-A1);

ds[i]=27.5*W/(A2-A1);

dv[i]=0;

}

if(p>A2&&p<=A3)/*第三段:正弦加速的减速半段(前三段为推程)*/

{s[i]=57.5+5*((p-A2)/2/(A3-A2)-sin(pi*(p-A2)/(A3-A2))/(2*pi));

ds[i]=5*W(1-cos(pi*(p-A2)/(A3-A2))/2/(A3-A2));

dv[i]=5*pow(W,2)*2*pi*sin(pi*(p-A2)/(A3-A2))/4/(A3-A2)/(A3-A2);

}

if(p>A3)/*第四段:正弦加速(回程)*/

{s[i]=H*(1-(p-A3)/120+sin(pi*(p-A3)/60)/2/pi);

ds[i]=H*W/(A4-A3)*(cos(2*pi*(p-A3)/(A4-A3))-1);

dv[i]=-2*pi*H*W*W/pow((A4-A3),2)*sin(2*pi*(p-A3)/(A4-A3));

}

da[i]=(atan((ds[i]/(W*t)-e)/(so+s[i])))/(t); /*压力角*/

x[i]=X0+(so+s[i])*sin(p*t)+e*cos(p*t); /*理论廓线坐标*/

y[i]=Y0+(so+s[i])*cos(p*t)-e*sin(p*t);

dx=(ds[i]-e)*sin(p*t)+(so+s[i])*cos(p*t); /*x微分*/

dy=(ds[i]-e)*cos(p*t)-(so+s[i])*sin(p*t); /*y微分*/

st=dy/sqrt(dx*dx+dy*dy); /*sin值*/

ct=dx/sqrt(dx*dx+dy*dy); /*cos值*/

xp[i]=x[i]+rr*st; /*外实际廓线坐标*/

yp[i]=y[i]-rr*ct;

i++;

}

/*----------------------------------------------------------*/

circle(X0,Y0,ro); /*画基圆*/

circle(X0,Y0,e); /*画偏距圆*/

for(w=0;w

{ line(x[w],y[w],x[w+1],y[w+1]); /*画理论廓线*/

line(xp[w],yp[w],xp[w+1],yp[w+1]); /*画外实际廓线*/

circle(x[w],y[w],rr); /*画滚子*/

}

circle(x[0],y[0],rr); /*滚子*/

circle(x[0],y[0],5); /*滚轴*/

circle(x[A1/K],y[A1/K],5); /*滚轴*/

circle(x[A2/K],y[A2/K],5);/*滚轴*/

circle(x[A3/K],y[A3/K],5);/*滚轴*/

circle(x[A4/K],y[A4/K],5);/*滚轴*/

line(X0+e,Y0,x[0],y[0]+50);/*3条导路方向线*/

line(X0+e*cos(60*t),Y0-e*sin(60*t),x[60/K],y[60/K]);

line(X0+e*cos(240*t),Y0-e*sin(240*t),x[240/K],y[240/K]);

arc(X0,Y0,0,50,100);/*凸轮转向*/

line(X0+100,Y0,X0+100-5,Y0-15);/*转向箭头*/

line(X0+100,Y0,X0+100+3,Y0-15);/*转向箭头*/

getch();

/*----------------------运动线图---------------------------------------*/

line(0,180,360,180);

line(0,240,360,240);

line(0,360,360,360);

line(0,0,0,480);

line(A1,0,A1,480);

line(A3,0,A3,480);

line(360,0,360,480);

for(w=0;w

{line(w*K,180-s[w],(w+1)*K,180-s[w+1]);

line(w*K,240-ds[w]*4,(w+1)*K,240-ds[w+1]*4);

line(w*K,360-dv[w]*10,(w+1)*K,360-dv[w+1]*10);

getch();

/*--------------------------------数据列表--------------------------------*/

printf(" p s ds dv a \n");

printf("=============================\n");

for(w=0;w<=A4/K;w=w+3)

{printf("%4d%10.2f%8.2f%8.2f%10.2f\n",w*K,s[w],ds[w],dv[w],da[w]);}

getch();

}

}

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值