scalar r=0.5[m]; scalar R=3*r; scalar m=5[kg]; scalar l=2[m]*sqrt(2); scalar m1=0.5*m; scalar g=9.81[m/s2]; point O=point( 0 [ m ], R, 0 [ m ] ); point A=point( 0 [ m ], r, 0 [ m ] ); point B=point( -2*r, R, 0 [ m ] ); line circle=circle( O, projectZ, R ); line circleA=circle( A, projectZ, r ); line circleB=circle( B, projectZ, r ); solid solidA=extrude( circleA, move( A, projectZ, r ), move( A, reverse( projectZ ), r ), mass = m ); solid solidB=extrude( circleB, move( B, projectZ, r ), move( B, reverse( projectZ ), r ), mass = m ); solid solidC=cylinder( A, B, 0.001*l, mass = m1 ); body base=body( color = RGB( 229, 229, 229 ) ); set ground = base; body base < ( circle ); body bodyA=body( color = RGB( 255, 153, 153 ) ); body bodyA < ( circleA, solidA, A ); body bodyB=body( color = RGB( 255, 153, 102 ) ); body bodyB < ( circleB, solidB, B ); body bodyC=body( color = RGB( 255, 255, 153 ) ); body bodyC < ( solidC ); joint jointA=flatContactLineLine( circle, circleA, lines_slip = linesNoSlip: ); joint jointB=flatContactLineLine( circle, circleB, lines_slip = linesNoSlip: ); joint joint1=rotational( bodyA, bodyC, A, projectZ ); joint joint2=rotational( bodyB, bodyC, B, projectZ ); vector vector1=vectorPP( B, A ); body bodyC < ( vector1 ); sensor alpha=angleVV( projectX, vector1, axisDirection = projectZ ); event event1=reformsBySensor( list( stop( ) ), alpha, 0 [ rad ] ); sensor v_A=velocity( A ); sensor v_B=velocity( B ); sensor v_theoretical=sqrt(1.5*(sqrt(2)-1)*g*r); gravity gravity1=parallel( reverse( projectY ), g = g ); sensor v_A_rel_err=abs((v_A-v_theoretical)/v_A); sensor v_B_rel_err=abs((v_B-v_theoretical)/v_B); command command1=constRK4( 1.00000e+000 [ s ], 1.00000e-003 [ s ] ); /\/////////////////////////////////////////////////////////////////////////////////// /\ Список главных команд; set dynamics = command1; /\/////////////////////////////////////////////////////////////////////////////////// /\ Единицы измерения; set units = SI;