MATLAB制作漂亮时钟

上传人:206****923 文档编号:91849624 上传时间:2019-07-02 格式:DOC 页数:24 大小:132.52KB
返回 下载 相关 举报
MATLAB制作漂亮时钟_第1页
第1页 / 共24页
MATLAB制作漂亮时钟_第2页
第2页 / 共24页
MATLAB制作漂亮时钟_第3页
第3页 / 共24页
MATLAB制作漂亮时钟_第4页
第4页 / 共24页
MATLAB制作漂亮时钟_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《MATLAB制作漂亮时钟》由会员分享,可在线阅读,更多相关《MATLAB制作漂亮时钟(24页珍藏版)》请在金锄头文库上搜索。

1、MATLAB 制作漂亮手表制作漂亮手表 .1 一、问题一、问题的的提出提出1 二、理论分析二、理论分析1 三、实验步骤三、实验步骤1 四、程序实现四、程序实现2 五、实验结果及结果分析五、实验结果及结果分析5 六、程序及其说明六、程序及其说明8 MATLAB 制作漂亮手表制作漂亮手表 一、问题的提出一、问题的提出 随着科技的日新月异,人们的生活节奏变得越来越快,而准确 的把我时间也变得越来越重要,几乎人人都会携带可以知道时间 的东西,比如手表,手机,怀表,于是在此提出问题,如何通过 matlab 数字化模拟日常生活中所用的手表的转动? 二、理论分析二、理论分析 完整的时钟界面有时针,分针,秒针

2、以及刻度等组成,而要用 matlab 模拟出这些部件,则只需由外至内,一部部的模拟出表面 的图形,以及它的运转法则。 三、实验步骤三、实验步骤 1.了解手表的表盘中由哪些东西构成,将需要通过 matlab 作出 来的部件记下。 2.观察手表的秒针,分针,以及时针的运转规律,构想出通过 matlab 来实现指针的转动方法。 3.着手编写 matlab 程序来实现这一过程。 4.完成程序,检验程序的可行性,并完善,使作出来的手表表 盘尽可能的美化。 5.完成实验报告。 四、程序实现四、程序实现 1.画一个大的圆圈,表示手表的最外层的圈圈,通过 plot 画圆 来实现,x,y 用参数方程确定。 2.

3、通过 line 画直线的方式,画出表盘中得分针和秒针的小的刻 度,一共 60 个。 3.同样的方式,画出时针的大的刻度,一共 12 个,并在正上方 的刻度下表上 12. 4.运用 clock 指令读取系统时间,并将其作为初始时间。 5.采用同样的方式分别做出第一、第二、第三个小圆盘,具体 程序就不在此给出了。 6.分别做出大表盘以及小表盘中得指针,采用 fill 指令分别实 现时针,分针和秒针。在此列举大表盘中得时针做出方法。 7.加入以数字形式显示时间的指令,具体实现方法如下 显示初始时间: 8.设计指针的运转,当秒针每转动一秒时,相应的改变大表盘 中秒针,分针,以及时针的位置,以及小圆圈中

4、得指针位置。 数据的改变: 大圆圈的指针数据: 小圆圈中指针的数据: 图像中指针的位置改变: 9.当指针转动一圈时,相应的数据应如何变化: 10.数字显示也许相应的改变: 11为使秒针的运动符合时间的规律,采用 pause 指令: 五、实验结果及结果分析五、实验结果及结果分析 运行程序,得到结果: 六、程序及其说明六、程序及其说明 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,

5、y);axis(-12 12 -15 12); axis equal; hold on; axis(off); text(-0.6,9,fontsize2012); theta0=;xa=;xb=;ya=;yb=; for i=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 for i=1:12 %画出12个时针的刻度,为了美观, 采取个别不画的原则

6、 if i=1|i=3|i=5|i=9 continue end theta0(i)=i*pi/6; xa=(r-1.5)*cos(theta0(i); xb=(r-1.5)*sin(theta0(i); ya=(r-0.36)*cos(theta0(i); yb=(r-0.36)*sin(theta0(i); line(xa;ya,xb;yb,linewidth,3); end for i=1:12 %在60个小刻度的基础上对时针的刻度 加粗 theta0(i)=i*pi/6; xa=(r-0.3)*cos(theta0(i); xb=(r-0.3)*sin(theta0(i); ya=r*

7、cos(theta0(i); yb=r*sin(theta0(i); line(xa;ya,xb;yb,linewidth,3); end t=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,

8、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); plot(x1,y1); theta_10=;x1a=;x1b=;y1a=;y1b=; for i=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=y

9、1_0+r1*sin(theta_10(i); line(x1a;y1a,x1b;y1b,linewidth,2); end text(x1_0+r1-0.7,y1_0,6); %部分刻度给予数字显示 text(x1_0-r1+0.1,y1_0,18); 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);h1y

10、2=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(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=linspa

11、ce(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=;x2b=;y2a=;y2b=; for i=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_2

12、0(i); y2b=y2_0+r2*sin(theta_20(i); line(x2a;y2a,x2b;y2b,linewidth,1); end text(x2_0-0.3,y2_0+r2-0.8,60); %部分刻度给予数字显示 text(x2_0+1.4,y2_0-1.2,20); text(x2_0-2,y2_0-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(thet

13、as1+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,s1y2,s1y3,s1y4,s1y1,g); plot(x2_0,y2_0,w .,markersize,7); % 添加中间小圆圈,美化表盘 % for i=1:60 %画出12个时针的刻度,为了美观,采 取个别不画的原则 if (i=1 end theta

14、s1=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); 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

15、); 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(thetah-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);s1y2=y1_0+0.2*sin(thetas1+pi/2); s1x3=x2_0+1.8*cos(theta

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号