勾股定理
勾股定理算是本教程中比较简单的公式。在Scratch中,它的主要作用是计算距离。
话不多说,看看它的公式吧——
注:a, b, c在图形中表示三角形的3条边,在公式中则表示对应那条边的长度。
这个公式描述了直角三角形中三条边的关系。 也就是说,只要知道其中两条边的长度,就能算出剩下一条边的长度。
案例解析
它有什么用呢?我们来看一个简单的例子:
如图,你在一栋12m高的楼下,要将一把13m长的梯子架到楼顶,计算梯子与楼房底端的距离d。
不难发现,楼房墙壁是垂直于地面的。地面、墙壁、梯子构成了一个直角三角形:
在直角三角形中,就可以运用我们前面提到的公式——勾股定理。
a² + b² = c²
在这个问题中:
a = 楼房高 = 12 b = 我们要求的距离 = d c = 梯子长度 = 13
代入公式可以得到:
12² + d² = 13²
然后解方程就可以了——
d² = 13² - 12²
d = sqrt(169 - 144)
d = sqrt(25)
d = 5
所以梯子离楼房底端的距离是5m。
sqrt是什么?那是square root的简写,中文叫“平方根”,是“平方”的逆运算。 简而言之,如果你想知道 “x² = 25,那么x等于几?”,就可以用平方根计算:
5² = 25 sqrt(25) = 5
Scratch里也有这个函数,中文叫“平方根”(严格来说应该是“算术平方根”)。 不会手算也没关系,交给Scratch就行了:
我们再来看一个更常见例子:
如图,玩家的坐标是(0, 0),敌人的坐标是(40, 30)。计算玩家和敌人的距离d。
这次没有上次那样现成的直角三角形了。
不过仔细观察不难发现,坐标轴x轴和y轴是垂直的。 利用这个直角,我们可以构造出直角三角形。(划重点,这个方法后面会经常用到)
有了直角三角形,就可以使用勾股定理了。
d² = 40² + 30²
跟上次一样,解方程就可以得到答案
d = sqrt(40² + 30²)
= sqrt(1600 + 900)
= sqrt(2500)
= 50
所以离敌人的距离是50。
Scratch应用
在游戏设计中,计算距离的应用场景简直太多了:判断敌人是否在射程内、是否受到爆炸溅射伤害、是否碰到敌人……
有了勾股定理的帮助,我们可以写出计算距离的方法:
输入与目标的相对坐标,就能得到离目标的距离。比如:
为什么不把减号写进函数里?这个函数的作用可不只有计算距离。比如:
短短几行代码,就实现了“WASD移动,且沿各个方向移动速度都相同”的效果。 你可以尝试自己分析一下这段程序的原理,以及distance R()在其中的作用。这里就不详细讲解了。
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=simple-math/simple/lec01&type=comment"
title="{小Simple也能看懂的Scratch常用数学知识 01}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>