% Author: Izaak Neutelings (February 2019)
\documentclass[border=3pt,tikz]{standalone}
\usepackage{physics}
\usepackage{tikz}
\usetikzlibrary{patterns,decorations.pathmorphing}
\usetikzlibrary{arrows.meta}
\tikzset{>=latex}

\colorlet{mydarkblue}{blue!50!black}
\colorlet{myblue}{blue!30}
\colorlet{mydarkred}{red!60!black}
\colorlet{myred}{red!30}
\colorlet{mydarkgreen}{green!60!black}
\colorlet{mygreen}{green!30}
\colorlet{mydarkorange}{yellow!40!red}
\colorlet{myorange}{yellow!80!red}
\colorlet{myyellow}{yellow!80}
\colorlet{mygrey}{black!15}
\colorlet{mydarkgrey}{black!50}

\tikzstyle{piston}=[blue!40!black,top color=blue!40!black!30,bottom color=blue!40!black!30,
                    middle color=blue!50!black!15,shading angle=0]
\tikzstyle{walldark}=[blue!25!black,top color=blue!20!black!12,bottom color=blue!20!black!20,shading angle=-30]
\tikzstyle{wall}=[blue!20!black,top color=blue!35!black!6,bottom color=blue!25!black!12,shading angle=30]

% GAS MOLECULE with vector
\tikzset{
  gasparticle/.pic={
    \tikzset{/gasparticle/.cd,#1}
    \draw[-{Latex[length=4,width=3]},green!60!black,thick] (0,0) -- (\vec);
    \node[circle,fill,inner sep=1.5,ball color=black!80!blue] at (0,0) {};
  }
  /gasparticle/.search also={/tikz},
  /gasparticle/.cd,
  vec/.store in=\vec, vec={90:0.5},
}

\begin{document}


% PISTON
\begin{tikzpicture}
  \def\Ra{0.5}
  \def\Rb{1.0}
  \def\ra{0.1}
  \def\rb{0.2}
  \def\w{0.08} % wall thickness
  \def\x{2.9}  % piston position
  \def\L{3.7}  % container length
  \def\l{2.2}  % piston arm length
  \def\v{0.68} % velocity
  
  % WALL
  \draw[wall]
    (0,\Rb) -- (0,-\Rb) --++ (\L,0) arc (-90:90:{\Ra} and {\Rb}) -- cycle;
  \draw[walldark] (0,0) ellipse ({\Ra} and \Rb);
  
  % SHELL
  \draw[walldark]
    (0,\Rb) rectangle++ (\L,\w);
  \draw[walldark]
    (0,-\Rb) rectangle++ (\L,-\w);
  \draw[walldark]
    (\L,\Rb+\w) arc (90:-90:{\Ra+\w} and {\Rb+\w}) --++ (0,\w) arc (-90:90:{\Ra} and {\Rb}) -- cycle;
  \draw[walldark]
    (0,\Rb) arc (90:270:{\Ra} and {\Rb}) --++ (0,-\w) arc (-90:-270:{\Ra+\w} and {\Rb+\w}) -- cycle;
  
  % PISTON
  \draw[walldark]
    (\x,\Rb) arc (90:270:{\Ra} and {\Rb}) --++ (-2*\w,0) arc (-90:-270:{\Ra} and {\Rb}) -- cycle;
  \draw[piston] (\x,0) ellipse ({\Ra} and \Rb);
  \draw[piston]
    (\x,\rb) arc (90:270:{\ra} and {\rb}) --++ (\l,0) --++ (0,2*\rb) -- cycle;
  \draw[walldark] (\x+\l,0) ellipse ({\ra} and \rb);
  
  % LABELS
  \draw[->,very thick,orange!90!black] (\x,0.5*\Rb) --++ (0.2*\L,0)
    node[right=-2,orange!90!black] {$P$};
  \node[right,blue!60!black,above] at (\L/2-\Ra,\Rb+\w) {$V$, $P$, $T$};
  \draw[<-,thick,blue!60!black] (\x,0.7*\Rb) to[in=-30] (\x,1.2*\Rb)
    node[below=3,above left] {$A$};
  
  % GAS PARTICLE
  \pic at (-0.12*\x, 0.2*\Rb) {gasparticle={vec={ -40:0.7*\v}}};
  \pic at (-0.07*\x,-0.5*\Rb) {gasparticle={vec={  48:0.6*\v}}};
  \pic at ( 0.00*\x, 0.3*\Rb) {gasparticle={vec={ 105:0.6*\v}}};
  \pic at ( 0.05*\x,-0.5*\Rb) {gasparticle={vec={-100:0.6*\v}}};
  \pic at ( 0.08*\x, 0.0*\Rb) {gasparticle={vec={  70:0.5*\v}}};
  \pic at ( 0.07*\x, 0.7*\Rb) {gasparticle={vec={ -10:0.9*\v}}};
  \pic at ( 0.15*\x,-0.2*\Rb) {gasparticle={vec={  30:0.7*\v}}};
  \pic at ( 0.20*\x,-0.8*\Rb) {gasparticle={vec={ -10:0.6*\v}}};
  \pic at ( 0.35*\x, 0.6*\Rb) {gasparticle={vec={-110:0.7*\v}}};
  \pic at ( 0.35*\x,-0.6*\Rb) {gasparticle={vec={ 140:0.4*\v}}};
  \pic at ( 0.40*\x, 0.9*\Rb) {gasparticle={vec={ -40:0.7*\v}}};
  \pic at ( 0.43*\x,-0.2*\Rb) {gasparticle={vec={  75:0.8*\v}}};
  \pic at ( 0.50*\x, 0.5*\Rb) {gasparticle={vec={-170:0.5*\v}}};
  \pic at ( 0.52*\x,-0.7*\Rb) {gasparticle={vec={ 120:0.6*\v}}};
  \pic at ( 0.60*\x, 0.4*\Rb) {gasparticle={vec={ -80:0.5*\v}}};
  \pic at ( 0.63*\x,-0.6*\Rb) {gasparticle={vec={  42:0.5*\v}}};
  \pic at ( 0.65*\x,-0.2*\Rb) {gasparticle={vec={ 150:0.6*\v}}};
  \pic at ( 0.68*\x,-0.8*\Rb) {gasparticle={vec={ 190:0.5*\v}}};
  \pic at ( 0.72*\x, 0.8*\Rb) {gasparticle={vec={ 160:0.5*\v}}};
  \pic at ( 0.72*\x, 0.3*\Rb) {gasparticle={vec={  80:0.6*\v}}};
  
\end{tikzpicture}


% PISTON
\begin{tikzpicture}
  \def\Ra{0.45}
  \def\Rb{1.10}
  \def\ra{0.20}
  \def\rb{0.25}
  \def\w{0.12}  % wall thickness
  \def\l{2}     % piston length
  \def\ang{140} % momentum angle
  \def\p{1.3}   % momentum length
  
  % PISTON
  \draw[->,very thick,orange!90!black] (2*\w,{0.4*(\rb+\Rb)}) --++ (0.55*\l,0)
    node[right=-2,orange!90!black] {$P$};
  \draw[piston]
    (2*\w,\rb) --++ (\l,0) arc (90:-90:{\ra} and {\rb}) --++ (-\l,0) -- cycle;
  \draw[walldark]
    (0,\Rb) arc (90:-90:{\Ra} and {\Rb}) --++ (2*\w,0) arc (-90:90:{\Ra} and {\Rb}) -- cycle;
  \draw[piston] (0,0) ellipse ({\Ra} and \Rb);
  
  % GAS PARTICLE
  \draw[->,very thick,red!80!black]
    (\ang:\p) node[left=1] {$\vb{p}_\text{i} = m\vb{v}_\text{i}$} coordinate (I) -- (0,0);
  \draw[->,very thick,red!80!black]
    (0,0) -- (-\ang:\p) node[left] {$\vb{p}_\text{f} = m\vb{v}_\text{f}$};
  \node[circle,fill,inner sep=2,ball color=black!80!blue] at (I) {};
  
\end{tikzpicture}


\end{document}
