MATLAB制作漂亮时钟版本_第1页
MATLAB制作漂亮时钟版本_第2页
MATLAB制作漂亮时钟版本_第3页
MATLAB制作漂亮时钟版本_第4页
MATLAB制作漂亮时钟版本_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLABMATLAB 制作漂亮手表 1 1一、问题的提出 1 1二、理论分析 1 1三、实验步骤 2 2四、程序实现 2 2五、实验结果及结果分析 6 6六、程序及其说明 9 9、问题的提由随着科技的日新月异, 人们的生活节奏变得越来越快, 而准确的把我时间也变得越来越重要,几乎人人都会携带可以知道时间的东西,比如手表,手机,怀表,于是在此提出问题,如何通过 matlabmatlab 数字化模拟日常生活中所用的手表的转动?二、理论分析完整的时钟界面有时针,分针,秒针以及刻度等组成,而要用 matlabmatlab 模拟出这些部件,则只需由外至内,一部部的模拟出表面的图形,以及它的运转法则。

2、MATLAMATLA制作漂亮手表三、实验步骤1 1 .了解手表的表盘中由哪些东西构成,将需要通过 matlabmatlab 作出来的部件记下。2 2 .观察手表的秒针,分针,以及时针的运转规律,构想出通过 matlamatlab b来实现指针的转动方法。3 3 .着手编写 matlabmatlab 程序来实现这一过程。4 4 .完成程序,检验程序的可行性,弁完善,使作出来的手表表盘尽可能的美化。5 5 .完成实验报告。四、程序实现1 1 .画一个大的圆圈,表示手表的最外层的圈圈,通过 plotplot 画圆来实现,x,yx,y 用参数方程确定。thetarlinspace(012*pif100

3、00);r=10;x=r,*cos(theta);y=r,*sin(theta);she:plot(x,y):axis(-1212-1512):2 2 .通过 lineline 画直线的方式,画出表盘中得分针和秒针的小的刻度,一共 6060 个。fori=l:60%画出0个刻度th仃第0(i)=i*pi/30;xa=(r-0.3)*COE(thetaO(i):xb=(r-0,3)*sixi(thetaO(i);ya=r*cos(thetaO(i);yb=r*sin(thetaO(i);line(xa:ya.xb;ybl):end3 3 .同样的方式,画出时针的大的刻度,一共 1212 个,弁在

4、正上方的刻度下表上 12.12.fori=i:12%画出12个时针的刻度,为了美观,采取个别不画的原则ifi=l|i=3|11-5|11-9continueendthetaOti)=i*pi/6:xa=(r-E5)*cos(thetad(i).;xb=(r-l.5)*sin(theta0(i);yv=(r-0,36)*cos(thetaO(i);yb-(r-0*36)*sin(thetaO(i):line(xa:ya,zb:yb,liziewidtht3):endtext(-0.6,9,Jfontsize2012);4 4 .运用 clockclock 指令读取系统时间,弁将其作为初始时间。t

5、=clQck;hO=t(4):%设定初始时间nO=t:sO=floor仕(6);5 5 .采用同样的方式分别做出第一、第二、第三个小圆盘,具体程序就不在此给出了。6 6 .分别做出大表盘以及小表盘中得指针,采用 fillfill 指令分别实现时针,分针和秒针。在此列举大表盘中得时针做出方法。theta5二(15-s0)*pi/30;thet(15-mO)+pi/30-s0*pi/lSOO;thetah=(3-hO)*pi/6JXO*Pi/36O-sQ*pi/21600;hxl=(r-7)*cos(thetah+pi/25);hyl=(r-7)*sin(thetah+pi/25):hx2=(r-

6、4)*cos(thetah1:hy2=(r-4)*sin(thetah;hx3=r-7)*coshetah-pi*sin(thetas-i*pi/30);JXhlxhhlx2jhlx3Jhix4JhlxlljJydata.hlyl,hly2,hly3jhly4?hiyl);9 9 .当指针转动一圈时,相应的数据应如何变化:s0=s0+l;m计算当前时间if-0=60s0=0:m0=m04-l:endifm0=60m0=0;hO=h(H-l:引ndifhO=24h0=0;end1010 . .数字显示也许相应的改变:delateStiwe);髯倒除句上MNGOMMH睡30仃0*更新昼示当苗明闻利

7、野时用的酊字位筑,送搔是否在款字前面加口tiirf-teMtfl-Ss-lSj,4sOKUA2atr:GrJiifLUJi2str(50jfontsize,3O/F4?ntitafieJJIins即甄新);elseifsOlOl&9ja=L1tlirfsttxtf3s_12anUit2strIhQ)BxsCrKnuMxStrJ;Orj.hufistICsO)jBfentsiE*r3ClPPFontnaBeJartipt-tsH门Miiaif).“Hif血仃加4国tiji.=text(-B_12B0iEnuii25rfhO)pr:,HUM2st匚ijaD)J;(T+IWU*2Er*制)J

8、forrtsi:e,1e3011rFn.tnan.e-THK-WKDitarf)ls.if叩门OU丽=10!6hq=lQtu.s=teit(3-121l(nua25r(hO):.ima25rtl:l:。):(Tnwi25tl1sfl)1.font53.3e!p3DsFtJEvtrmeTix=K=wHariar.)4lB.eif西。冷MhWlOWh翻10tiE=teit(-3,=-L2,fl?-nunxstr(hD1)3:D?Fnwixstr(w0)r:,prm*25r(sD)j.fontsize?301,?PantnMc-rTinesNevKnaan)lfekts0J(A&10tie=

9、teqrt(-3,-1nuBStrth。)7:0,AOvQ)jJ.!PjimiWmTI*。)/fontSize?3。/Fant“54rJTiiteIfliewKaraan)elseifsO=04&n0:=J04AhOi=tnetf-*-L2arT,12strCh。)/?12str(Qi)?i.:J3T;2str(sQ)J?fntsiitJa3QFontnW尸上TintsWnrECMTI):eliEtne=tExt3-12BnuiiEsirthflh二:nwi2sti-UjJ:.nuiiistr(EO)|.!foirtsuep3QjFuntnanJIU.ESMEVRonar/Jenden

10、dndendendxndxnd ndendndend11.11.为使秒针的运动符合时间的规律,采用 pausepause 指令:pause(0.9891:五、实验结果及结果分析运行程序,得到结果:23:34:3623:35:0723:35:39六、程序及其说明clear;clf;%作出大的表盘%set(gcf,name,钟表,color,white);theta=linspace(0,2*pi,10000);r=10;x=r.*cos(theta);y=r.*sin(theta);shg;plot(x,y);axis(-1212-1512);axisequal;holdon;axis(off)

11、;text(-0.6,9,fontsize2012);theta0=;xa=;xb=;ya=;yb=;fori=1:60%画出60个刻度theta0(i)=i*pi/30;xa=(r-0.3)*cos(theta0(i);xb=(r-0.3)*sin(theta0(i);ya=r*cos(theta0(i);yb=r*sin(theta0(i);line(xa;ya,xb;yb);end采取个别不画的原则ifi=1|i=3|i=5|i=9continueendtheta0(i)=i*pi/6;xa=(r-1.5)*cos(theta0(i);xb=(r-1.5)*sin(theta0(i);y

12、a=(r-0.36)*cos(theta0(i);yb=(r-0.36)*sin(theta0(i);fori=1:12%画出12个时针的刻度,为了美观,line(xa;ya,xb;yb,linewidth,3);endfori=1:12%在60个小刻度的基础上对时针的刻度加粗theta0(i)=i*pi/6;xa=(r-0.3)*cos(theta0(i);xb=(r-0.3)*sin(theta0(i);ya=r*cos(theta0(i);yb=r*sin(theta0(i);line(xa;ya,xb;yb,linewidth,3);endt=clock;h0=t(4);%设定初始时间

13、m0=t(5);s0=floor(t(6);thetas1=(15-s0)*pi/30;%计算3个小表盘中指针的初始角度thetam1=(15-m0)*pi/30-s0*pi/1800;thetah1=(6-h0)*pi/12-m0*pi/720-s0*pi/43200;%作第一个小表盘%r1_0=6;theta1_0=pi/6;r1=3;theta1=linspace(0,2*pi,10000);x1_0=r1_0*cos(theta1_0);y1_0=r1_0*sin(theta1_0);x1=x1_0+r1.*cos(theta1);y1=y1_0+r1.*sin(theta1);plo

14、t(x1,y1);theta_10=口;x1a=;x1b=;y1a=;y1b=;fori=1:12%画出第一个小表盘的刻度theta_10(i)=i*pi/6;x1a=x1_0+(r1-0.3)*cos(theta_10(i);x1b=y1_0+(r1-0.3)*sin(theta_10(i);y1a=x1_0+r1*cos(theta_10(i);y1b=y1_0+r1*sin(theta_10(i);line(x1a;y1a,x1b;y1b,linewidth,2);endtext(x1_0+r1-07y1_0,6);%部分刻度给予数字显示text(x1_0-r1+0.1,y1_0,18)

15、;text(x1_0-0.4,y1_0-r1+0.5,12);text(x1_0-0.4,y1_0+r1-0.5,24);h1x1=x1_0+0.4*cos(thetah1-pi);h1y1=y1_0+0.4*sin(thetah1-pi);%作出第一个小表盘的指针h1x2=x1_0+0.2*cos(thetah1+pi/2);h1y2=y1_0+0.2*sin(thetah1+pi/2);h1x3=x1_0+1.8*cos(thetah1);h1y3=y1_0+1.8*sin(thetah1);h1x4=x1_0+0.2*cos(thetah1-pi/2);h1y4=y1_0+0.2*sin

16、(thetah1-pi/2);h1=fill(h1x1,h1x2,h1x3,h1x4,h1x1,h1y1,h1y2,h1y3,h1y4,h1y1,g);plot(x1_0,y1_0,w.,markersize,6);%作第二个小表盘%r2_0=6;theta2_0=5*pi/6;r2=3;theta2=linspace(0,2*pi,10000);x2_0=r2_0*cos(theta2_0);y2_0=r2_0*sin(theta2_0);x2=x2_0+r2.*cos(theta2);y2=y2_0+r2.*sin(theta2);plot(x2,y2);theta_20=口;x2a=口;

17、x2b=口;y2a=;y2b=;fori=1:60%画出第二个小表盘的刻度theta_20(i)=i*pi/30;x2a=x2_0+(r2-0.5)*cos(theta_20(i);x2b=y2_0+(r2-0.5)*sin(theta_20(i);y2a=x2_0+r2*cos(theta_20(i);y2b=y2_0+r2*sin(theta_20(i);Iine(x2a;y2a,x2b;y2b,linewidth,1);endtext(x2_0-03y2_0+r2-0.8,60);%部分刻度给予数字显示text(x2_0+1.4,y2_0-1.2,20);text(x2_0-2,y2_0

18、-1.2,40);s1x1=x2_0+0.4*cos(thetas1-pi);s1y1=y2_0+0.4*sin(thetas1-pi);%作出第二个小表盘的指针s1x2=x2_0+0.2*cos(thetas1+pi/2);s1y2=y1_0+0.2*sin(thetas1+pi/2);s1x3=x2_0+1.8*cos(thetas1);s1y3=y2_0+1.8*sin(thetas1);s1x4=x2_0+0.2*cos(thetas1-pi/2);s1y4=y2_0+0.2*sin(thetas1-pi/2);S1=fill(s1x1,s1x2,s1x3,s1x4,s1x1,s1y1

19、,s1y2,s1y3,s1y4,s1y1,g);plot(x2_0,y2_0,w.,markersize,7);%添加中间小圆圈,美化表盘%fo门=1:60%画出12个时针的刻度,为了美观,采取个别不画的原则if(i=1&i=20&i=40&i60i=1;endthetas1=thetas1-pi/30;%时间走动时,变化相应的表盘的摆针的角度thetam1=thetam1-pi/1800;thetah1=thetah1-pi/43200;sx1=(r-8)*cos(thetas-i*pi/30+pi);sy1=(r-8)*sin(thetas-i*pi/30+pi);

20、sx2=(r-0.3)*cos(thetas-i*pi/30);sy2=(r-0.3)*sin(thetas-i*pi/30);mx1=(r-6)*cos(thetam-j*pi/1800+pi/30);my1=(r-6)*sin(thetam-j*pi/1800+pi/30);mx2=(r-1.5)*cos(thetam-j*pi/1800);my2=(r-1.5)*sin(thetam-j*pi/1800);mx3=(r-6)*cos(thetam-j*pi/1800-pi/30);my3=(r-6)*sin(thetam-j*pi/1800-pi/30);hx1=(r-7)*cos(th

21、etah-k*pi/21600+pi/25);hy1=(r-7)*sin(thetah-k*pi/21600+pi/25);hx2=(r-4)*cos(thetah-k*pi/21600);hy2=(r-4)*sin(thetah-k*pi/21600);hx3=(r-7)*cos(thetah-k*pi/21600-pi/25);hy3=(r-7)*sin(thetah-k*pi/21600-pi/25);s1x1=x2_0+0.4*cos(thetas1-pi);s1y1=y2_0+0.4*sin(thetas1-pi);s1x2=x2_0+0.2*cos(thetas1+pi/2);s1

22、y2=y1_0+0.2*sin(thetas1+pi/2);s1x3=x2_0+1.8*cos(thetas1);s1y3=y2_0+1.8*sin(thetas1);s1x4=x2_0+0.2*cos(thetas1-pi/2);s1y4=y2_0+0.2*sin(thetas1-pi/2);m1x1=x3_0+0.4*cos(thetam1-pi);m1y1=y3_0+0.4*sin(thetam1-pi);m1x2=x3_0+0.2*cos(thetam1+pi/2);m1y2=y3_0+0.2*sin(thetam1+pi/2);m1x3=x3_0+1.8*cos(thetam1);m

23、1y3=y3_0+1.8*sin(thetam1);m1x4=x3_0+0.2*cos(thetam1-pi/2);m1y4=y3_0+0.2*sin(thetam1-pi/2);h1x1=x1_0+0.4*cos(thetah1-pi);h1y1=y1_0+0.4*sin(thetah1-pi);h1x2=x1_0+0.2*cos(thetah1+pi/2);h1y2=y1_0+0.2*sin(thetah1+pi/2);h1x3=x1_0+1.8*cos(thetah1);h1y3=y1_0+1.8*sin(thetah1);h1x4=x1_0+0.2*cos(thetah1-pi/2);

24、h1y4=y1_0+0.2*sin(thetah1-pi/2);set(s,xdata,sx1;sx2,ydata,sy1;sy2);%画出变化后的指针位置set(m,xdata,0,mx1,mx2,mx3,0,ydata,0,my1,my2,my3,0);set(h,xdata,0,hx1,hx2,hx3,0,ydata,0,hy1,hy2,hy3,0);set(m1,xdata,m1x1,m1x2,m1x3,m1x4,m1x1,ydata,m1y1,m1y2,m1y3,m1y4,m1y1);set(s1,xdata,s1x1,s1x2,s1x3,s1x4,s1x1,ydata,s1y1,s1y2,s1y3,s1y4,s1y1);set(h1,xdata,h1x1,h1x2,h1x3,h1x4,h1x1,ydata,h1y1,h1y2,h1y3,h1y4,h1y1);i=i+1;k=k+1;j=j+1;s0=s0+1;%计算当前时间ifs0=60s0=0;m0=m0+1;endifm0=60m0=0;h0=h0+1;endifh0=24h0=0;enddelete(time);%删除句柄ifs010&m010&h010%重新显示当前时间,判断时间的数字位数,选择是否在数字前面加0time=te

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论