用matlab绘制一个时钟
生活随笔
收集整理的這篇文章主要介紹了
用matlab绘制一个时钟
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
話不多說,直接上干貨
hfig=figure('visible','off'); set(hfig,'NumberTitle','off'); set(hfig,'name','My Clock'); set(hfig,'MenuBar','none'); set(hfig,'color',[0.5 0.7 0.3]); set(hfig,'visible','on'); A=linspace(0,6.3,1000); x1=8*cos(A); y1=8*sin(A); x2=7*cos(A); y2=7*sin(A); plot(x1,y1,'b','linewidth',1.4) hold on plot(x2,y2,'b','linewidth',3.5) fill(0.4*cos(A),0.4*sin(A),'r'); axis off axis([-10 10 -10 10]) axis equal set(gca,'position',[0.13 0.05 0.775 0.815]) title(date,'fontsize',18) for k=1:12; xk=9*cos(-2*pi/12*k+pi/2); yk=9*sin(-2*pi/12*k+pi/2); plot([xk/9*8 xk/9*7],[yk/9*8 yk/9*7],'color',[0.3 0.8 0.9]) h=text(xk,yk,num2str(k),'fontsize',16,'color',... [0.9 0.3 0.8],'HorizontalAlignment','center'); end % 計算時針位置 ti=clock; th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2; xh3=4.0*cos(th); yh3=4.0*sin(th); xh2=xh3/2+0.5*cos(th-pi/2); yh2=yh3/2+0.5*sin(th-pi/2); xh4=xh3/2-0.5*cos(th-pi/2); yh4=yh3/2-0.5*sin(th-pi/2); hh=fill([0 xh2 xh3 xh4 0],[0 yh2 yh3 yh4 0],[0.6 0.5 0.3]); % 計算分針位置 tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2; xm3=6.0*cos(tm); ym3=6.0*sin(tm); xm2=xm3/2+0.5*cos(tm-pi/2); ym2=ym3/2+0.5*sin(tm-pi/2); xm4=xm3/2-0.5*cos(tm-pi/2); ym4=ym3/2-0.5*sin(tm-pi/2); hm=fill([0 xm2 xm3 xm4 0],[0 ym2 ym3 ym4 0],[0.6 0.5 0.3]); % 計算秒針位置 ts=-(ti(6))/60*2*pi+pi/2; hs=plot([0 7*cos(ts)],[0 7*sin(ts)],... 'color',[0.6 0.5 0.3],'linewidth',3); set(gcf,'doublebuffer','on'); k=1; while k<6; ti=clock; % 計算時針位置 th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2; xh3=4.0*cos(th); yh3=4.0*sin(th); xh2=xh3/2+0.5*cos(th-pi/2); yh2=yh3/2+0.5*sin(th-pi/2); xh4=xh3/2-0.5*cos(th-pi/2); yh4=yh3/2-0.5*sin(th-pi/2); set(hh,'XData',[0 xh2 xh3 xh4 0],'YData',[0 yh2 yh3 yh4 0]) % 計算分針位置 tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2; xm3=6.0*cos(tm); ym3=6.0*sin(tm); xm2=xm3/2+0.5*cos(tm-pi/2); ym2=ym3/2+0.5*sin(tm-pi/2); xm4=xm3/2-0.5*cos(tm-pi/2); ym4=ym3/2-0.5*sin(tm-pi/2); set(hm,'XData',[0 xm2 xm3 xm4 0],'YData',[0 ym2 ym3 ym4 0]) % 計算秒針位置 ts=-(ti(6))/60*2*pi+pi/2; set(hs,'XData',[0 7*cos(ts)],'YData',[0 7*sin(ts)]) drawnow; pause(0.09) end %% 時鐘2:(第二個程序) clf;shg; h=figure('menubar','none',... 'color','white',... 'position',[200 200 320 360],... 'name','CLOCK'); e1=uicontrol('parent',h,... %定義一個edit控件,用于存儲日期 'style','edit',... %該控件的類型為edit,可以編輯其內容 'fontsize',12,... %字體大小為12 'position',[110 20 120 30]); %位置,距離左邊110,距離底邊20,寬度為120,高度為30 b1=uicontrol('parent',h,... %定義一個text控件,顯示刻度“12” 'style','text',... 'string','12',... 'fontsize',12,... 'position',[156 275 20 20]); b2=uicontrol('parent',h,... %定義一個text控件,顯示刻度“9” 'style','text',... 'string','9',... 'fontsize',12,... 'position',[60 175 20 20]); b3=uicontrol('parent',h,... %定義一個text控件,顯示刻度“6” 'style','text',... 'string','6',... 'fontsize',12,... 'position',[156 75 20 20]); b4=uicontrol('parent',h,... %定義一個text控件,顯示刻度“3” 'style','text',... 'string','3',... 'fontsize',12,... 'position',[260 175 20 20]); s1=[0:pi/1000:2*pi]; hl=plot(cos(s1),sin(s1),'b-'); %繪制表盤的外圓 time=datestr(now); %得到當前時間 set(e1,'string',time(1:11)); %當前時間的1:11位是日期,把日期值給el sita1=pi/2-str2num(time(19:20))*pi/30; %秒針轉過的角度 sita2=pi/2-str2num(time(16:17))*pi/30+sita1/60; %分針轉過的角度 sita3=pi/2-str2num(time(13:14))*pi/6+sita2/12; %時針轉過的角度 w1=-pi/30; %設置秒針每秒轉過的角度,分針走一個半圓需要30s w2=-pi/1800; %設置分針每秒轉過的角度 w3=-pi/108000; %設置時針每秒轉過的角度 pausetime=1; axis off;axis equal hold on plot(0,0,'or'); %設置刻度 for n=pi*2:-pi/30:pi/30 %繪制表盤,繪制分鐘的刻度 a1=0.95*cos(n):0.05*cos(n)/2:cos(n);b1=0.95*sin(n):0.05*sin(n)/2:sin(n); plot(a1,b1,'r-'); end for n=pi*2:-pi/6:pi/30 %繪制表盤,繪制小時的刻度 a1=0.9*cos(n):0.1*cos(n)/2:cos(n);b1=0.9*sin(n):0.1*sin(n)/2:sin(n); plot(a1,b1,'r-'); end %時鐘指針 while 1 x1=0:0.75*cos(sita1)/2:0.75*cos(sita1);y1=0:0.75*sin(sita1)/2:0.75*sin(sita1); %根據秒針的位置繪制分針 x2=0:0.6*cos(sita2)/2:0.6*cos(sita2);y2=0:0.6*sin(sita2)/2:0.6*sin(sita2); %根據分針的位置繪制分針 x3=0:0.45*cos(sita3)/2:0.45*cos(sita3);y3=0:0.45*sin(sita3)/2:0.45*sin(sita3); %根據時針的位置繪制分針 hp1=plot(x1,y1,'b-'); hp2=plot(x2,y2,'b-','linewidth',2); hp3=plot(x3,y3,'g-','linewidth',2); sita1=sita1+w1*pausetime; %計算一秒以后秒針的角度位置 sita2=sita2+w2*pausetime; %計算一秒以后分針的角度位置 sita3=sita3+w3*pausetime; %計算一秒以后時針的角度位置 pause(pausetime); delete(hp1); delete(hp2); delete(hp3); end hold off?
總結
以上是生活随笔為你收集整理的用matlab绘制一个时钟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python PIL 单张图像变换大小—
- 下一篇: matlab simulink 求解连续