MGBureauDrawersPushUpInclinedPlaneKineticFrictionConstantSpeed.html  (MotionGenesis input/output).
   (1) %    File: MGBureauDrawersPushUpInclinedPlaneKineticFrictionConstantSpeed.txt 
   (2) % Problem: Determine forces to keep bureau in static equilibrium.
   (3) %--------------------------------------------------------------------
   (4) NewtonianFrame  N            % Earth.
   (5) RigidBody       B            % Bureau (chest of drawers).
   (6) Point           P(B)         % Point where person pushes bureau.
   (7) Point           O(B), Q(B)   % Points where B contacts inclined plane.
   (8) %--------------------------------------------------------------------
   (9) Constant  g = 10 m/s^2       % Earth's gravitational acceleration.
   (10) Constant  h = 0.5 m          % Distance between O and P.
   (11) Constant  L = 0.2 m          % Half-distance between O and Q.
   (12) Constant  d = 0.3 m          % Distance between Bcm and line OQ.
   (13) Constant  theta = 30 degs    % Angle between Nx> and Bx> (hill angle).
   (14) Constant  muk                % Coefficient of kinetic friction (bureau to hill).
   (15) Variable  Fp                 % Bx> measure of human force on P.
   (16) Variable  FOx, FOy           % -Bx> and By> measures of contact force on point O.
   (17) Variable  FQx, FQy           % -Bx> and By> measures of contact force on point Q.
   (18) B.SetMass( m = 10 kg )        
   (19) %--------------------------------------------------------------------
   (20) %       Geometry
   (21) B.SetRotationMatrixZ( N, theta )
-> (22) B_N = [cos(theta), sin(theta), 0;  -sin(theta), cos(theta), 0;  0, 0, 1]

   (23) P.SetPosition( O, h*By> )
-> (24) p_O_P> = h*By>

   (25) Q.SetPosition( O, 2*L*Bx> )
-> (26) p_O_Q> = 2*L*Bx>

   (27) Bcm.SetPosition( O, L*Bx> + d*By> )
-> (28) p_O_Bcm> = L*Bx> + d*By>

   (29) %--------------------------------------------------------------------
   (30) %       Contact and distance forces.
   (31) P.AddForce( FP*Bx> )
-> (32) Force_P> = Fp*Bx>

   (33) O.AddForce( -FOx*Bx> + FOy*By> )
-> (34) Force_O> = -FOx*Bx> + FOy*By>

   (35) Q.AddForce( -FQx*Bx> + FQy*By> )
-> (36) Force_Q> = -FQx*Bx> + FQy*By>

   (37) Bcm.AddForce( -m*g*Ny> )
-> (38) Force_Bcm> = -m*g*Ny>

   (39) %--------------------------------------------------------------------
   (40) %       Static equilibrium of B.
   (41) StaticEqn[1] = Dot( B.GetResultantForce(),  Bx> )
-> (42) StaticEqn[1] = Fp - m*g*sin(theta) - FOx - FQx

   (43) StaticEqn[2] = Dot( B.GetResultantForce(),  By> )
-> (44) StaticEqn[2] = FOy + FQy - m*g*cos(theta)

   (45) StaticEqn[3] = Dot( B.GetMomentOfForces(O), Bz> )
-> (46) StaticEqn[3] = m*g*(d*sin(theta)-L*cos(theta)) + 2*L*FQy - h*Fp

   (47) %--------------------------------------------------------------------
   (48) %       Friction relationships when sliding uphill.
   (49) FOx = muk*FOy
-> (50) FOx = muk*FOy

   (51) FQx = muk*FQy
-> (52) FQx = muk*FQy

   (53) %--------------------------------------------------------------------
   (54) %       Symbolic and numerical values for sliding solutions.
   (55) Solution = Solve( StaticEqn,  FP, FQy, FOy )
-> (56) Solution[1] = m*g*(sin(theta)+muk*cos(theta))
-> (57) Solution[2] = 0.5*m*g*(cos(theta)-(d*sin(theta)-h*sin(theta)-h*muk*cos(
        theta))/L)
-> (58) Solution[3] = -0.5*m*g*(h*sin(theta)-d*sin(theta)-cos(theta)*(L-h*muk))
        /L

   (59) SolutionNoFriction  =  Evaluate( Solution,  muK = 0  )
-> (60) SolutionNoFriction[1] = m*g*sin(theta)
-> (61) SolutionNoFriction[2] = 0.5*m*g*(cos(theta)-sin(theta)*(d-h)/L)
-> (62) SolutionNoFriction[3] = 0.5*m*g*(cos(theta)+sin(theta)*(d-h)/L)

   (63) SolutionNumerical   =  EvaluateToNumber( Solution,  muK = 0.2 noUnits )
-> (64) SolutionNumerical = [67.32051;  89.95191;  -3.349365]

   (65) %--------------------------------------------------------------------
   (66) %       Matrix form (A*X = B) of equations when sliding at constant speed.
   (67) CoefficientMatrix = GetCoefficientMatrix( StaticEqn, Fp, FOy, FQy)
-> (68) CoefficientMatrix = [1, -muk, -muk;  0, 1, 1;  -h, 0, 2*L]

   (69) RemainderMatrix   = Exclude( -StaticEqn, Fp, FOy, FQy )
-> (70) RemainderMatrix = [m*g*sin(theta);  m*g*cos(theta);  -m*g*(d*sin(theta)-L*cos(theta))]

   (71) %--------------------------------------------------------------------
Saved by Motion Genesis LLC.   Command names and syntax: Copyright (c) 2009-2019 Motion Genesis LLC. All rights reserved.