这里zlib库,应该是有人自己编译了一个静态库版本,google一下zlib,自己编译
/* 机械原理平面机构运动分析子程序 ( 含单杆,RRR,RRP,RPR,PRP杆组 ) */
#define PI 3.1415926
#include "math.h"
float l,l1,l2,lv1,lv2,la1,la2,r,al,ct,cv,ca,ct1,cv1,ca1,ct2,cv2,ca2;
float u,v,u1,v1,u2,v2,x1,y1,xv1,yv1,xa1,ya1,x2,y2,xv2,yv2,xa2,ya2;
float x3,y3,xv3,yv3,xa3,ya3,a1,a2,a3,a4,a5,a6,a7,a8,c,d,d7,d8;
float e,e1,e2,e3,f,f1,f2,f3,g,h,h1,h2,i1,k,k1,k2,n,n7,w;
int m,kp;
SSL() /* 单杆运动分析子程序 */
{
x2 = x1 + l * cos ( ct );
y2 = y1 + l * sin ( ct );
x3 = x1 + r * cos ( ct + al );
y3 = y1 + r * sin ( ct + al );
if ( kp == 1 )
{ xv2 = xv1 - l * sin ( ct ) * cv;
yv2 = yv1 + l * cos ( ct ) * cv;
xa2 = xa1 - l * sin ( ct ) * ca - l * cos ( ct ) * cv * cv;
ya2 = ya1 + l * cos ( ct ) * ca - l * sin ( ct ) * cv * cv;
xv3 = xv1 - ( y3 - y1 ) * cv;
yv3 = yv1 + ( x3 - x1 ) * cv;
xa3 = xa1 - ( y3 - y1 ) * ca - ( x3 - x1 ) * cv * cv;
ya3 = ya1 + ( x3 - x1 ) * ca - ( y3 - y1 ) * cv * cv;
}
}
RRR() /* RRR杆组运动分析子程序 */
{
u = x2 - x1;
v = y2 - y1;
u1 = xv2 - xv1;
v1 = yv2 - yv1;
u2 = xa2 - xa1;
v2 = ya2 - ya1;
c = ( u * u + v * v + l2 * l2 - l1 * l1 ) / 2 / l2;
k = v * v + u * u - c * c;
if ( k < 0 )
printf (" DYAD CANNOT BE ASSEMBLED \n");
else
{ n7 = v + m * sqrt ( k );
d7 = u - c;
ct2 = 2 * atan ( n7 / d7 );
if ( d7 < 0 && n7 > 0 ) ct2 += 2 * PI;
else if ( d7 < 0 && n7 < 0 ) ct2 -= 2 * PI;
{ n = v + l2 * sin ( ct2 );
d = u + l2 * cos ( ct2 );
ct1 = atan ( n / d );
}
if ( d < 0 && n > 0 ) ct1 += PI;
else if ( d < 0 && n < 0 ) ct1 -= PI;
if ( kp == 1 )
{
a1 = - l1 * sin ( ct1 );
a2 = l1 * cos ( ct1 );
a3 = l2 * sin ( ct2 );
a4 = - l2 * cos ( ct2 );
d = a1 * a4 - a2 * a3;
if ( fabs ( d ) < 1e-9 )
printf ( " DYAD IS IN UNCERTAINTY \n" );
else
{ cv1 = ( a4 * u1 - a3 * v1 ) / d;
cv2 = ( a1 * v1 - a2 * u1 ) / d;
e = u2 + a2 * cv1 * cv1 + a4 * cv2 * cv2;
f = v2 - a1 * cv1 * cv1 - a3 * cv2 * cv2;
ca1 = ( a4 * e - a3 * f ) / d;
ca2 = ( a1 * f - a2 * e ) / d;
}
}
}
}
RRP() /* RRP杆组运动分析子程序 */
{
u = x2 - x1;
v = y2 - y1;
u1 = xv2 - xv1;
v1 = yv2 - yv1;
u2 = xa2 - xa1;
v2 = ya2 - ya1;
k1 = l1 * l1 - pow ( ( u * sin ( ct2 ) - v * cos ( ct2 ) ) , 2 );
if (k1 < 0)
printf (" DYAD CANNOT BE ASSEMBLED \n");
else
{ k2 = u * cos ( ct2 ) + v * sin ( ct2 );
l2 = - k2 + m * sqrt ( k1 );
n = v + l2 * sin ( ct2 );
d = u + l2 * cos ( ct2 );
ct1 = atan ( n / d );
if ( d < 0 && n > 0 ) ct1 += PI;
else if ( d < 0 && n < 0 ) ct1 -= PI;
if ( kp == 1 )
{ a1 = - l1 * sin ( ct1 );
a2 = l1 * cos ( ct1 );
a5 = - cos ( ct2 );
a6 = - sin ( ct2 );
g = u1 + l2 * a6 * cv2;
h = v1 - l2 * a5 * cv2;
d8 = a1 * a6 - a2 * a5;
if ( fabs ( d8 ) <= 1e-9 )
printf (" DYAD IS IN UNCERTAINTY \n");
else
{ cv1 = ( a6 * g - a5 * h ) / d8;
lv2 = ( a1 * h - a2 * g ) / d8;
e1 = u2+a2*cv1*cv1+2*a6*lv2*cv2+l2*a5*cv2*cv2+l2*a6*ca2;
f1 = v2-a1*cv1*cv1-2*a5*lv2*cv2+l2*a6*cv2*cv2-l2*a5*ca2;
ca1 = ( a6 * e1 - a5 * f1 ) / d8;
la2 = ( a1 * f1 - a2 * e1 ) / d8;
}
}
}
}
RPR() /* RPR杆组运动分析子程序 */
{
u = x2 - x1;
v = y2 - y1;
u1 = xv2 - xv1;
v1 = yv2 - yv1;
u2 = xa2 - xa1;
v2 = ya2 - ya1;
i1 = u * u + v * v - ( l1 - w ) * ( l1 - w );
if ( i1 < 0 )
printf ( " DYAD CANNOT BE ASSEMBLED \n" );
{ l2 = sqrt ( i1 );
n = v + m * ( l1 - w );
d = u - l2;
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;
if ( kp == 1 )
{
a5 = - cos ( ct2 );
a6 = - sin ( ct2 );
a7 = - ( l1 - w ) * sin ( ct1 ) + l2 * sin ( ct2 );
a8 = ( l1 - w ) * cos ( ct1 ) - l2 * cos ( ct2 );
if ( fabs ( l2 ) < 1e-9 )
printf ( " DYAD IS IN UNCERTAINTY \n" );
else
{ cv1 = ( a6 * u1 - a5 * v1 ) / ( - l2 );
cv2 = cv1;
lv2 = ( a7 * v1 - a8 * u1 ) / ( - l2 );
e2 = u2 + a8 * cv1 * cv1 + 2 * a6 * lv2 * cv1;
f2 = v2 - a7 * cv1 * cv1 - 2 * a5 * lv2 * cv1;
ca1 = ( a6 * e2 - a5 * f2 ) / ( - l2 );
ca2 = ca1;
la2 = ( a7 * f2 - a8 * e2 ) / ( - l2 );
}
}
}
}
PRP() /* PRP杆组运动分析子程序 */
{
u = x2 - x1;
v = y2 - y1;
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 )
printf (" DYAD IS IN UNCERTAINTY \n ");
else
{ e1 = u - a3 * h1 - a4 * h2;
f1 = v + a1 * h1 + a2 * h2;
l1 = ( a2 * f1 - a4 * e1 ) / d8;
l2 = ( a1 * f1 - a3 * e1 ) / d8;
x3 = x1 + a1 * l1 + a3 * h1;
y3 = y1 + a3 * l1 - a1 * h1;
if ( kp == 1 )
{ a5 = a1 * l1 + a3 * h1;
a6 = a3 * l1 - a1 * h1;
a7 = a2 * l2 - a4 * h2;
a8 = a4 * l2 + a2 * h2;
e2 = u1 + a6 * cv1 - a8 * cv2;
f2 = v1 - a5 * cv1 + a7 * cv2;
lv1 = ( a2 * f2 - a4 * e2 ) / d8;
lv2 = ( a1 * f2 - a3 * e2 ) / d8;
xv3 = xv1 + a1 * lv1 - a6 * cv1;
yv3 = yv1 + a3 * lv1 + a5 * cv1;
e = u2 + 2*a3*lv1*cv1 + a5*cv1*cv1 + a6*ca1;
e3 = e - 2*a4*lv2*cv2 - a7*cv2*cv2 - a8*ca2;
f = v2 - 2*a1*lv1*cv1 + a6*cv1*cv1 - a5*ca1;
f3 = f + 2*a2*lv2*cv2 - a8*cv2*cv2 + a7*ca2;
la1 = ( a2 * f3 - a4 * e3 ) / d8;
la2 = ( a1 * f3 - a3 * e3 ) / d8;
xa3 = xa1 + a1*la1 - 2*a3*lv1*cv1 - a5*cv1*cv1 - a6*ca1;
ya3 = ya1 + a3*la1 + 2*a1*lv1*cv1 - a6*cv1*cv1 + a5*ca1;
}
}
}
已发,请查收,star~