File:AnalogClockAnimation1_3hands_1h_in_4min.gif
De Wikipedia, a enciclopédia encyclopedia
AnalogClockAnimation1_3hands_1h_in_4min.gif (115 × 115 píxeis, tamanho: 4,93 MB, tipo MIME: image/gif, cíclico, 3 601 quadros, 4 min 13 s)
Esta imagem provém do Wikimedia Commons, um acervo de conteúdo livre da Wikimedia Foundation que pode ser utilizado por outros projetos.
|
Descrição do ficheiro
DescriçãoAnalogClockAnimation1 3hands 1h in 4min.gif |
Deutsch: Animation einer Analoguhr
English: Animation of an analog clock |
Data | |
Origem | Obra do próprio |
Autor | Jahobr |
Outras versões |
|
GIF desenvolvimento InfoField | |
Código fonte InfoField | MATLAB codefunction AnalogClockAnimation1()
% source code that produces a GIF and a SVG
%
% 2017-04-28 Jahobr
%% create figure
figHandle = figure(15674455);
clf
axesHandle = axes;
hold(axesHandle,'on')
set(figHandle, 'Units','pixel');
axis equal;
set(axesHandle,'position',[-0.05 -0.05 1.1 1.1]); % stretch axis bigger as figure, easy way to get rid of ticks [x y width height]
set(figHandle, 'position',[1 1 1000 1000]); % big start image for antialiasing later [x y width hight]
xlim([-1.2 1.2]);
ylim([-1.2 1.2]);
map = gray(8);
set(figHandle,'GraphicsSmoothing','on') % requires at least version 2014b
angleOffPoints = linspace(0,2*pi,121);
angleOffPoints(end) = angleOffPoints(end)+0.001; % fix small rendereing bug; otherwiese the line is not perfectly closed
[X,Y] = pol2cart(angleOffPoints,1);
plot(X,Y,'LineWidth',5,'color',[0 0 0]) % outer line
[pathstr,fname] = fileparts(which(mfilename)); % save files under the same name and at file location
for minut = 1:60 % minute marks
x_y = [0 0;... x
0.95 1]; % y
x_y = rotateInMinutes(x_y,minut);
plot(x_y(1,:),x_y(2,:),'LineWidth',3,'color',[0 0 0]) % line
end
for minut = 5:5:60 % hour marks
x_y = [0 0;... x
0.9 1]; % y
x_y = rotateInMinutes(x_y,minut);
plot(x_y(1,:),x_y(2,:),'LineWidth',5,'color',[0 0 0]) % line
end
for hou = 1:12 % hour numbers
x_y = [0;... x
0.79]; % y
x_y = rotateInMinutes(x_y,hou*5);
if or( hou==10 , hou==11 )
x_y(1,:) = x_y(1,:)+0.03;
end
text(x_y(1,:),x_y(2,:),num2str(hou),'color',[0 0 0],'VerticalAlignment','middle','HorizontalAlignment','center','FontUnits','normalized','FontSize',0.09,'FontName','Helvetica') % 'Interpreter','latex') % line
end
% hour hand
angleOffPoints = linspace(0,2*pi,49);
radii = ones(size(angleOffPoints))*0.06;
radii(13) = 0.65;
radii([12 14]) = 0.40;
radii([11 15]) = 0.1;
[X_hour,Y_hour] = pol2cart(angleOffPoints,radii);
h_hour = patch(X_hour,Y_hour,map(3,:),'EdgeColor',[0 0 0],'LineWidth',2.5); %
% minute hand
angleOffPoints = linspace(0,2*pi,49);
radii = ones(size(angleOffPoints))*0.045;
radii(13) = 0.95;
radii([12 14]) = 0.8;
angleOffPoints(12) = angleOffPoints(12)+0.1;
angleOffPoints(14) = angleOffPoints(14)-0.1;
[X_minu,Y_minu] = pol2cart(angleOffPoints,radii);
h_minu = patch(X_minu,Y_minu,map(2,:),'EdgeColor',[0 0 0],'LineWidth',2.5); %
% second hand
angleOffPoints = linspace(0,2*pi,49);
radii = ones(size(angleOffPoints))*0.03;
radii(13) = 0.94;
radii([12 14]) = 0.91;
[X_sec,Y_sec] = pol2cart(angleOffPoints,radii);
X_sec(12) = X_sec(11); % create vertical line
X_sec(14) = X_sec(15); % create vertical line
h_sec = patch(X_sec,Y_sec,map(1,:),'EdgeColor',[0 0 0],'LineWidth',2.5); %
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3-hands %%%%%%%%%%%%%%%%%%%%%%%%%%%%
nFrames = 60*60+1;
for iFrame = 1:nFrames
secon = iFrame-1;
x_y = rotateInMinutes([X_hour;Y_hour],secon/60/60*5);
set(h_hour,'xData',x_y(1,:),'yData',x_y(2,:));
x_y = rotateInMinutes([X_minu;Y_minu],floor(secon/60));
set(h_minu,'xData',x_y(1,:),'yData',x_y(2,:));
x_y = rotateInMinutes([X_sec;Y_sec],secon);
set(h_sec,'xData',x_y(1,:),'yData',x_y(2,:));
drawnow;
%% save animation 1 "3 hands"
f = getframe(figHandle);
f1 = imresize(f.cdata,115/1000); % the size reduction: adds antialiasing
if iFrame == 1 % create variable
im1 = rgb2ind(f1,map,'nodither');
im1(1,1,1,nFrames) = 0; % allocate
else
im1(:,:,1,iFrame) = rgb2ind(f1,map,'nodither');
end
if iFrame == 27*60+13
if ~isempty(which('plot2svg'))
plot2svg(fullfile(pathstr, [fname '_still_frame.svg']),figHandle) % by Juerg Schwizer
else
disp('plot2svg.m not available; see http://www.zhinst.com/blogs/schwizer/');
end
end
end
imwrite(im1,map,fullfile(pathstr, [fname '_3hands_1h_in_4min.gif']),'DelayTime',1/15,'LoopCount',inf) % (60*60)/15/60
disp([fname '_3hands_1h_in_4min.gif has ' num2str(numel(im1)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit
imwrite(im1,map,fullfile(pathstr, [fname '_3hands_1h_in_realtime.gif']),'DelayTime',1,'LoopCount',inf) %
disp([fname '_3hands_1h_in_realtime.gif has ' num2str(numel(im1)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2-hands %%%%%%%%%%%%%%%%%%%%%%%%%%%%
set(figHandle, 'position',[1 1 900 900]); % big start image for antialiasing later [x y width hight]
set(h_sec,'xData',X_sec,'yData',Y_sec+10); % move second hand out
nFrames = 60*12;
for iFrame = 1:nFrames
minu = iFrame-1;
x_y = rotateInMinutes([X_hour;Y_hour],minu/60*5);
set(h_hour,'xData',x_y(1,:),'yData',x_y(2,:));
x_y = rotateInMinutes([X_minu;Y_minu],floor(minu));
set(h_minu,'xData',x_y(1,:),'yData',x_y(2,:));
%% save animation 1 "2 hands" 12-hour
drawnow;
f = getframe(figHandle);
f1 = imresize(f.cdata,250/900); % the size reduction: adds antialiasing
if iFrame == 1 % create variable
im1 = rgb2ind(f1,map,'nodither');
im1(1,1,1,nFrames) = 0; % allocate
else
im1(:,:,1,iFrame) = rgb2ind(f1,map,'nodither');
end
if iFrame == 27*60+13
if ~isempty(which('plot2svg'))
plot2svg(fullfile(pathstr, [fname '.svg']),figHandle) % by Juerg Schwizer
else
disp('plot2svg.m not available; see http://www.zhinst.com/blogs/schwizer/');
end
end
%% save animation 2 "2 hands" 1-hour
if minu <= 60 % 61 frames
if iFrame == 1 % create variable
im2 = rgb2ind(f.cdata,map,'nodither');
im2(1,1,1,61) = 0; % allocate
else
im2(:,:,1,iFrame) = rgb2ind(f.cdata,map,'nodither');
end
end
end
imwrite(im1,map,fullfile(pathstr, [fname '_2hands_12h_in_1min.gif']),'DelayTime',1/12,'LoopCount',inf) % (12*60)/12
disp([fname '_2hands_12h_in_1min.gif has ' num2str(numel(im1)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit
imwrite(im1,map,fullfile(pathstr, [fname '_2hands_12h_in_realtime.gif']),'DelayTime',60,'LoopCount',inf) %
disp([fname '_2hands_12h_in_realtime.gif has ' num2str(numel(im1)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit
imwrite(im2,map,fullfile(pathstr, [fname '_2hands_1h_in_6sec.gif']),'DelayTime',1/10,'LoopCount',inf) % 60/10
disp([fname '_2hands_1h_in_6sec.gif has ' num2str(numel(im2)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit
imwrite(im2,map,fullfile(pathstr, [fname '_2hands_1h_in_realtime.gif']),'DelayTime',60,'LoopCount',inf) %
disp([fname '_2hands_1h_in_realtime.gif has ' num2str(numel(im2)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit
if ispc; dos(['explorer ' pathstr]); end % open folder with files in it
return
function x_y = rotateInMinutes(x_y,minut)
anglee = -minut/60*2*pi;
rotM = [cos(anglee) -sin(anglee); sin(anglee) cos(anglee)];
x_y = rotM*x_y;
|
Licenciamento
Eu, titular dos direitos de autor desta obra, publico-a com a seguinte licença:
A utilização deste ficheiro é regulada nos termos Creative Commons - CC0 1.0 Dedicação Universal ao Domínio Público. | |
A pessoa que associou uma obra a este documento dedicou-a ao domínio público, renunciando a todos os seus direitos sobre a obra em todo o mundo ao abrigo da legislação de direitos de autor, incluindo a todos os direitos legais conexos, na medida permitida por lei. Pode copiar, modificar, distribuir e executar a obra, até com fins comerciais, sem pedir autorização.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse |
Elementos retratados neste ficheiro
retrata
Um valor sem um elemento no repositório Wikidata
28 abril 2017
image/gif
5b2c2f6dcfd0f31b801c6bec9a3d30e48c4f2a6f
5 165 577 byte
252,99999999998192 segundo
115 pixel
115 pixel
Histórico do ficheiro
Clique uma data e hora para ver o ficheiro tal como ele se encontrava nessa altura.
Data e hora | Miniatura | Dimensões | Utilizador | Comentário | |
---|---|---|---|---|---|
atual | 22h27min de 27 de abril de 2017 | 115 × 115 (4,93 MB) | Jahobr | User created page with UploadWizard |
Utilização local do ficheiro
Não há nenhuma página que use este ficheiro.
Utilização global do ficheiro
As seguintes wikis usam este ficheiro:
- en.wiktionary.org