(随手点个赞,养成好习惯)
平面连杆机构二级杆组子函数
基本杆组法
将平面连杆机构拆分成多个基本杆组,利用基本杆组的子函数集,求解运动副(其实就是个点)和杆件的运动(也就是点的位移,速度,加速度;构件的初始角位置和角速度,角加速度)。
实例分析
例题及要求
代码实现
人机交互部分,用来录入数据,分步录入,较少输入错误。
printf("请输入模式系数M:\n"); scanf("%lf",&M); printf("请输入原动件的初始角(rad)和角速度(rad/s),并用逗号分隔:\n"); scanf("%lf,%lf",&theta1,&theta1d); printf("请输入固定铰链A的坐标,并用逗号分隔:\n"); scanf("%lf,%lf",&xa,&ya); printf("请输入固定铰链D的坐标,并用逗号分隔:\n"); scanf("%lf,%lf",&xd,&yd); xdd = 0,xddd = 0; ydd = 0,yddd = 0; printf("请输入AB,BC,CD,EC,EF的长度(mm),并用逗号分隔:\n"); scanf("%lf,%lf,%lf,%lf,%lf",&l1,&l2,&l31,&l32,&l4);
调用函数:
1.调用曲柄子函数求解节点B;
2.调用RRR子函数求解节点C,构件2和构件3的方位角;
3.调用曲柄子函数求解节点E;
4.调用RRP子函数求解节点F,构件4的方位角;
QB(xa,xad,xadd,ya,yad,yadd,theta1,theta1d,theta1dd,&xb,&xbd,&xbdd,&yb,&ybd,&ybdd,&vb,&gammab,&ab,&betab); RRR(xb,xbd,xbdd,yb,ybd,ybdd,xd,xdd,xddd,yd,ydd,yddd,l2,l31,M,&theta2,&theta2d,&theta2dd,&theta3,&theta3d,&theta3dd,&xc,&xcd,&xcdd,&yc,&ycd,&ycdd,&vc,&gammac,&ac,&betac); QB(xd,xdd,xdd,yd,ydd,yddd,theta3,theta3d,theta3dd,&xe,&xed,&xedd,&ye,&yed,&yedd,&ve,&gammae,&ae,&betae); RRP(xe,xed,xedd,ye,yed,yedd,xd,xdd,xddd,yd,ydd,yddd,O,O,O,l4,M,&xf,&xfd,&xfdd,&yf,&yfd,&yfdd,&vf,&gammaf,&af,&betaf,&theta4,&theta4d,&theta4dd,&s,&sd,&sdd);
输出运算结果
printf("B点的坐标为(%lf,%lf),速度为%lf mm/s,速度方位角为%lf rad,加速度为%lf rad/(s^2),加速度方位角为%lf rad。\n",xb,yb,vb,gammab,ab,betab); printf("C点的坐标为(%lf,%lf),速度为%lf mm/s,速度方位角为%lf rad,加速度为%lf mm/s,加速度方位角为%lf rad。\n",xc,yc,vc,gammac,ac,betac); printf("E点的坐标为(%lf,%lf),速度为%lf mm/s,速度方位角为%lf rad,加速度为%lf mm/s,加速度方位角为%lf rad。\n",xe,ye,ve,gammae,ae,betae); printf("F点的坐标为(%lf,%lf),速度为%lf mm/s,速度方位角为%lf rad,加速度为%lf mm/s,加速度方位角为%lf rad。\n",xf,yf,vf,gammaf,af,betaf); printf("构件2的方位角为%lf rad,方位角速度为%lf rad/s,方位角加速度为%lf rad/(s^2)\n",theta2,theta2d,theta2dd); printf("构件3的方位角为%lf rad,方位角速度为%lf rad/s,方位角加速度为%lf rad/(s^2)\n",theta3,theta3d,theta3dd); printf("构件4的方位角为%lf rad,方位角速度为%lf rad/s,方位角加速度为%lf rad/(s^2)\n",theta4,theta4d,theta4dd); return 0;
运行结果及测试
(完结撒花,请大家多多支持,随手点个赞)
平面连杆机构二级杆组子函数