这个实例我是跟着b站一个视频做的,这是链接:
[学用] Geogebra 时钟_哔哩哔哩_bilibili
一、设置外形
首先要画一个圆形,先设置半径、圆心,然后画圆
- cR=5
- O=(0,0)
- cO=Circle(O,cR)
然后设置圆盘上的刻度线
时针、分针和秒针刻度线需要区分,首先在圆上描点,然后绘制刻度线
- mPs=Sequence((cR;pi/2-pi/30*k),k,1,60)
- mSs=Sequence(Segment(mps(k),0.95*mPs(k)),k,0,60)
- hSs=Sequence(Segment(mPs(k),0.9*mPs(k)),k,5,60,5)
文字部分,时钟数字1~12
hTs=Sequence(Text(k,0.8*mPs(5*k)-(0.3,0.3)),k,1,12)
接着绘画指针
- h=Slider(0,24,1)
-
- m=Slider(0,60,1)
-
- s=Slider(0,60,1)
设置指针长度
- hR=2
- mR=3
- sR=4
设置角度
- sA=pi/2-s/60*2*pi
- vS=Vector(0,0+(sR;sA))
- mA=pi/2-(m*60+s)/60*60*2*pi
- vM=Vector(0,0+(mR;mA))
- hA=pi/2-(h*60*60+m*60+s)/12*60*60*2*pi
- vH=Vector(0,0+(hR;hA))
接下来可以将指针设置为自己喜欢的颜色
二、设置动画
将时针、分针和秒针设置为自动转动,设置两个滑动条,速度和时间,v是速度,t是时间
- v=Slider(1,120,1)
- t=Slider(0,24*60*60,1,v/(8640))
现在有两种形式,第一种是通过t来改变s、m、h的值
- SetValue(s,Mod(t,60))
- SetValue(m,Mod(floor(t/60),60))
- SetValue(h,Mod(floor(t/3600),24))
第二种形式是通过s、m、h改变t的值
首先要改变进度条让s、m、h可以从60继续拖动自动跳到0
直接更改脚本,在右键属性里
s 脚本:
- SetValue(t,Mod(t+1,86400))
- SetValue(s,Mod(s+1,60))
- SetValue(m,Mod(floor(t/60),60))
- SetValue(h,Mod(floor(t/3600),24))
m脚本:
- SetValue(t,Mod(t+60,86400))
- SetValue(s,Mod(s+1,60))
- SetValue(m,Mod(floor(t/60),60))
- SetValue(h,Mod(floor(t/3600),24))
h脚本:
- SetValue(t,Mod(t+3600,86400))
- SetValue(s,Mod(s+1,60))
- SetValue(m,Mod(floor(t/60),60))
- SetValue(h,Mod(floor(t/3600),24))
接下来,添加按钮:启动、停止、现在时间按钮
启动 脚本:
StartAnimation(t,True)
停止 脚本:
- StartAnimation(t,False)
- StartAnimation(h,False)
- StartAnimation(m,False)
- StartAnimation(s,False)
现在时间 脚本:
- ST=系统时间在()
- SetValue(t,ST(4)*3600+ST(3)*60+ST(2))
接下来添加屏幕
添加文本设置脚本:
floor(h/10) 余式(h,10) : floor(m/10) 余式(m,10) : floor(s/10) 余式(s,10)
差不多就这些,下图是我设置的时钟,点击现在时间就可以将时间更新到当前时间