No BSD License  

Highlights from
contest clock

image thumbnail

contest clock

by

 

joke visualization of solitaire contest

MATLAB DATAVIS Contest - CONTEST CLOCK

MATLAB DATAVIS Contest - CONTEST CLOCK

Author: Rafal Kasztelanic

Creation Date: 08.04.2009

Contents

Contest clock

Below is an animation showing how the results versus the execution times evolved over the contest. The trajectory shows how results change hours by hours during the contest. The distance from center of the clock is proportional to log of results. Getting MATLAB to show this movie required embedding special html code into the file, which should work with most any modern browser.

Load contest data

load contest_data

Prepare date

[s,p,leaders] = prepareData;
orders = 3;

isLeader = [p.isLeader];
mi = min([p(isLeader).rawScore]);
ma = max([p(isLeader).rawScore]);
y = normalize([p.rawScore],orders,mi,ma);
w = y(isLeader);

Prepare results

ww=log(w);
ww = repmat(ww,10,1);
ww = reshape(ww,1,numel(ww));
mww = max(ww);
ww=115*ww/mww;

Prepare hours

hours

mint = min([p(isLeader).date]);
hour = [p(isLeader).date]-mint;

change hours to angle

angle = 2*round(hour(end))*2*pi*(hour/round(hour(end)));
angle = linspace(min(angle), max(angle), numel(ww));

Prepare background image

a=imread('clock.png');
a = imresize(a,0.333); % avi size
[sx,sy,sz]=size(a);

Calculate final trajectory points and colors

xx=sx/2+ww.*cos(-angle+pi);
yy=sy/2+ww.*sin(-angle+pi);
c=jet(numel(ww));

Create frames

kl = 1;
anglestop = pi/6;
for k=2:numel(ww),
    a=bitmapplot(xx(k-1:k),yy(k-1:k),a,struct('LineWidth',1.5,'Color',[c(k-1,:) 1]));
    if angle(k)>anglestop,
        day = ['Day ' num2str(floor((anglestop-0.01)/4/pi)+1) ',' ...
            num2str(kl-24*fix(kl./24)) ':00'];
        b=bitmaptext(day,a,[1 1],struct('FontSize',3,'Color',[0 0 0 1]));
        b=bitmapplot([sx/2 sx/2+73*cos(-anglestop+pi)],...
            [sy/2 sy/2+73*sin(-anglestop+pi)],b,...
            struct('LineWidth',5,'Color',[0 0 0 1]));
        imshow(b)
        axis equal
            F(kl) = getframe;
        kl = kl + 1;
        anglestop = anglestop + pi/6;
    end
end
% Create last frames
b=bitmaptext('Finish',a,[1 1],struct('FontSize',3,'Color',[0 0 0 1]));
imshow(b)
axis equal
F(kl) = getframe;

Create .avi file

Convert the movie to an avi

cd('html');
movie2avi(F,'clock.avi', 'fps', 2, 'compression', 'None');
cd('..');

Contact us