Datei:AnalogClockAnimation2 3hands 1h in 4min.gif
Erscheinungsbild
Aus MOOCsWiki Staging

Größe dieser Vorschau: 115 × 115 Pixel.
Originaldatei (115 × 115 Pixel, Dateigröße: 5,16 MB, MIME-Typ: image/gif, Endlosschleife, 3.601 Bilder, 4 min 13 s)

🌐Deutsch
Personen-Konto
Werkzeuge
Seitenwerkzeuge
Hinweis: Aufgrund technischer Beschränkungen werden Vorschaubilder hochauflösender GIF-Dateien wie dieser nicht animiert.
NEWS0LernweltNOAH fragen
🌐Deutsch
Personen-Konto
Werkzeuge
Seitenwerkzeuge
Diese Datei stammt aus Wikimedia Commons und kann von anderen Projekten verwendet werden. Die Beschreibung von deren Dateibeschreibungsseite wird unten angezeigt.
NEWS0LernweltNOAH fragenBeschreibung
| BeschreibungAnalogClockAnimation2 3hands 1h in 4min.gif |
Deutsch: Animation einer Analoguhr
English: Animation of an analog clock |
| Datum | |
| Quelle | Eigenes Werk |
| Urheber | Jahobr |
| Andere Versionen |
|
| GIF‑Erstellung InfoField | |
| Quelltext InfoField | MATLAB codefunction AnalogClockAnimation2()
% source code that produces a GIF and a SVG
%
% 2017-04-27 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 900 900]); % 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',10,'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.9 0.95]; % y
x_y = rotateInMinutes(x_y,minut);
plot(x_y(1,:),x_y(2,:),'LineWidth',8,'color',[0 0 0]) % line
end
for minut = 5:5:60 % hour marks
x_y = [0 0;... x
0.75 0.95]; % y
x_y = rotateInMinutes(x_y,minut);
plot(x_y(1,:),x_y(2,:),'LineWidth',12,'color',[0 0 0]) % line
end
% hour hand
X_Y_hour = [0 0;... x
-0.1 0.6]; % y
linW_hour = 20;
h_hour = plot(X_Y_hour(1,:),X_Y_hour(2,:),'-k','LineWidth',linW_hour); %
% minute hand
X_Y_minu = [0 0;... x
-0.2 0.94]; % y
linW_minu = 12;
h_minu = plot(X_Y_minu(1,:),X_Y_minu(2,:),'-k','LineWidth',linW_minu); %
% second hand
X_Y_sec = [0 0;... x
-0.2 0.94];
linW_sec = 8.0;
h_sec = plot(X_Y_sec(1,:),X_Y_sec(2,:),'-k','LineWidth',linW_sec); %
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2-hands %%%%%%%%%%%%%%%%%%%%%%%%%%%%
set(h_sec,'xData',X_Y_sec(1,:),'yData',X_Y_sec(2,:)+10); % move second hand out
tic
nFrames = 12*60;
for iFrame = 1:nFrames
minu = iFrame-1;
x_y = rotateInMinutes(X_Y_hour,minu/60*5);
set(h_hour,'xData',x_y(1,:),'yData',x_y(2,:));
x_y = rotateInMinutes(X_Y_minu,floor(minu));
set(h_minu,'xData',x_y(1,:),'yData',x_y(2,:));
if nFrames == 60*60*12
set(h_hour,'LineWidth',linW_hour*1.5); % thicker lines for the 12h 3Hands case
set(h_minu,'LineWidth',linW_minu*1.5); % thicker lines for the 12h 3Hands case
end
%% 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
imtemp1 = rgb2ind(f1,map,'nodither');
im1(:,:,1,iFrame) = imtemp1;
%% 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
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3-hands %%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nFrames == 60*12
msgbox(['Rendering for the full 12-hour-version will take about ' num2str(round(toc*60/60)) ' minutes.']);
end
set(h_hour,'LineWidth',linW_hour*1.5); % thicker lines for the 12h 3Hands case
set(h_minu,'LineWidth',linW_minu*1.5); % thicker lines for the 12h 3Hands case
set(h_sec, 'LineWidth',linW_sec *1.5); % thicker lines for the 12h 3Hands case
nFrames = 60*60*12;
for iFrame = 1:nFrames
secon = iFrame-1;
x_y = rotateInMinutes(X_Y_hour,secon/60/60*5);
set(h_hour,'xData',x_y(1,:),'yData',x_y(2,:));
x_y = rotateInMinutes(X_Y_minu,floor(secon/60));
set(h_minu,'xData',x_y(1,:),'yData',x_y(2,:));
x_y = rotateInMinutes(X_Y_sec,secon);
set(h_sec,'xData',x_y(1,:),'yData',x_y(2,:));
%% save animation 1 "3 hands" 12-hour
drawnow;
f = getframe(figHandle);
f1 = imresize(f.cdata,34/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
%% save animation 2 "3 hands" 1-hour
if secon <= 60*60 % 3601 frames
set(h_hour,'LineWidth',linW_hour); % normal lines
set(h_minu,'LineWidth',linW_minu); % normal lines
set(h_sec, 'LineWidth',linW_sec ); % normal lines
drawnow;
f = getframe(figHandle);
f2 = imresize(f.cdata,115/1000); % the size reduction: adds antialiasing
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
if iFrame == 1 % create variable
im2 = rgb2ind(f2,map,'nodither');
im2(1,1,1,60*60+1) = 0; % allocate
else
im2(:,:,1,iFrame) = rgb2ind(f2,map,'nodither');
end
set(h_hour,'LineWidth',linW_hour*1.5); % thicker lines for the 12h 3Hands case
set(h_minu,'LineWidth',linW_minu*1.5); % thicker lines for the 12h 3Hands case
set(h_sec, 'LineWidth',linW_sec *1.5); % thicker lines for the 12h 3Hands case
end
end
imwrite(im1,map,fullfile(pathstr, [fname '_3hands_12h_in_30min.gif']),'DelayTime',1/24,'LoopCount',inf) % (12*60*60)/24/60
disp([fname '_3hands_12h_in_30min.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_12h_in_realtime.gif']),'DelayTime',1,'LoopCount',inf) %
disp([fname '_3hands_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 '_3hands_1h_in_4min.gif']),'DelayTime',1/15,'LoopCount',inf) % (60*60)/15/60
disp([fname '_3hands_1h_in_4min.gif has ' num2str(numel(im2)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit
imwrite(im2,map,fullfile(pathstr, [fname '_3hands_1h_in_realtime.gif']),'DelayTime',1,'LoopCount',inf) %
disp([fname '_3hands_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;
|
Lizenz
Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
| Diese Datei wird unter der Creative-Commons-Lizenz CC0 1.0 Verzicht auf das Copyright zur Verfügung gestellt. | |
| Die Person, die das Werk mit diesem Dokument verbunden hat, übergibt dieses weltweit der Gemeinfreiheit, indem sie alle Urheberrechte und damit verbundenen weiteren Rechte – im Rahmen der jeweils geltenden gesetzlichen Bestimmungen – aufgibt. Das Werk kann – selbst für kommerzielle Zwecke – kopiert, modifiziert und weiterverteilt werden, ohne hierfür um Erlaubnis bitten zu müssen.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse |
Kurzbeschreibungen
Ergänze eine einzeilige Erklärung, was diese Datei darstellt.
In dieser Datei abgebildete Objekte
Motiv
Einige Werte ohne einen Wikidata-Eintrag
28. April 2017
image/gif
6e327ce05c874a044633a5efdf9e64290768521a
5.414.675 Byte
252,99999999998192 Sekunde
115 Pixel
115 Pixel
Dateiversionen
Klicke auf einen Zeitpunkt, um diese Version zu laden.
| Version vom | Vorschaubild | Maße | Benutzer | Kommentar | |
|---|---|---|---|---|---|
| aktuell | 23:27, 27. Apr. 2017 | ![]() | 115 × 115 (5,16 MB) | wikimediacommons>Jahobr | User created page with UploadWizard |
Dateiverwendung
Die folgenden 2 Seiten verwenden diese Datei: