一、简介
基于matlab时钟设计
二、源代码
function timeCompass()
%h_comaps = compass([x1;x2;x2],[y1;y2;y3])
%x1y1 x2y2 x3y3 为三个指针向量 h_compass为句柄
%%创建坐标轴做为显示表盘,并隐藏
hAxes = axes('visible','off','DrawMode','fast');
%%绘制表盘中心点
hAxesDot = axes('Visible','off','DrawMode','fast');
axis equal;
line(0,0,'Parent',hAxesDot,'Marker','o','MarkerFaceColor','k','MarkerSize',15)
try
while 1
%%获取当前时间
time = floor(clock); %向下取整 clock:将当前时间和日期返回到一个(6元)数组中。
hour = time(4); % 2008 8 26 12 31 32.75
min = time(5);
sec = time(6);
%fprintf(hour);
argHour = pi/2 - (hour + min / 60) * pi / 6;
argMin = pi/2 - (min + sec / 60) * pi / 30;
argSec = pi/2 -sec * pi/30;
%根据计算的指针弧度值创建表盘和指针
hCompass = compass(hAxes,[0.5*cos(argHour);0.8*cos(argMin);cos(argSec)],[0.5*sin(argHour);0.8*sin(argMin);sin(argSec)]);
set(hCompass,'LineWidth',3);%设置线宽
set(hCompass(3),'LineWidth',1);%设置线宽
set(hCompass(1),'Color','k');%时针红色
set(hCompass(2),'Color','k');
delete(findall(hAxes,'Type','text','-or','linestyle',':'));
%%绘制数值
ang = pi /3 ;
for i=1:12
if rem(i,3) %3d的倍数 字号12
text(0.8*cos(ang),0.8*sin(ang),num2str(i),'horizontalAlignment','center','FontSize',12,'Parent',hAxes);
else
text(0.8*cos(ang),0.8*sin(ang),num2str(i),'horizontalAlignment','center','FontSize',20,'FontWeight','bold','Color','g','Parent',hAxes);
end
ang =ang -pi/6;
end
三、运行结果
四、备注
版本:2014a