资源描述:
《MATLAB制作漂亮时钟》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MATLAB制作漂亮手表1一、问题的提出1二、理论分析1三、实验步骤1四、程序实现2五、实验结果及结果分析5六、程序及其说明8MATLAB制作漂亮手表一、问题的提出随着科技的日新月异,人们的生活节奏变得越来越快,而准确的把我时间也变得越来越重要,几乎人人都会携带可以知道时间的东西,比如手表,手机,怀表,于是在此提出问题,如何通过matlab数字化模拟日常生活中所用的手表的转动?二、理论分析完整的时钟界面有时针,分针,秒针以及刻度等组成,而要用matlab模拟出这些部件,则只需由外至内,一部部的模拟出表面的图形,以及它的运转法则。24三、实验步骤1.了解手表的表盘中由
2、哪些东西构成,将需要通过matlab作出来的部件记下。2.观察手表的秒针,分针,以及时针的运转规律,构想出通过matlab来实现指针的转动方法。3.着手编写matlab程序来实现这一过程。4.完成程序,检验程序的可行性,并完善,使作出来的手表表盘尽可能的美化。5.完成实验报告。四、程序实现1.画一个大的圆圈,表示手表的最外层的圈圈,通过plot画圆来实现,x,y用参数方程确定。2.通过line画直线的方式,画出表盘中得分针和秒针的小的刻度,一共60个。243.同样的方式,画出时针的大的刻度,一共12个,并在正上方的刻度下表上12.4.运用clock指令读取系统时间,
3、并将其作为初始时间。5.采用同样的方式分别做出第一、第二、第三个小圆盘,具体程序就不在此给出了。6.分别做出大表盘以及小表盘中得指针,采用fill指令分别实现时针,分针和秒针。在此列举大表盘中得时针做出方法。7.加入以数字形式显示时间的指令,具体实现方法如下24显示初始时间:8.设计指针的运转,当秒针每转动一秒时,相应的改变大表盘中秒针,分针,以及时针的位置,以及小圆圈中得指针位置。数据的改变:大圆圈的指针数据:小圆圈中指针的数据:24图像中指针的位置改变:9.当指针转动一圈时,相应的数据应如何变化:10.数字显示也许相应的改变:2411.为使秒针的运动符合时间的规
4、律,采用pause指令:五、实验结果及结果分析运行程序,得到结果:242424六、程序及其说明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]);24axisequal;holdon;axis('off');text(-0.6,9,'fontsize{20}12');theta0=[];xa=[
5、];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]);endfori=1:12%画出12个时针的刻度,为了美观,采取个别不画的原则ifi==1
6、
7、i==3
8、
9、i==5
10、
11、i==9continueendtheta0(i)=i*pi/6;xa=(r-1.5)*cos(theta0(i));x
12、b=(r-1.5)*sin(theta0(i));ya=(r-0.36)*cos(theta0(i));24yb=(r-0.36)*sin(theta0(i));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],'linewi
13、dth',3);endt=clock;h0=t(4);%设定初始时间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);24x1_0=r1_0*cos(theta1_0);y1_0=r1_