声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10775|回复: 35

[编程技巧] [转帖]matlab时钟动画

[复制链接]
发表于 2006-1-1 11:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. %将下列命令复制到程序运行窗口:
  2. try %可以运行
  3. close all
  4. hfig=figure('visible','off');
  5. set(hfig,'NumberTitle','off');
  6. set(hfig,'name','My Clock');
  7. set(hfig,'MenuBar','none');
  8. set(hfig,'color',[0.5 0.7 0.3]);
  9. set(hfig,'visible','on');
  10. A=linspace(0,6.3,1000);
  11. x1=8*cos(A);
  12. y1=8*sin(A);

  13. x2=7*cos(A);
  14. y2=7*sin(A);
  15. plot(x1,y1,'b','linewidth',1.4)
  16. hold on
  17. plot(x2,y2,'b','linewidth',3.5)
  18. fill(0.4*cos(A),0.4*sin(A),'r');
  19. axis off

  20. axis([-10 10 -10 10])
  21. axis equal
  22. set(gca,'position',[[0.13 0.05 0.775 0.815]])
  23. title(date,'fontsize',18)
  24. for k=1:12;
  25. xk=9*cos(-2*pi/12*k+pi/2);
  26. yk=9*sin(-2*pi/12*k+pi/2);
  27. plot([xk/9*8 xk/9*7],[yk/9*8 yk/9*7],'color',[0.3 0.8 0.9])
  28. h=text(xk,yk,num2str(k),'fontsize',16,'color',...
  29. [0.9 0.3 0.8],'HorizontalAlignment','center');
  30. end
  31. % 计算时针位置
  32. ti=clock;
  33. th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;
  34. xh3=4.0*cos(th);
  35. yh3=4.0*sin(th);
  36. xh2=xh3/2+0.5*cos(th-pi/2);
  37. yh2=yh3/2+0.5*sin(th-pi/2);
  38. xh4=xh3/2-0.5*cos(th-pi/2);
  39. yh4=yh3/2-0.5*sin(th-pi/2);
  40. hh=fill([0 xh2 xh3 xh4 0],[0 yh2 yh3 yh4 0],[0.6 0.5 0.3]);

  41. % 计算分针位置
  42. tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;
  43. xm3=6.0*cos(tm);
  44. ym3=6.0*sin(tm);
  45. xm2=xm3/2+0.5*cos(tm-pi/2);
  46. ym2=ym3/2+0.5*sin(tm-pi/2);
  47. xm4=xm3/2-0.5*cos(tm-pi/2);
  48. ym4=ym3/2-0.5*sin(tm-pi/2);
  49. hm=fill([0 xm2 xm3 xm4 0],[0 ym2 ym3 ym4 0],[0.6 0.5 0.3]);
  50. % 计算秒针位置
  51. ts=-(ti(6))/60*2*pi+pi/2;
  52. hs=plot([0 7*cos(ts)],[0 7*sin(ts)],...
  53. 'color',[0.6 0.5 0.3],'linewidth',3);
  54. set(gcf,'doublebuffer','on');
  55. k=1;
  56. while k<6;
  57. ti=clock;
  58. % 计算时针位置
  59. th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;
  60. xh3=4.0*cos(th);
  61. yh3=4.0*sin(th);
  62. xh2=xh3/2+0.5*cos(th-pi/2);
  63. yh2=yh3/2+0.5*sin(th-pi/2);

  64. xh4=xh3/2-0.5*cos(th-pi/2);
  65. yh4=yh3/2-0.5*sin(th-pi/2);
  66. set(hh,'XData',[0 xh2 xh3 xh4 0],'YData',[0 yh2 yh3 yh4 0])

  67. % 计算分针位置
  68. tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;
  69. xm3=6.0*cos(tm);
  70. ym3=6.0*sin(tm);
  71. xm2=xm3/2+0.5*cos(tm-pi/2);
  72. ym2=ym3/2+0.5*sin(tm-pi/2);
  73. xm4=xm3/2-0.5*cos(tm-pi/2);
  74. ym4=ym3/2-0.5*sin(tm-pi/2);
  75. set(hm,'XData',[0 xm2 xm3 xm4 0],'YData',[0 ym2 ym3 ym4 0])
  76. % 计算秒针位置
  77. ts=-(ti(6))/60*2*pi+pi/2;
  78. set(hs,'XData',[0 7*cos(ts)],'YData',[0 7*sin(ts)])
  79. drawnow;
  80. pause(0.09)
  81. end
  82. catch

  83. end
复制代码



转自研学

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2006-5-27 09:02 | 显示全部楼层
诶?我怎么运行不成功。
发表于 2006-5-27 09:04 | 显示全部楼层
诶?我怎么运行不成功。

这个大概与人品无关吧? 呵呵,我试下。
发表于 2006-5-27 15:16 | 显示全部楼层
做的真好!赞一个
发表于 2006-5-27 16:47 | 显示全部楼层
哈哈,看了,不错。可以用来装饰一下自己的程序哈。
发表于 2006-5-27 20:15 | 显示全部楼层
相当不错
谢谢
发表于 2006-9-22 16:08 | 显示全部楼层
简直帅呆了
发表于 2006-9-22 16:38 | 显示全部楼层
在M-file文件里执行没有出现时钟,而在命令窗口确出现了,这是什么原因呢?
发表于 2006-9-23 06:20 | 显示全部楼层
原帖由 realhappy 于 2006-9-22 16:38 发表
在M-file文件里执行没有出现时钟,而在命令窗口确出现了,这是什么原因呢?


我执行都没有问题,不知道是否有什么提示?
发表于 2006-9-23 16:00 | 显示全部楼层
没有提示错误,但是没有时钟出现。
发表于 2006-9-23 17:26 | 显示全部楼层
原帖由 realhappy 于 2006-9-23 16:00 发表
没有提示错误,但是没有时钟出现。


的确有类似的问题,而且我昨天在m文件中运行时不成功,今天就成功了,不过今天虽然出现时钟,但是没有出现日期,比较奇怪
发表于 2006-11-4 00:27 | 显示全部楼层
不错,很漂亮
我也运行不成功
好像是说CATCH那一句有问题

[ 本帖最后由 ChaChing 于 2009-3-18 21:39 编辑 ]
发表于 2006-11-20 17:05 | 显示全部楼层
好可爱啊,谢谢!
发表于 2006-11-20 17:09 | 显示全部楼层
原帖由 realhappy 于 2006-9-22 16:38 发表
在M-file文件里执行没有出现时钟,而在命令窗口确出现了,这是什么原因呢?

我也发现了这个问题,为什么呢?高手出来回答一下吧。
发表于 2006-11-21 09:57 | 显示全部楼层
偶像啊,太强了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 16:29 , Processed in 0.071832 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表