少儿编程

系列

和 Vicky 一起学习 Scratch 系列之六 | 坐标系

前言

上一期,我们学习了编程中变量的概念和使用,并做了一个企鹅宝宝找妈妈的动画。

今天我们来学习在 Scratch 中表示位置的方法 —— 坐标系。

什么是坐标系?

坐标系(Coordinate system)与数学和物理有关,有各种各样的坐标系。

我们来看看几种常见的坐标系吧~

  • 一维坐标系,就是一条直线,是最简单的坐标系统,也叫数轴。0 是坐标的起点,无论什么物体在这条直线上的任何位置,都可以用它所在点的数值来表示:
  • 一维坐标系 | wikipedia

  • 二维坐标系,就是一个平面,是最为常见的一种坐标系统,也叫直角坐标系或笛卡尔坐标系。0 依然的坐标的起点,不同的是,从 0 开始有两条直线交叉穿过,左右方向是横坐标,也叫 x 坐标,上下方向是纵坐标,也叫 y 坐标。无论什么物体位于这个平面上,都可以用它所处位置的横纵坐标来表示:
  • 二维坐标系 | wikipedia

  • 三维坐标系,表示一个立体的空间。0 还是坐标的起点,不同的是,从 0 开始有三条直线交叉穿过,横坐标和纵坐标与二维坐标系是一样的,从 0 开始上下的坐标为 Z 轴坐标。空间中的任何一个物体都可以用它所在位置的 x,y,z 坐标值来表示:
  • 三维坐标系统 | wikipedia

除了以上三种坐标系之外,还有很多其他学科领域的坐标系。

比如我们用经度和纬度表示地球或其他星球上某一点的位置,这就是地理坐标系。

看两个例子:

北纬 40 度线横穿清华大学中央主楼前广场 | google map

嫦娥四号着陆于 “冯·卡门” 撞击坑

坐标是月球南纬 45.5 度,东经 177.6 度

wikipedia

Scratch 中的坐标系

Scratch 中的坐标系是上面说过的第二种,就是二维坐标系,也就是平面坐标系。

打开 Scratch,我们选择 "Xy-grid" 这个舞台背景就一目了然了:

Scratch 的舞台坐标系

我们发现,这就是一个典型的二维坐标系,舞台正中央是横纵坐标的原点,任何一个点都可以用 (x, y) 这种形式的坐标表示出来。

我们来做个简单的演示。

放一个角色到舞台上,我们选择了机器人:

角色的初始坐标确定

这里,我们在角色选好之后,调整了它的大小。重点是我们还通过 x 和 y 的设置,让角色回到了坐标系的原点。

下面,我们设定脚本,让动画开始时机器人移动到 (100, 100) 这个点:

角色按坐标进行移动

这个脚本中,我们拖动 “运动” 中的 “在 1 秒内滑行到 x: 100 y: 100 glide 1 second to x: 100 y:100” 放在开始的下方。点击开始,机器人就在 3 秒的时间内缓缓平移到了坐标 (100, 100) 的位置。

很简单吧~

好啦,我们开始做一个与坐标系有关的小动画。

程序的逻辑

这个程序的逻辑很简单,我们要用机器人移动的轨迹,在坐标系上写一个汉字:“吉”。

选择这个字的原因,一个是表示新春大吉~另外这个字很简单,横平竖直,很好写。

程序的结构

我们先来写 “吉” 字的第一笔,首先做下初始的准备。

写字用的 “画笔” 在 Scratch 中属于 “扩展 extension”,点击 “添加扩展 Add Extension” 选择 “画笔 Pen”,一套画笔代码组件就出现了:

添加画笔扩展

我们让机器人从 (0, 0) 到 (100, 100) 画一条红线,组织如下的脚本:

画笔的基本使用

  1. 全部清除 erase all:开始后,清除以往的画笔痕迹。
  2. 将笔的粗细设为 set pen size to:设置画笔的粗细,值越大就越粗。
  3. 将笔的颜色设为 set pen color to:设置画笔的颜色,在调色板中随意设置。
  4. 落笔 pen down:开始绘制前,先落笔。
  5. 抬笔 pen up:绘制结束后,要抬笔。

其实跟我们画画是一样的规则和顺序。

我们来逐一解释下画笔中的基本代码块:

这样,点击开始,随着机器人的移动,一条红线从 (0, 0) 移动到了 (100, 100) 的位置。

程序的实现

我们先来写 “吉” 字的第一笔 —— 横:

第一笔的实现

通过脚本我们发现,每写一笔的实现都很简单:只要确定了 起点坐标 和 终点坐标,就可以实现一横或一竖。

于是我们的程序就可以按这个基本步骤实现啦!

这里娃爸给出了 “吉” 字每个笔画的起止点坐标:

笔画 起点坐标 终点坐标
第一笔:横 (-74, 49) (74, 49)
第二笔:竖 (0, 80) (0, 8)
第三笔:横 (-63, 8) (63, 8)
第四笔:竖 (-50, -17) (-50, -77)
第五笔:横 (-50, -17) (50, -77)
第六笔:竖 (50, -17) (50, -77)
第七笔:横 (-50, -65) (50, -65)

“吉” 字笔画起止坐标表

这样,把所有的笔画写出来,一个机器人绘制的 “吉” 字就写好啦!

新春大吉

后续的思考

Vicky:怎么这么难呀?

没错,虽然这个字写好了,看起来也没什么问题,但我们发现这样一个情况:这段脚本太复杂了,怎么这么长?

其实,说 “难” 或 “复杂” 并不准确,确切的说法是太 “啰嗦” 了,什么意思呢?

我们发现,这个字每一笔的写法都是类似的:

类似的脚本片段

注意紫色的脚本片段,它完成了一个笔画的书写,而其他笔画的书写都是类似的,只是起止点坐标不同。

所以... 这个脚本能简化一下吗?

当然可以的,我们下次课来讲一下吧~

今天我们还知道了 9 个单词的含义:

  • coordinate 坐标
  • system 系统
  • glide 滑动
  • extension 扩展
  • pen 画笔
  • erase 擦除
  • all 所有的
  • down 向下
  • up 向上