File:AnalogClockAnimation1_3hands_1h_in_4min.gif
ウィキペディア フリーな encyclopedia
AnalogClockAnimation1_3hands_1h_in_4min.gif (115 × 115 ピクセル、ファイルサイズ: 4.93メガバイト、MIME タイプ: image/gif、ループします、3,601 フレーム、4分 13秒)
![]() |
ウィキメディア・コモンズのファイルページにある説明を、以下に表示します。
|
概要
解説AnalogClockAnimation1 3hands 1h in 4min.gif |
Deutsch: Animation einer Analoguhr
English: Animation of an analog clock |
日付 | |
原典 | 投稿者自身による著作物 |
作者 | Jahobr |
その他のバージョン |
|
GIF 開発 InfoField | |
ソースコード 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;
|
ライセンス
この作品の著作権者である私は、この作品を以下のライセンスで提供します。
![]() ![]() |
このファイルはクリエイティブ・コモンズ CC0 1.0 全世界 パブリック・ドメイン提供のもとで利用可能にされています。 |
ある作品に本コモンズ証を関連づけた者は、その作品について世界全地域において著作権法上認められる、その者が持つすべての権利(その作品に関する権利や隣接する権利を含む。)を、法令上認められる最大限の範囲で放棄して、パブリック・ドメインに提供しています。
この作品は、たとえ営利目的であっても、許可を得ずに複製、改変・翻案、配布、上演・演奏することが出来ます。 http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse |
キャプション
このファイルの内容を1行で記述してください
このファイルに描写されている項目
題材
ウィキデータ項目がない値
28 4 2017
image/gif
5b2c2f6dcfd0f31b801c6bec9a3d30e48c4f2a6f
5,165,577 バイト
252.99999999998192 秒
115 ピクセル
115 ピクセル
ファイルの履歴
過去の版のファイルを表示するには、その版の日時をクリックしてください。
日付と時刻 | サムネイル | 寸法 | 利用者 | コメント | |
---|---|---|---|---|---|
現在の版 | 2017年4月27日 (木) 22:27 | ![]() | 115 × 115 (4.93メガバイト) | Jahobr | User created page with UploadWizard |
ファイルの使用状況
このファイルを使用しているページはありません。
グローバルなファイル使用状況
以下に挙げる他のウィキがこの画像を使っています:
- en.wiktionary.org での使用状況