
上一个作品,我们是用海龟来趣味演示“三角形两边之和大于第三边”:

那么,“三角形两边之差小于第三边”可以怎么演示呢?我们来看看——

也就是将三角形的BC边旋转至与AB边重合,而“两边之差”即为两边不重合的部分,再将此旋转至AC边,即可看到是AC边更长。
那么,此作品是怎么制作的呢?

可以看到左边的代数区,指令并不多,那么,其中有什么小亮点呢?小亮点:
- 指令一目了然,易于修改;
- 一个滑动条即可搞定整个演示;
- 表示“两边之差”的线段颜色与AB、BC中较长的一边一致。
制作思路
边的旋转,可以直接用旋转(rotate)指令:

然而,我们发现:
- 旋转(a, k β, B)还得到了点B'和C',也就是线段a的两个端点旋转所得的点。
- 后面,我们还要将三角形AB边进行旋转,那么,又得到两个点。
- 这么一来,代数区也显得杂乱!
为使代数区更简洁,我们可以抓住其本质。归根结底,是点的动带动线段的动,变化的动态过程即为0到1的过程。
- 比如,要让BC边绕着点B旋转,那么只需旋转点C,再将其与点B连成线段即可。
- 旋转的过程,由上图可以看到:BC边逆时针旋转β度后,即与AB边重合。
- 而旋转的过程,就是旋转角度是由0度变到β度。于是,如果让k表示由0到1的滑动条,那么,就是旋转k×β度。
下面,就开始动手制作吧!
创建基础对象
备注:角度(angle)。
- 使用工具创建三角形ABC,即t1;
- 并输入角度(t1),得到三角形的三个内角——α、β、γ;
- 创建滑动条k,最小值为0,最大值为1。

想一想:如果只用滑动条k来控制先旋转BC边,再旋转表示“两边之差”的线段。那么,滑动条k的最大值得是多少?
前面说到,旋转的过程,即为0到1的变化过程,当k为0到1时,控制BC边旋转。
而表示“两边之差”的线段的旋转过程,也是0到1的变化过程。
假设k在1到2的时候,可以控制该线段的旋转,那么,只需让k-1,就可以使得,当1≤k≤2时,就有0≤k-1≤1。

如果在旋转BC边后,有一个暂停的效果,再旋转表示“两边之差”的线段,可以怎么做呢?
- 假设当1<k<1.3时,有暂停的效果。
- 那么,就是当k≥1.3时,才开始旋转表示“两边之差”的线段。
- 于是,只需让k2=如果(k≥1.3,k-1.3)。
所以,需将k的最大值改为2.3,即k=滑动条(0, 2.3)。

核心制作
进入到制作的核心部分,所需指令如下:

这里,对点C''的构造怎么理解呢?
- 这是第二次旋转时,所需要的旋转点。
- 当a边比c边短时,将点C'逆时针旋转α。
- 当a边比c边长时,将点C'顺时针旋转180° - α。

细节完善
将点C、C'',以及a边隐藏。

当k≤1时,旋转BC边;当1 < k < 1.3,截取表示“两边之差”的线段。
那么,需要设置c、f的显示条件为k≤1;g的显示条件为1 < k < 1.3。

另外,BC边隐藏时,点B也应该隐藏,于是点B的显示条件也是k≤1。
为使效果更好,将三角形的各边调整为不同的颜色。
至于线段g、h的颜色,需与a、c边中较长的一边的颜色一致,则需要先判断长短,再决定设置为哪个颜色。
于是,在k的更新时脚本输入:
设置颜色(g, 如果(c>a,"blue","black"))
设置颜色(h, 如果(c>a,"blue","black"))
备注:设置颜色即setcolor。
设置颜色( <对象>, "<Color>" )
创建按钮
回顾整个制作,就是用滑动条k来控制的,那么,演示按钮与复位按钮的脚本就容易写了!演示按钮,即:启动动画(k)复位按钮,即:赋值(k,0)

至此,整个作品就大功告成了!
结语
回顾整个作品的制作,你能否体会到:
- 用一个滑动条来控制整个动画演示的关键?
- 线段动的本质是什么?
- 演示旋转过程的关键是?
源文件获取方式,请见啊K的个人介绍。