figure(WindowStyle="docked"), 
ax1 = subplot(2,1,1);
hold on, box on
ax1.XTick = [];
ax1.YTick = [];
A = plot(0, 1, 'ro', MarkerSize=10, MarkerFaceColor='r');
B = plot(0, 0, 'bo', MarkerSize=10, MarkerFaceColor='b');
[carA, ~, alphaA] = imread('https://cdn.pixabay.com/photo/2013/07/12/11/58/car-145008_960_720.png');
[carB, ~, alphaB] = imread('https://cdn.pixabay.com/photo/2014/04/03/10/54/car-311712_960_720.png');
carA = imrotate(imresize(carA, 0.1), -90);
carB = imrotate(imresize(carB, 0.1), 180);
alphaA = imrotate(imresize(alphaA, 0.1), -90);
alphaB = imrotate(imresize(alphaB, 0.1), 180);
carA = imagesc(carA, AlphaData=alphaA, XData=[-0.1, 0.1], YData=[0.9, 1.1]);
carB = imagesc(carB, AlphaData=alphaB, XData=[-0.1, 0.1], YData=[-0.1, 0.1]);
txtA = text(0, 0.85, 'A', FontSize=12);
txtB = text(0, 0.17, 'B', FontSize=12);
yline(1, 'r--')
yline(0, 'b--')
xline(1, 'k--')
xline(2, 'k--')
text(1, -0.2, 'Q', FontSize=20, HorizontalAlignment='center')
text(2, -0.2, 'R', FontSize=20, HorizontalAlignment='center')
xlim([0, 3])
ylim([-.3, 1.3])
ax2 = subplot(2,1,2);
box on, hold on
xlabel('t'), ylabel('v')
vA = plot(0, 1, 'r.-');
vB = plot(0, 0, 'b.-');
xline(1, 'k--')
xline(2, 'k--')
xlim([0, 3])
ylim([-.3, 1.8])
p1 = patch([0, 0, 0, 0], [0, 1, 1, 0], [248, 209, 188]/255, ...
    EdgeColor = 'none', ...
    FaceAlpha = 0.3);
v = 1; 
L = 1; 
a(1) = 9*v^2/8/L;
a(2) = 0;
a(3) = -1;
t_BatQ = sqrt(2*L/a(1)); 
v_B2 = a(1) * t_BatQ; 
p2 = patch([t_BatQ, t_BatQ, t_BatQ, t_BatQ], [1, 1, v_B2, v_B2], ...
    [248, 209, 188]/255, ...
    EdgeColor = 'none', ...
    FaceAlpha = 0.3);
p3 = patch([2, 2, 2, 2], [1, v_B2, v_B2, 1], [194, 234, 179]/255, ...
    EdgeColor = 'none', ...
    FaceAlpha = 0.3);
tt = linspace(0, 3, 2000);
for t = tt
    A.XData = v * t;
    vA.XData = [vA.XData, t];
    vA.YData = [vA.YData, 1];
    if t < t_BatQ
        B.XData = 1/2 * a(1) * t^2;
        vB.XData = [vB.XData, t];
        vB.YData = [vB.YData, a(1) * t];
        p1.XData = [0, t, t, 0];
        p1.YData = [0, vB.YData(end), 1, 1];
    elseif t >= t_BatQ && t < 2
        B.XData = L + (t - t_BatQ) * v_B2;
        vB.XData = [vB.XData, t];
        vB.YData = [vB.YData, v_B2];
        p2.XData = [t_BatQ, t, t, t_BatQ];
        p2.YData = [1, 1, vB.YData(end), vB.YData(end)];
    else
        B.XData = 2*L + v_B2 * (t - 2) + 1/2 * a(3) * (t-2)^2;
        vB.XData = [vB.XData, t];
        vB.YData = [vB.YData, v_B2 + a(3) * (t - 2)];
        p3.XData = [2, t, t, 2];
        p3.YData = [1, 1, vB.YData(end), v_B2];
    end
    txtA.Position(1) = A.XData(end);
    txtB.Position(1) = B.XData(end);
    carA.XData = A.XData(end) + [-.1, .1];
    carB.XData = B.XData(end) + [-.1, .1];
    drawnow
end