资源描述:
《平面机构运动分析c语言程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/******************运动分析子程序*****************/#include#include#definePI3.1415926/**********单杆运动分析子函数barm**********/voidbarm(intp1,intp2,intm1,doublel1,doubleang,doublet[10],doublew[10],doublee[10],doublep[20][2],doublevp[20][2],doubleap[20][2])/*p1,p2为单杆的端点,m1为构件号,l1为单
2、杆长度,ang原动件起始位置角,t,w,e分别对应存放单杆的位置角,角速度,角加速度的二维数组,p,vp,ap分别存放点的位置坐标,速度,加速度*/{doublelx2,ly2,co,si;/*中间变量*/co=cos(t[m1]+ang);si=sin(t[m1]+ang);lx2=l1*co;ly2=l1*si;p[p2][0]=p[p1][0]+lx2;/*杆上点的位置*/p[p2][1]=p[p1][1]+ly2;vp[p2][0]=vp[p1][0]-ly2*w[m1];/*杆上点的速度*/vp[p2][1]=vp[p1][1]+lx2*w[m1];a
3、p[p2][0]=ap[p1][0]-ly2*e[m1]-lx2*w[m1]*w[m1];/*杆上点的加速度*/ap[p2][1]=ap[p1][1]+lx2*e[m1]-ly2*w[m1]*w[m1];}/**********rrrⅡ级组运动分析子函数**********/voidrrrm(intmodel,intp1,intp2,intp3,intm1,intm2,doublel1,doublel2,doublet[10],doublew[10],doublee[10],doublep[20][2],doublevp[20][2],doubleap[20][
4、2])/*model为装配模数1或-1,p1,p2均为已知点号,p3为中间转动副点号,m1,m2分别为构件号,l1,l2分别为构件长度,数组t,w,e分别存放构件角位置,角速度,角加速度,数组p,vp,ap分别存放构件位置坐标,速度,加速度*/{doubledelx,dely,det,ssq,d,gam,tem,q,ea,eb;/*定义中间变量*/doubledx31,dy31,dx32,dy32,dvx21,dvy21;delx=p[p2][0]-p[p1][0];dely=p[p2][1]-p[p1][1];ssq=delx*delx+dely*dely;d
5、=sqrt(ssq);if((d-l1-l2>0)
6、
7、((fabs(l1-l2)-d)>0))/*判断rrr杆组是否能够组装*/printf("RRRcan'tbeassembled.");else{det=atan2(dely,delx);tem=(d*d+l1*l1-l2*l2)/2.0/d/l1;gam=acos(tem);t[m1]=det+model*gam;/*求出构件一角位置*/p[p3][0]=p[p1][0]+l1*cos(t[m1]);/*求出中间转动副位置坐标*/p[p3][1]=p[p1][1]+l1*sin(t[m1]);dx3
8、1=p[p3][0]-p[p1][0];dy31=p[p3][1]-p[p1][1];dx32=p[p3][0]-p[p2][0];dy32=p[p3][1]-p[p2][1];t[m1]=atan2(dy31,dx31);t[m2]=atan2(dy32,dx32);/*求出构件二角位置*/q=dx31*dy32-dx32*dy31;dvx21=vp[p2][0]-vp[p1][0];dvy21=vp[p2][1]-vp[p1][1];w[m1]=(dvx21*dx32+dvy21*dy32)/q;/*以下两行分别求出构件一二角速度*/w[m2]=(dvx21
9、*dx31+dvy21*dy31)/q;vp[p3][0]=vp[p1][0]-l1*w[m1]*sin(t[m1]);vp[p3][1]=vp[p1][1]+l1*w[m1]*cos(t[m1]);ea=ap[p2][0]-ap[p1][0]+dx31*w[m1]*w[m1]-dx32*w[m2]*w[m2];eb=ap[p2][1]-ap[p1][1]+dy31*w[m1]*w[m1]-dy32*w[m2]*w[m2];e[m1]=(ea*dx32+eb*dy32)/q;/*以下两行分别求出构件一二角加速度*/e[m2]=(ea*dx31+eb*dy31)/
10、q;ap[p3][0]=