Stability of a ladder

Study of the stability of a ladder leaning against a brick fall.
For more on stability, see the “stability” tag. These figures are used in Ben Kilminster’s lecture notes for PHY111.

dynamics_stability_ladder-001.pngdynamics_stability_ladder-002.pngdynamics_stability_ladder-003.pngdynamics_stability_ladder-004.pngdynamics_stability_ladder-005.pngdynamics_stability_ladder-006.png

Edit and compile if you like:

% Author: Izaak Neutelings (October 2020)
\documentclass[border=3pt,tikz]{standalone}
\usepackage{physics}
\usepackage{siunitx}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{angles,quotes} % for pic
\usetikzlibrary{arrows.meta}
\usetikzlibrary{bending} % for arrow head angle
\tikzset{>=latex} % for LaTeX arrow head
\usetikzlibrary{patterns}

\colorlet{xcol}{blue!70!black}
\colorlet{vcol}{green!60!black}
\colorlet{myred}{red!65!black}
\colorlet{mypurple}{blue!60!red!80}
\colorlet{acol}{red!50!blue!80!black!80}
\tikzstyle{rvec}=[->,xcol,very thick,line cap=round]
\tikzstyle{vvec}=[->,vcol,very thick,line cap=round]
\tikzstyle{myarr}=[{Latex[length=3,width=3]}-,xcol]
\tikzstyle{myarr2}=[{Latex[length=2,width=3]}-{Latex[length=2,width=3]}]
\tikzstyle{force}=[->,myred,very thick,line cap=round]
\tikzstyle{Fproj}=[force,myred!40]
\tikzstyle{myarr}=[-{Latex[length=4,width=3]}]
\tikzstyle{myarr2}=[{Latex[length=4,width=3]}-{Latex[length=3,width=3]}]
\tikzstyle{CM}=[red!40!black,fill=red!80!black!80]
\tikzstyle{mass}=[line width=0.6,draw=red!30!black, %rounded corners=1,
                  top color=red!40!black!30,bottom color=red!40!black!10,shading angle=30]
\tikzstyle{ground}=[preaction={fill,top color=black!10,bottom color=black!5,shading angle=20},
                    fill,pattern=north east lines,draw=none,minimum width=0.3,minimum height=0.6]
\tikzstyle{metal}=[fill,top color=black!40,bottom color=black!20,shading angle=10]
\def\tick#1#2{\draw[thick] (#1) ++ (#2:0.1) --++ (#2-180:0.2)}
\tikzstyle{ladder}=[brown!40!black,fill=brown!70!black,thin,line cap=round]
\tikzstyle{limb}=[thick,line cap=round]


\def\LL{4.7}  % ladder length
\def\LR{0.06} % ladder radius
\def\r{0.04}  % pulley small radius
\tikzset{
  pics/Tin/.style={
    code={
      \def\R{0.12}
      \draw[pic actions,line width=0.6,#1,fill=white] % ,thick
        (0,0) circle (\R) (-135:.75*\R) -- (45:.75*\R) (-45:.75*\R) -- (135:.75*\R);
  }},
  pics/Tout/.style={
    code={
      \def\R{0.12}
      \draw[pic actions,line width=0.6,#1,fill=white] (0,0) circle (\R);
      \fill[pic actions,#1] (0,0) circle (0.3*\R);
  }},
  pics/ladder/.style={
    code={
      \coordinate (L1) at (0,\LR+0.01);
      \draw[ladder] (L1)++(#1-90:\LR) arc(#1-90:#1-270:\LR) --++ (#1:{\LL-\LR/cos(\ang)}) arc(90+#1:#1-90:\LR) -- cycle;
      \coordinate (L2) at ($(L1)+(#1:\LL/2)$);
      \coordinate (L3) at ($(L1)+(#1:{\LL-\LR/cos(\ang)})$);
  }},
  pics/groundwall/.style={
    code={
      \draw[ground] ({-0.26*\W},0) rectangle ({1.18*\W},-\D);
      \draw[thick] ({-0.26*\W},0) -- ({1.18*\W},0);
      \foreach \i[evaluate={\by=\i*\bh}]  in {0,...,\N}{ %[evaluate={\bh=\H/\N;\by=\i*\bh}] in {0,...,\N}{
      \draw[red!40!black,fill=red!40!black!40,rounded corners=0.8]
        ({\W},\by) rectangle++ (1.2*\D,\bh);
      \begin{scope}
        \clip ({\W+0.01},\by+0.01) rectangle++ (1.2*\D-0.02,\bh-0.02);
        \foreach \j in {0,...,\Nd}{
          \fill[red!40!black] ({\W+(1+rand)*0.6*\D},{\by+(1+rand)*\bh/2}) circle(0.002); % random dots
        }
      \end{scope}
    }
  }},
  pics/Tin/.default=mypurple,
  pics/Tout/.default=mypurple,
  pics/ladder/.default=45,
}

\begin{document}


% LADDER
\def\ang{50} % angle diagonal
\def\H{\LL*sin(\ang)} % ladder height
\def\W{\LL*cos(\ang)} % ladder width
\def\R{sqrt(\W^2+\H^2)/2} % block half-diagonal
\def\D{0.25}   % ground depth
\def\F{0.95}   % force
\def\Ff{0.85}  % force friction
\def\N{31}     % number of bricks
\def\Nd{30}    % number of dots per brick
\def\bh{0.125} % brick height
\begin{tikzpicture}
  \message{Ladder^^J}
  \coordinate (O) at (0,0);
  \coordinate (M) at (\ang:\LL/2);
  \coordinate (T) at (\ang:\LL);
  \coordinate (R) at ({\W},0);
  
  % GROUND + WALL
  \pic at (O) {groundwall};
  \draw[myarr2,thick] (-0.3*\F,{0.85*\H}) node[left,scale=0.8] {$y$} |-++ (0.65*\F,-0.65*\F) node[below,scale=0.8] {$x$};
  \draw[myarr,thick] (0.38*\F,{0.9*\H}) arc(100:10:0.35*\F) node[right=1,below=-1,scale=0.7] {$+$};
  
  % LADDER
  \pic[scale=1] at (O) {ladder={\ang}};
  \draw[CM] (L2) circle(0.9*\LR);
  \draw[force] (L1) --++ (\Ff,0) node[above right=-3] {$\vb{F}_\mathrm{f}$};
  \draw[force] (L1) --++ (0,\F) node[above=-2] {$\vb{F}_\mathrm{N}$};
  \draw[force] (L2) --++ (0,-\F) coordinate (FG) node[above right=0] {$M\vb{g}$};
  \draw[force] (L3) --++ (-\Ff,0) coordinate (FW) node[left=-3] {$\vb{F}_\mathrm{W}$};
  \draw[dashed] (L3) --++ (\ang:0.15*\LL) coordinate (T');
  \draw pic[->,"$\theta$"scale=0.9,draw,angle radius=12,angle eccentricity=1.4] {angle=R--O--T};
  \draw pic[<-,"$\dfrac{\pi}{2}-\theta$"{scale=0.8,above right=-5},draw,angle radius=9,angle eccentricity=1.5] {angle=FG--M--T};
  \draw pic[-{>[flex=1]},"$\pi-\theta$"{scale=0.8,above left=-5},draw,angle radius=9,angle eccentricity=1.4] {angle=T'--L3--FW};
\end{tikzpicture}


% LADDER + person
\begin{tikzpicture}
  \message{Ladder + person^^J}
  \def\h{1.2} % human height
  \coordinate (O) at (0,0);
  \coordinate (T) at (\ang:\LL);
  \coordinate (R) at ({\W},0);
  \coordinate (S) at ($(\ang:0.28*\LL)+(0,1.4*\LR)$);
  
  % GROUND + WALL
  \pic at (O) {groundwall};
  
  % PERSON
  \draw[thick] (S)++(0,\h) circle(0.22) coordinate (H);
  \draw[thick] (H)++(-90:0.22) coordinate (N) to[out=-91,in=92]++ (0,-0.35*\h) coordinate (P);
  \draw[limb] (N)++(-95:0.03) to[out=-120,in=-85]++ (-0.31*\h,0.22*\h); % right arm
  \draw[limb] (N)++(-85:0.03) to[out=-60,in=105]++ (0.19*\h,-0.35*\h);  % left arm
  \draw[limb] (S)++(\ang:0.06*\LL) to[out=85,in=-70,looseness=1.4] (P); % left leg
  \draw[limb] (S) to[out=85,in=-80] (P); % right leg
  
  % LADDER
  \pic[scale=1] at (O) {ladder={\ang}};
  \draw[CM] (L2) circle(0.9*\LR);
  \draw[force] (L1) --++ (\Ff,0) node[above=3,right=-3] {$\vb{F}_\mathrm{f}$};
  \draw[force] (L1) --++ (0,\F) node[left=2,above=-2] {$\vb{F}_\mathrm{N}$};
  \draw[force] (L2) --++ (0,-\F) node[above right=0] {$M\vb{g}$};
  \draw[force] (L3) --++ (-\Ff,0) node[left=-3] {$\vb{F}_\mathrm{W}$};
  \draw[force] (S)++(\ang:0.03*\LL) coordinate (SM) --++ (0,-0.58*\F) node[below right=-4] {$m\vb{g}$};
  \draw[rvec] (L1) -- (SM) node[midway,above=2] {$\vb{r}$};
  \draw pic[->,"$\theta$"scale=0.9,draw,angle radius=12,angle eccentricity=1.4] {angle=R--O--T};
  
\end{tikzpicture}


% LADDER + person
\begin{tikzpicture}
  \message{Ladder + person, shifted CM^^J}
  \def\h{1.2} % human height
  \coordinate (O) at (0,0);
  \coordinate (T) at (\ang:\LL);
  \coordinate (R) at ({\W},0);
  \coordinate (S) at ($(\ang:0.28*\LL)+(0,1.4*\LR)$);
  
  % GROUND + WALL
  \pic at (O) {groundwall};
  
  % PERSON
  \draw[thick] (S)++(0,\h) circle(0.22) coordinate (H);
  \draw[thick] (H)++(-90:0.22) coordinate (N) to[out=-91,in=92]++ (0,-0.35*\h) coordinate (P);
  \draw[limb] (N)++(-95:0.03) to[out=-120,in=-85]++ (-0.31*\h,0.22*\h); % right arm
  \draw[limb] (N)++(-85:0.03) to[out=-60,in=105]++ (0.19*\h,-0.35*\h);  % left arm
  \draw[limb] (S)++(\ang:0.06*\LL) to[out=85,in=-70,looseness=1.4] (P); % left leg
  \draw[limb] (S) to[out=85,in=-80] (P); % right leg
  
  % LADDER
  \pic[scale=1] at (O) {ladder={\ang}};
  \draw[CM] (L2)++(\ang-180:0.1*\LL) circle(0.9*\LR) coordinate (CM);
  \draw[force] (L1) --++ (\Ff,0) node[above right=-3] {$\vb{F}_\mathrm{f}$};
  \draw[force] (L1) --++ (0,\F) node[left=2,above=-2] {$\vb{F}_\mathrm{N}$};
  \draw[force] (CM) --++ (0,-\F) node[above right=0,scale=0.94] {$(m+M)\vb{g}$};
  \draw[force] (L3) --++ (-\Ff,0) node[left=-3] {$\vb{F}_\mathrm{W}$};
  %\draw[force] (S)++(\ang:0.03*\LL) coordinate (SM) --++ (0,-0.45*\F) node[below right=-4] {$m\vb{g}$};
  \draw[rvec] (L1) -- (CM) node[midway,above left=-2] {$\vb{r}$};
  \draw pic[->,"$\theta$"scale=0.9,draw,angle radius=12,angle eccentricity=1.4] {angle=R--O--T};
  
\end{tikzpicture}


% LADDER - tan
\begin{tikzpicture}
  \message{Plot numerical solution^^J}
  \def\xmax{2.8}
  \def\ymax{1.8}
  \def\A{0.13*\ymax}   % yscale
  \def\p{0.5*pi*\xmax} % xscale (in units of pi)
  \def\B{59/180}       % mu_s = 0.3
  \coordinate (O) at (0,0);
  \coordinate (B) at (\B*\p,{\A/2/0.3}); % mu_s = 0.3
  \coordinate (Bx) at (\B*\p,0);
  \coordinate (By) at (0,{\A/2/0.3});
  \draw[->,thick] (0,-1.1*\ymax) -- (0,1.05*\ymax) node[below=3,left] {$\tan\theta$};
  \draw[->,thick] (-1.05*\xmax,0) -- (1.05*\xmax,0) node[below] {$\theta$};
  \draw[dashed] (-\p/2,-\ymax) -- (-\p/2,\ymax);
  \draw[dashed] (\p/2,-\ymax) -- (\p/2,\ymax);
  \draw[line width=1.0,orange!50!red!80!black] (By) -- (B) --++ (0.2*\xmax,0);
  \draw[dashed] (B) -- (Bx);
  \tick{-\p/2,0}{90} node[below=0.7,scale=1,fill=white,inner sep=1.6] {$-\SI{90}{\degree}$}; %{$-\dfrac{\pi}{2}$};
  \tick{ \p/2,0}{90} node[below=0.7,scale=1,fill=white,inner sep=1.6] {$\SI{90}{\degree}$}; %{$\dfrac{\pi}{2}$};
  \tick{Bx}{90} node[below=-1,scale=1] {$\SI{59}{\degree}$};
  \tick{By}{0} node[above=1,left=0,scale=0.9] {$\dfrac{1}{2\mu_\mathrm{s}}$};
  \draw[very thick,orange!80!black,samples=100,smooth,variable=\t,domain=-0.46*\p:0.46*\p]
    plot(\t,{\A*tan(\t*180/(\p))});
  \fill[red!50!black] (B) circle(0.05);
\end{tikzpicture}

% LADDER - plot
\begin{tikzpicture}
  \message{Minimum angle vs. mu_s^^J}
  \def\xmax{3.2}
  \def\ymax{2.4}
  \def\A{0.8*\ymax}   % yscale
  \def\k{0.9*\xmax}   % xscale
  \def\B{59/90*\A}    % mu_s = 0.3
  \def\C{26.57/90*\A} % mu_s = 1
  \coordinate (O) at (0,0);
  \coordinate (B) at (0.3*\k,\B);
  \coordinate (Bx) at (0.3*\k,0);
  \coordinate (By) at (0,\B);
  \coordinate (C) at (\k,\C);
  \coordinate (Cx) at (\k,0);
  \coordinate (Cy) at (0,\C);
  \draw[->,thick] (0,-0.1*\xmax) -- (0,1.05*\ymax) node[below=3,left] {$\theta_\text{min}$};
  \draw[->,thick] (-0.1*\xmax,0) -- (1.05*\xmax,0) node[below] {$\mu_\mathrm{s}$};
  \draw[very thick,orange!80!black,samples=100,smooth,variable=\t,domain=0.01:0.9*\xmax]
    plot(\t,{\A*atan(\k/2/\t)/90});
  \draw[dashed] (Bx) |- (By);
  \draw[dashed] (Cx) |- (Cy);
  \tick{Cx}{90} node[below=-1,scale=0.9] {$1$};
  \tick{Bx}{90} node[below=-1,scale=0.9] {$0.3$};
  \tick{0,\A}{0} node[right=3,left=0,scale=0.9] {$\SI{90}{\degree}$};
  \tick{By}{0} node[right=3,left=0,scale=0.9] {$\SI{59}{\degree}$};
  \tick{Cy}{0} node[right=3,left=0,scale=0.9] {$\SI{25.6}{\degree}$};
  \fill[red!50!black] (B) circle(0.05);
  \fill[red!50!black] (C) circle(0.05);
\end{tikzpicture}

% LADDER + PERSON - plot
\begin{tikzpicture}
  \message{Minimum angle vs. r^^J}
  \def\xmax{3.2}
  \def\ymax{2.4}
  \coordinate (O) at (0,0);
  \coordinate (B) at (0.45*\xmax,0.5*\ymax);
  \coordinate (Bx) at (0.45*\xmax,0);
  \coordinate (By) at (0,0.5*\ymax);
  \draw[->,thick] (0,-0.1*\xmax) -- (0,1.05*\ymax) node[below=3,left] {$\theta_\text{min}$};
  \draw[->,thick] (-0.1*\xmax,0) -- (1.05*\xmax,0) node[below] {$r$}; %\mu_\mathrm{s}
  \draw[very thick,orange!80!black] (0,0.2*\ymax) -- (0.9*\xmax,0.8*\ymax);
  \draw[dashed] (Bx) |- (By);
  \tick{Bx}{90} node[below=-1,scale=0.9] {$L/2$};
  \tick{0.9*\xmax,0}{90} node[below=-1,scale=0.9] {$L$};
  \tick{By}{0} node[right=3,left=0,scale=0.9] {$\SI{59}{\degree}$};
  \fill[red!50!black] (B) circle(0.05);
\end{tikzpicture}


\end{document}

Click to download: dynamics_stability_ladder.texdynamics_stability_ladder.pdf
Open in Overleaf: dynamics_stability_ladder.tex

Leave a Reply

Your email address will not be published.