先来看下画数轴的动态演示:
用方向键盘控制
或者启动动画:
在标出“1”后,动画速度变快
可以看到是逐一显示直线、原点(并标出0)、正方向;接着,从原点向右,每隔一个单位长度取一点,并标出数值;从原点向左,每隔一个单位长度取一点,并标出数值。
制作思路:
- “直线、原点、正方向”可逐一做出,而标记正方向可用向量(Vector)。
- 具有规律的线段、数字文本都可分别用一条指令搞定,其显示问题,就是让不同列表的元素交替出现。
此作品可以学到:
- 不同列表的元素交替出现的解决方法。
- 怎么改变滑动条的速度。
关于不同列表的元素交替出现的解决方法,之前,主要是利用表格区来完成。
用如果指令来分类
在一图看懂怎么在数轴上画出表示根号n的点中,也有用其他方式来处理:
修改增量、原列表
这次是借画数轴来分享一种新的方法——受河北李建军老师启发,利用映射(Zip)、余式(Mod)、提取(Take)等指令来解决。
“直线、原点、正方向”
指令如下:
注:滑动条(Slider)、线段(Segment)。
这里需要注意的是:线段f的显示条件为1 ≤ n ≤ 3,是为了当n≥4时,显示向量(“正方向”),而原有线段则隐藏。
“取点并标出数值”
下面将感受到使用映射的方便快捷!
映射( <表达式>, <变量1>, <列表1>, <变量2>, <列表2>, ... )
即变量1依次取列表1中的元素代入表达式,变量2(如有)依次取列表2(如有)中的元素代入表达式,……最终生成一个列表。
由于所作对象的规律性,可想到用序列(Sequence)或映射来构造:
注:扁平列表(Flatten)、文本(Text)。
效果如下,l2为多条小线段,l3为相应的数字文本:
基础对象做出来了!那么,如何逐一显示l2的第一个元素、l3的第一个元素、l2的第二个元素、l3的第二个元素……
这就是不同列表的元素交替出现问题!
- 按照逐一出现的顺序,将其放在同一列表里。
- 这里有2个列表,也就是依次放置第1个列表的第一个元素、第2个列表的第一个元素、第1个列表的第二个元素、第2个列表的第二个元素、……由此得到一个新列表!
- 这个新列表中,除以2的余数是1的元素都是原本第1个列表的元素;除以2的余数是0的元素即原本第2个列表的元素。
- 所以,可以按照余数的不同来提取这个新列表的元素!
即:
效果见下图:
滑动条的速度变化
为了让滑动条启动动画时,演示效果更好——希望当显示单位长度后,也就是n>6时,动画速度变快些。
于是可在滑动条的速度框中输入:
如果(n > 6, 2, 0.5)
当n>6,速度为2,否则为0.5
于是,就有开头演示的效果。
结语
不同列表的元素交替出现要义【假设有m个列表】:
- 按照逐一出现的顺序,将其放在同一列表里——映射、扁平列表。
- 按照除以m的余数的不同来提取这个新列表的元素——余式、提取、序列。
滑动条的速度需要不同——让滑动条的速度不是一个固定值即可。
如需源文件,请回复:数轴。