用Geogebra做一个简单的时钟

今天我们来用Geogebra做一个简单的时钟,这是分析的一个Geogebra高手的文章,做了适当的调整,我自己亲测成功之后写的文章记录,很多知识不是很了解就是单纯的做一个记录吧。

1.打开GeoGebra,作一个以O(0,0)为圆心、半径cR=5的圆,并设置好图形的颜色和线条的粗细,依次在代数区内输入以下代码,就可以实现这个过程。

1
O = (0, 0)
1
cR = 5
1
圆周(O, cR)

2.利用点的序列命令将圆周 60等份:

1
序列((cR; π / 2 - π / 30 k), k, 1, 60)

这里的点

1
(cR; π / 2 - π / 30 k)

为极坐标,点的坐标中间用分号隔开,极径为cR(圆的半径),极角为π / 2 - π / 30 k,指以y轴正方向顺时钟旋转,

3.隐藏这些等分点,并利用线段的序列命令作出“分”的60个刻度,原作者的指令代码为

1
序列(线段(mPs(k), 0.95mPs(k)), k, 1, 60)

但是输入这行代码的时候,我这里除了错误,不能够输入进去,提示是“未知的指令mPs”,其实在这个步骤之前,原作者应该是创建了一个mPs序列,序列为

1
mPs = {(5; 84°), (5; 78°), (5; 72°), (5; 66°), (5; 60°), (5; 54°), (5; 48°), (5; 42°), (5; 36°), (5; 30°), (5; 24°), (5; 18°), (5; 12°), (5; 6°), (5; 0°), (5; 354°), (5; 348°), (5; 342°), (5; 336°), (5; 330°), (5; 324°), (5; 318°), (5; 312°), (5; 306°), (5; 300°), (5; 294°), (5; 288°), (5; 282°), (5; 276°), (5; 270°), (5; 264°), (5; 258°), (5; 252°), (5; 246°), (5; 240°), (5; 234°), (5; 228°), (5; 222°), (5; 216°), (5; 210°), (5; 204°), (5; 198°), (5; 192°), (5; 186°), (5; 180°), (5; 174°), (5; 168°), (5; 162°), (5; 156°), (5; 150°), (5; 144°), (5; 138°), (5; 132°), (5; 126°), (5; 120°), (5; 114°), (5; 108°), (5; 102°), (5; 96°), (5; 90°)}

如果我们仔细观察,这个序列的数据,就是第2步里面的序列数据,然后我们在执行代码就可以了。

4、同样利用线段的序列命令再作出“时”的12个刻度,

1
序列(线段(mPs(k), 0.9mPs(k)), k, 5, 60, 5)

5、利用文本的序列命令作出表盘上的12个数字;

1
序列(文本(k, 0.8mPs(5k) - (0.3, 0.3)), k, 1, 12, 1)

6、创建三个滑动条h、m、s,代表时、分、秒,并设置h从0-24,增量为1,m从0-60,增量为1,s从0-60,增量为1;

1
h=滑动条(0,24,1)
1
m=滑动条(0,60,1)
1
s=滑动条(0,60,1)

只需要在代数区的输入框中依次输入上述代码,就可以创建需要的滑动条

7、定义时针、分针、秒针的长度,这里我们定义时针、分针、秒针的长度分别为hR=2.5、mR=3.5、sR=4.5,在这里不需要多说,只需要将代码输入代数区的输入框中,自然就会显示对应的代码

1
hR=2.5
1
mR=3.5
1
sR=4.5

8、用向量定义秒针

1
sA=π/2-s2π/60      #秒针转过的角度
1
vS=向量(O, (sR; sA))

9、用向量定义分针

1
mA=π/2-(m*60+s)/3600*2π     #分针转过的角度
1
vM=向量(O, (mR; mA))

10、用向量定义时针

1
hA=π/2-2π(h*3600+m*60+s)/43200      #时针转过的角度
1
vH=向量(O, (hR; hA))

上述三段代码,是在创建中标的秒针、分针、时针,只需要按照顺序输入代数区的输入框,就可以创建成功,但是不要连带代码注释复制进去。

11、设置滑动条v,用以控制转动速度:设置为1—120倍速;

1
v=滑动条(1,120,1)

12、设置滑动条t,用以表示当前时刻的秒数;

1
t=滑动条(0,24*60*60,1,V/8640)

这里需要解释一下, 24∗60∗60 表示一天的秒数;在GeoGebra中滑动条运动一次的时间为10秒,这里的V/8640其实是t的进度,即10*V/86400。添加滑动条的代码不多叙述,也不给大家截图。

13、对滑动条t设置脚本

1
2
3
赋值(s,余式(t,60))
赋值(m,余式(floor(t/60),60))
赋值(h,余式(floor(t/3600),24))

14、对滑动条s设置脚本:

1
2
3
4
赋值(t,余式(t+1,86400))
赋值(s,余式(t,60))
赋值(m,余式(floor(t/60),60))
赋值(h,余式(floor(t/3600),24))

15、对滑动条m设置脚本:

1
2
3
4
赋值(t,余式(t+60,86400))
赋值(s,余式(t,60))
赋值(m,余式(floor(t/60),60))
赋值(h,余式(floor(t/3600),24))

16、对滑动条h设置脚本:

1
2
3
4
赋值(t,余式(t+3600,86400))
赋值(s,余式(t,60))
赋值(m,余式(floor(t/60),60))
赋值(h,余式(floor(t/3600),24))

说明:以上设置脚本的意思是将变量s、m、h(秒、分、时)用时间变量t及速度变量v联动起来。

17、作一个复选框,同时设置名称为a

1
a=true

18、作一下按钮,脚本如下:

1
2
3
a=!a
启动动画(t,a)
设置标题(button1,如果(a,"暂停时钟","启动时钟"))

19、在做一个按钮,设置当前时间按纽ST,并设置脚本如下:

1
2
ST=系统时间()
赋值(t,ST(4)*3600+ST(3)*60+ST(2))

到这里,一个时钟动画就做好了,最后的截图