📄 fm_clock.m
字号:
function fm_clock(varargin)% FM_CLOCK create a clock%%Author: Federico Milano%Date: 11-Nov-2002%Update: 10-Feb-2003%Version: 1.0.2%%E-mail: fmilano@thunderbox.uwaterloo.ca%Web-site: http://thunderbox.uwaterloo.ca/~fmilano%% Copyright (C) 2002-2006 Federico Milanoglobal Fig Settings Themeif nargin switch varargin{1} case 'keyesc' tasto = get(gcf,'CurrentCharacter'); if (double(tasto) == 13 | double(tasto) == 27), delete(gcf); end end returnendif isunix fontname = 'Times';else fontname = 'Times New Roman';endmonth = {'Jan';'Feb';'Mar';'Apr';'May';'Jun';'Jul';'Aug';'Sep';'Oct';'Nov';'Dec'};a = clock;if Fig.clock ~= 0, return, endh0 = figure('Color',Theme.color01, ... 'Units', 'normalized', ... 'Colormap',[], ... 'CreateFcn','Fig.clock = gcf;', ... 'DeleteFcn','close(Fig.clock)', ... 'KeyPressFcn','fm_clock keyesc', ... 'FileName','fm_clock', ... 'MenuBar','none', ... 'Name','Clock', ... 'NumberTitle','off', ... 'PaperPosition',[18 180 576 432], ... 'PaperType','A4', ... 'PaperUnits','points', ... 'Position',sizefig(0.2450,0.3333), ... 'Userdata', 1, ... 'Resize','on', ... 'ToolBar','none', ... 'WindowButtonDownFcn','set(Fig.clock,''Userdata'',-1)');h1 = axes('Parent',h0, ... 'Box','on', ... 'CameraUpVector',[0 1 0], ... 'CameraUpVectorMode','manual', ... 'Color',Theme.color04, ... 'ColorOrder',Settings.color, ... 'Layer','top', ... 'Position',[0.1 0.1 0.8 0.8], ... 'Tag','Axes1', ... 'XColor',[0 0.251 0.502], ... 'XLim',[0.5 200.5], ... 'XLimMode','manual', ... 'XTick',[], ... 'XTickLabelMode','manual', ... 'YColor',[0 0.251 0.502], ... 'YDir','reverse', ... 'YLim',[0.5 167.5], ... 'YLimMode','manual', ... 'YTickLabelMode','manual', ... 'YTick',[], ... 'ZColor',[0 0 0]);hdata = uicontrol('Parent',h0, ... 'Units', 'normalized', ... 'BackgroundColor',Theme.color01, ... 'Enable','inactive', ... 'FontName',fontname, ... 'FontSize',10, ... 'FontWeight','bold', ... 'ForegroundColor',Theme.color05, ... 'Position',[0.65 0.0 0.3 0.1], ... 'String',[num2str(a(3)),' ',month{a(2)},' ',num2str(a(1))], ... 'Style','text', ... 'Tag','TextDate');day = a(3);t = 0:0.01:2*pi+0.01;x = cos(t);y = sin(t);plot(x,y,'k');patch(x,y,Theme.color04)hold onplot(0.035*x,0.035*y,'k');h = text(0,0.775*sin(pi/6),'PSAT');set(h, ... 'FontName',fontname, ... 'FontSize',10, ... 'FontAngle','oblique', ... 'FontWeight','bold', ... 'HorizontalAlignment','center')for i = 1:12 ang = pi/2-pi*i/6; h = plot([0.95*cos(ang) cos(ang)], ... [0.95*sin(ang) sin(ang)], 'k'); set(h,'LineWidth',2) xt = 0.775*cos(ang); yt = 0.775*sin(ang); ht = text(xt,yt,num2str(i)); set(ht, ... 'FontName',fontname, ... 'FontSize',12, ... 'FontAngle','oblique', ... 'FontWeight','bold', ... 'HorizontalAlignment','center')endfor i = 1:60 ang = pi*i/30; plot([0.95*cos(ang) cos(ang)], ... [0.95*sin(ang) sin(ang)],'k')endplot(0.95*x,0.95*y,'k');t1 = pi/4:0.01:3*pi/4;t2 = 3*pi/4:-0.01:pi/4;hx = 0.05+1.2*(cos(pi/4)+[cos(t1), cos(t2)])/3;hy = 0.07*[sin(t1)-sin(pi/4),sin(pi/4)-sin(t2)];mx = 0.05+2*(cos(pi/4)+[cos(t1), cos(t2)])/3;my = 0.05*[sin(t1)-sin(pi/4),sin(pi/4)-sin(t2)];s = pi/2-pi/30*a(6);b = a(6)/60;if b == 1; b = 0; endm = pi/2-pi/30*(a(5)+b);c = a(5)/60;if c == 1; c = 0; endo = pi/2-pi/6*(a(4)+c);hh = plot([hx*cos(o)-hy*sin(o)], ... [hx*sin(o)+hy*cos(o)]);hm = plot([mx*cos(m)-my*sin(m)], ... [mx*sin(m)+my*cos(m)]);hs1 = plot([0.05*cos(s) 0.98*cos(s)], ... [0.05*sin(s) 0.98*sin(s)]);hs2 = plot([0.05*cos(pi+s) 0.2*cos(pi+s)], ... [0.05*sin(pi+s) 0.2*sin(pi+s)]);set(hh, ... 'EraseMode','xor', ... 'Color',Theme.color11)set(hm, ... 'EraseMode','xor', ... 'Color',Theme.color11)set(hs1, ... 'EraseMode','xor', ... 'Color',[0.5 0 0.5])set(hs2, ... 'EraseMode','xor', ... 'Color',[0.5 0 0.5])set(gca, ... 'Visible','off', ... 'Drawmode','fast', ... 'NextPlot','add')counter = 0;while 1 try a = get(Fig.clock,'Userdata'); catch Fig.clock = 0; break end if a == -1, delete(Fig.clock) Fig.clock = 0; break end a = clock; if a(3) ~= day day = a(3); set(hdata, ... 'String',[num2str(a(3)),' ', ... month{a(2)},' ', ... num2str(a(1))]) end s = pi/2-pi/30*a(6); b = a(6)/60; if b == 1, b = 0; end m = pi/2-pi/30*(a(5)+b); c = a(5)/60; if c == 1, c = 0; end o = pi/2-pi/6*(a(4)+c); try if counter > 30 set(hh, ... 'Xdata',[hx*cos(o)-hy*sin(o)], ... 'Ydata',[hx*sin(o)+hy*cos(o)]) set(hm, ... 'Xdata',[mx*cos(m)-my*sin(m)], ... 'Ydata',[mx*sin(m)+my*cos(m)]) counter = 0; end set(hs1, ... 'Xdata',[0.05*cos(s) 0.98*cos(s)], ... 'Ydata',[0.05*sin(s) 0.98*sin(s)]) set(hs2, ... 'Xdata',[0.05*cos(pi+s) 0.2*cos(pi+s)], ... 'Ydata',[0.05*sin(pi+s) 0.2*sin(pi+s)]) catch % clock figure has been likely closed... break end pause(1/8) counter = counter + 1;end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -