/* RPR杆组运动分析子程序 */
Void RPR() {
u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1;
i1 = u * u + v * v - (l 1 - w) * (l 1 - w); if ( i1 < 0)
cout<<( \else
{ l2 = sqrt( i1);
n = v + m * (l 1 - w); d = u – l 2;
ct2 = 2 * atan(n / d );
if ( d < 0 && n > 0 ) ct2 += 2 * PI; else if ( d < 0 && n < 0 ) ct2 -= 2 * PI; ct1 = ct2 - m * PI/2; a5 = -cos(ct2) a6 = -sin(ct2)
a7 = -(l 1 - w) * sin(ct1) + l 2 * sin(ct2) a8 = (l 1 - w) * cos(ct1) – l 2 * cos(ct2) if (Abs(l 2) <1e-9)
cout<<( \ else
{ cv1 = (a6 * u1 - a5 * v1) / (-l 2); cv2 = cv1;
l v2 = (a7 * v1 - a8 * u1) / (-l 2);
e2 = u2 + a8 * cv1 * cv1 + 2 * a6 * lv2 * cv1; f2 = v2 - a7 * cv1 * cv1 - 2 * a5 * lv2 * cv1; ca1 = (a6 * e2 - a5 * f2) / (-l 2); ca2 = ca1;
l a2 = (a7 * f2 - a8 * e2) / (-l 2); }
} }
10
/* PRP杆组运动分析子程序 */
void PRP() {
u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1; a1 = cos(ct1) ; a2 = cos(ct2) ; a3 = sin(ct1) ; a4 = sin(ct2);
d8 = a2 * a3 - a1 * a4; if ( fabs ( d8 ) <= 1e-9 )
cout<<(\else
{ e1 = u - a3 * h1 - a4 * h2; f1 = v + a1 * h1 + a2 * h2; l 1 = (a2 * f1 - a4 * e1) / d8; l 2 = (a1 * f1 - a3 * e1) / d8; x3 = x1 + a1 * l 1 + a3 * h1; y3 = y1 + a3 * l 1 - a1 * h1; a5 = a1 * l 1 + a3 * h1; a6 = a3 * l 1 - a1 * h1; a7 = a2 * l 2 - a4 * h2; a8 = a4 * l 2 + a2 * h2;
e2 = u1 + a6 * cv1 - a8 * cv2; f2 = v1 - a5 * cv1 + a7 * cv2; l v1 = (a2 * f2 - a4 * e2) / d8; l v2 = (a1 * f2 - a3 * e2) / d8; xv3 = xv1 + a1 * l v1 - a6 * cv1; yv3 = yv1 + a3 * l v1 + a5 * cv1;
e = u2 + 2 * a3 * l v1 * cv1 + a5 * cv1 * cv1 + a6 * ca1; e3 = e - 2 * a4 * l v2 * cv2 - a7 * cv2 * cv2 - a8 * ca2; f = v2 - 2 * a1 * l v1 * cv1 + a6 * cv1 * cv1 - a5 * ca1; f3 = f + 2 * a2 * l v2 * cv2 - a8 * cv2 * cv2 + a7 * ca2; l a1 = (a2 * f3 - a4 * e3) / d8; l a2 = (a1 * f3 - a3 * e3) / d8;
xa3 = xa1 + a1 * l a1 - 2 * a3 * l v1 * cv1 - a5 * cv1 * cv1 - a6 * ca1; ya3 = ya1 + a3 * l a1 + 2 * a1 * l v1 * cv1 - a6 * cv1 * cv1 + a5 * ca1; } }
11
/* RPP杆组运动分析子程序 */
Void RPP() {
u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1; a1 = sin(ct1 + dt); a2 = cos(ct1 + dt):; a3 = sin(ct1); a4 = cos(ct1); d8 = sin(dt);
if ( fabs ( d8 ) <=0.1 )
cout<<(\else
{ e1 = u + a1 * h; f1 = v - a2 * h;
l 1 = (a1 * e1 - a2 * f1) / d8; l 2 = (a4 * f1 - a3 * e1) / d8; x3 = x1 + a4 * l 1; y3 = y1 + a3 * l 1; x4 = x2 + a1 * h; y4 = y2 - a2 * h;
e2 = u1 + cv1 * (a2 * h + a3 * l 1 + a1 * l 2 ); f2 = v1 - cv1 * (a1 * h - a4 * l 1 - a2 * l 2 ); l v1 = (a1 * e2 - a2 * f2) / d8; l v2 = (a4 * f2 - a3 * e2) / d8;
xv3 = xv1 + a4 * l v1 - a3 * l 1 * cv1; yv3 = yv1 + a3 * l v1 + a4 * l 1 * cv1; xv4 = xv2 + a2 * h * cv1; yv4 = yv2 + a1 * h * cv1;
e = u2 + ca1 * (a2 * h + a3 * l 1 + a1 * l 2 );
e3 = e - cv1 * cv1 * (a1 * h - a4 * l 1 - a2 * l 2) + 2 * cv1 * (a3 * l v1 + a1 * l v2 ); f = v2 + ca1 * (a1 * h - a4 * l 1 - a2 * l 2 );
f3 = f + cv1 * cv1 * (a2 * h - a3 * l 1 - a1 * l 2) - 2 * cv1 * (a4 * l v1 + a2 * l v2 ); l a1 = (a1 * e3 - a2 * f3) / d8; l a2 = (a4 * f3 - a3 * e3) / d8;
xa3 = xa1 + a4 * l a1 - 2 * a3 * l v1 * cv1 - a4 * l 1 * cv1 * cv1 - a3 * l 1 * ca1; ya3 = ya1 + a3 * l a1 + 2 * a4 * l v1 * cv1 - a3 * l 1 * cv1 * cv1 + a4 * l 1 * ca1; xa4 = xa2 + a2 * h * ca1 - a1 * h * cv1 * cv1; ya4 = ya2 + a1 * h * ca1 + a2 * h * cv1 * cv1; } }
12
机构运动分析主程序编制实例
#include \机构运动分析子程序.h\ /* 运动分析子程序 */ #include
double d1=0.125, d3=0.6, d4=0.15, xa=0,ya=0, xc=0, yc=-0.275, xg=0, yg=0.3; double dv=1, da=0, df=0, c1=0; int i, n; cout<<\
cout<<\ 牛头刨床六杆机构的运动分析(教材例题3-6)\\n\ cout<<\ (具有RPR和RRP杆组)\\n\ cout<<\
cout<<\输入数据: \\n\
cout<<\l1=\l3=\l4=\l6=\ cout<<\ cout<<\ cout<<\
cout<<\请输入等分角(?)和等分数df n=\ cin>>df>>n; df *= PI/180; c1 *= PI/180; cout<<\
cout<<\计算结果: \\n\
cout<<\ for ( i=1; i<=n; i++ ) {
cout<<\? \\n\ l =r=d1; af=0; ct=c1; cv=dv; ca=da;
x1=xa; y11=ya; xv1=0; yv1=0; xa1=0; ya1=0; SSL();
l 1=w=m=0;
x1=x2; y11=y2; xv1=xv2; yv1=yv2; xa1=xa2; ya1=ya2; x2=xc; y2=yc; xv2=0; yv2=0; xa2=0; ya2=0; RPR();
l =r=d3; af=0; ct=ct2; cv=cv2; ca=ca2;
x1=xc; y11=yc; xv1=0; yv1=0; xa1=0; ya1=0; SSL();
13
if ( ct2 < 0 ) ct2 += 2*PI; ct2 *= 180/PI;
cout<<\ \ \
l 1= d4; m= 1;
ct2=PI; cv2=ca2=0;
x1=x2; y11=y2; xv1=xv2; yv1=yv2; xa1=xa2; ya1=ya2; x2=xg; y2=yg; xv2=0; yv2=0; xa2=0; ya2=0; RRP();
if ( ct1 < 0 ) ct1 += 2*PI; ct1 *= 180/PI;
cout<<\ \ \ cout<<\l2<<\ \lv2<<\ \la2<<\ cout<<\ c1 += df; }
注:牛头刨床的机构运动简图及原始参数见《机械原理》第3章习题3-6
牛头刨床工作机构运动简图
14
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库机械原理基本杆组分析法(3)在线全文阅读。
相关推荐: