File:Varipend3v16.png

Coordinates of the 4 elementary bodies for the Varipend by Sergei Butov.

Masses of bodies: $m_0\!=\!1$, $m_1\!=\!1$, $m_2\!=\!1$, $m_3\!=\!10$

At time $t\!=\!0$, the 0th body is released and flies away to the positive x-direction. The rest continues to rotate with the same angular velocity and slowly (as it is heavy) moves to the opposite direction.

Coordinates $X_n$ are plotted versus time with thick light lines; red, green, blue, pink. Coordinates $Y_n$ are plotted versus time with thin dark lines of similar colors.

The center of mass remains at the origin of coordinates. The total momentum also remains zero.

Generator of curves
FIle ado.cin should be loaded to the working directory in order to compile the code below:

DB q=1./sqrt(3.); DB f=M_PI*2./3.; DB s=q/12.; DB x1= .5; DB z1=q/2. -s; DB x2=-.5; DB z2=q/2. -s; DB x3= 0.; DB z3=     -s;
 * 1) include 
 * 2) include 
 * 3) include
 * 4) include "ado.cin"
 * 5) define DB double

DB X0(DB t){if(t<0) return q*sin(t);   return  q*t; } DB Y0(DB t){if(t<0) return -q*cos(t);  return -q;}

DB X1(DB t){if(t<0) return q*sin(t+  f); return -s*t+x1*cos(t)-z1*sin(t);} DB Y1(DB t){if(t<0) return -q*cos(t+ f); return  s  +x1*sin(t)+z1*cos(t);}

DB X2(DB t){if(t<0) return q*sin(t+2*f); return -s*t+x2*cos(t)-z2*sin(t);} DB Y2(DB t){if(t<0) return -q*cos(t+2*f); return s  +x2*sin(t)+z2*cos(t);}

DB X3(DB t){if(t<0) return 0.;          return -s*t + x3*cos(t)-z3*sin(t);} DB Y3(DB t){if(t<0) return 0.;          return  s   + x3*sin(t)+z3*cos(t);}

main{ int n; DB t, a,b; FILE *o; o=fopen("16.eps","w"); ado(o,4000,664); fprintf(o,"1000 190 translate 100 100 scale\n"); M(-10,0)L(30,0) M(0,-.9)L(0,0.9) fprintf(o,"0 0 0 RGB 0.005 W S\n"); fprintf(o,"1 setlinejoin 1 setlinecap\n"); DO(n,200){t=-10.+.1*n; a=X0(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.04 W 1 0 0 RGB S\n"); DO(n,402){t=-10.+.1*n; a=Y0(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.016 W .5 0 0 RGB S\n"); DO(n,402){t=-10.+.1*n; a=X1(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.04 W 0 .9 0 RGB S\n"); DO(n,402){t=-10.+.1*n; a=Y1(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.016 W 0 .5 0 RGB S\n"); DO(n,402){t=-10.+.1*n; a=X2(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.04 W 0 0 1 RGB S\n"); DO(n,402){t=-10.+.1*n; a=Y2(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.016 W 0 0 .5 RGB S\n"); DO(n,402){t=-10.+.1*n; a=X3(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.04 W .8 0 .8 RGB S\n"); DO(n,402){t=-10.+.1*n; a=Y3(t); if(n==0)M(t,a) else L(t,a)} fprintf(o,"0.016 W .4 0 .4 RGB S\n"); fprintf(o,"showpage\n"); fprintf(o,"%c%cTrailer\n",'%','%'); fclose(o); system("epstopdf 16.eps"); system(   "open 16.pdf"); }
 * 1) define DO(x,y) for(x=0;x<y;x++)
 * 1) define M(x,y) fprintf(o,"%6.4f %6.4f M\n",0.+x,0.+y);
 * 2) define L(x,y) fprintf(o,"%6.4f %6.4f L\n",0.+x,0.+y);