function [  ] = plot_trajectory_particles( xtrue, x, w, dt )
%PLOT_TRAJECTORY_PARTICLES Summary of this function goes here
%   Detailed explanation goes here

% Create a new figure for this plot
figure

% Plot ground truth trajectory:
plot(xtrue(1,:), xtrue(2,:), 'r');
hold on % keep drawing into the same figure

% Draw the estimate of the same trajectory.
% Normalize weights
s = sum(w,3);
w = w ./ repmat(s,1,1,size(w,3));
mux = sum(x.*repmat(w,3,1,1),3);
plot(mux(1,:), mux(2,:), 'b')

% Only at some times: Draw all particles
ptime = 4/dt; % Once in 4 seconds

xdraw = x(:,1:ptime:end,:);

% Draw particles
nSamples = size(x,3);
for i = 1:size(xdraw,2)
    currx = xdraw(:,i,:);
    quiver(reshape(currx(1,:,:),nSamples,1,1), ...
        reshape(currx(2,:,:),nSamples,1,1), ...
        cos(reshape(currx(3,:,:),nSamples,1,1)), ...
        sin(reshape(currx(3,:,:),nSamples,1,1)));        
end

% Description & legend
axis equal
xlabel('x in m')
ylabel('y in m')
title('robot trajectory with uncertainty estimates')
legend('true trajectory', ...
       'estimate (mean)', ...
       'location', 'SouthEast');


end

