scalar m=1[ kg ]; scalar M=2[ kg ]; scalar R=0.2[ m ]; scalar r=0.15[ m ]; scalar M0=10[ N m ]; scalar a=0.1[ N m s / rad ]; scalar a1=0.1[ N m s ]; scalar w1=1[ rad/ s ]; scalar t=5 [ s ]; point point_O=point( 0 [ m ], 0 [ m ], 0 [ m ] ); point point_O1=move( point_O, projectX, R+r ); point point_O2=point( 0 [ m ], 0 [ m ], 0 [ m ] ); point point_O3=move( point_O, projectX, R+r ); point point_A=move( point_O, projectX, R+2*r ); line line1=circle( point_O, projectZ, R ); line line2=circle( point_O1, projectZ, r ); color color2=index( 54 ); solid solid1=extrude( line2, point( R+r, 0 [ m ], 0.02 [ m ] ), point( R+r, 0 [ m ], -0.02 [ m ] ), mass = M, color = color2 ); color color1=index( 25 ); solid solid2=cylinder( point_O, point_O1, 0.005 [ m ], mass = m, color = color1 ); color color3=index( 9 ); body body1=body( color = color3 ); set ground = body1; body body1 < ( line1 ); body body2=body( color = RGB( 255, 153, 153 ) ); body body2 < ( solid1, point_A, point_O1, line2 ); body body3=body( color = RGB( 255, 153, 102 ) ); body body3 < ( solid2, point_O2, point_O3 ); joint joint1=rotational( body1, body3, point_O, projectZ ); joint joint2=flatContactLineLine( line2, line1, lines_slip = linesNoSlip: ); joint joint3=user( body3, body2, nodePoint( point_O1 ), yesX:, noY:, noZ:, noFiX:, noFiY:, yesFiZ:, work = on: ); sensor w=rotVelocity( body1, projectZ, body3 ); sensor M_vr=M0-a*w; function function1(x[N m])=#x; force force1=moment( body3, point_O3, projectZ, function1, list( M_vr ) ); sensor w_theor_part1=-a1*t/((m/3+3*M/2)*(R+r)*(R+r)); sensor w_theor=M0/a*(1-exp(w_theor_part1)); sensor w_delta=abs((w_theor-w)/w_theor); /\/////////////////////////////////////////////////////////////////////////////////// /\ Единицы измерения; set units = SI;