S4E08 Penrose阶梯:哪里是最高点?
你能找到下面阶梯的最高点吗?

这个是著名的Penrose阶梯,是一个有名的几何学悖论,指的是一个始终向上或向下但却走不到头的阶梯,可以被视为彭罗斯三角形的一个变体,在此阶梯上永远无法找到最高的一点或者最低的一点。
为什么会有这样的视觉效果呢?我们转动一下来看……

原来它是在一个三维的空间绘制的,那已经学过GGB 的同学,你们可以自己探索出来怎么绘制吗?你觉得有哪些 困难呢?(基本上在第一步就可以完全解决你的困惑,后面的都是已经学习过的内容啦~对于新同学,本节课是一节很容易上手的课程,新同学也快快开始操练吧~~)
今天这节课,你将收获:
1.3D 绘图情境下,绘制立体图形
2.使用指令平移对象
3.使用Sequence指令绘制一系列的对象
4. 取用序列里面的元素
这些指令其实我们都已经学过了,有基础的同学们,可以试着在3D 绘图里面自己现在探索喽~其他同学请看下面的学习内容。
1 绘制一个长方体
平时我们绘制的都是二维的图形,今天我们会在不同的工作区来绘制长方体。
A. 打开工作区
i. 右上角-新建-【3D绘图】。
在这里我们就可以进行绘制立体图形啦~观察一下这个界面和平时的二维绘图区域有什么不同吗?
ii. 绘制长方体
想一下我们之前绘制“角”的时候,使用的是角的什么定义呢?【动态定义】在GGB 里面我们经常会用到动态的定义来绘制图形。比如,长方体可以看做是一个四边形平移产生的,这就是我们绘制立体图形的一个方式。
方法一:绘制四边形,拉成长方体
a. 选择-【多边形】-选择xoy平面内的四个点,绘制四边形
b. 选择-【拉成柱体】-沿z轴拖动上述四边形,形成长方体
方法二:
a. 选择-【多边形】-选择xoy平面内的四个点,绘制四边形
b. 设置高度h,h=0.2
c. 选择-【拉成柱体】-点击四边形,在弹出的高度输入框中,输入希望的高度,比如3h

2 平移长方体
当我们绘制了一个长方体之后,就不需要再重复上面的工作了,我么可以使用【平移】指令进行平移即可。
Translate( <Object>, <Vector> )【翻译:【平移(对象,平移向量)】(注意,立体空间的向量的表示方法)】
Vector( <Point> )【翻译:向量(点)】
我们可以找到上面棱柱的名称为g1,你可以书写怎么样的指令来让前面的长方体在x轴上进行平移呢?答案见①
好像只在x轴上平移还不够,还需要往上进行升,所以你可以怎么修改你的指令呢?答案见②
方法一
以此类推,可以再平移g2……然后再沿着y轴和x轴的负半轴平移。
方法二
我们发现,g1在沿着x 轴平移和上升的过程中,其实是在不断地重复平移,如果每一次平移都以g1为起点的话,那平移向量就是递增的,这种重复性的我们可以使用【序列】来帮助我们快速完成。
Sequence( <Expression>, <Variable>, <Start Value>, <End Value> )【翻译:序列(表达式,变量,起始值,终止值)】
我们需要重复的就是(Translate( g1, Vector((1,0,2h)) )),我们把其中需要不断增加的量,用函数表示即可。你可以写出这个指令吗?答案见③。
接下来我们可以平移序列l1中的第四个对象,使得它沿着y轴的正半轴进行上升。那么这时候我们可以使用【元素】指令,取出l1中的第四个元素。
Element( <List>, <Position of Element> )【翻译:元素(序列名称,位置)】
那取出l1中的第四个元素的指令可以怎么写呢?答案见④
那么我们可以继续使用【序列】指令,进行平移指令见⑤
以此类推……
3 美化一下
在【设置】中,可以对不同方向的阶梯设置不同的颜色。
4 转动图形,产生错觉
最后,我们可以通过转动找到恰好的点,产生视觉误差,你做到了吗?
答案区
红色的部分,可根据情况进行调整
① g2=Translate( g1, Vector((1,0,0)) )
② g2=Translate( g1, Vector((1,0,2h)) )
③ l1=Sequence(Translate( g1, Vector((1,0,0.2k)) ),k,1,4)
④ Element(l1,4)
⑤ l2=Sequence(Translate( Element(l1,4), Vector((0,1,0.2k)) ),k,1,4)
参考资料
【GGB】https://www.geogebra.org/m/hQ83dGHj
【Bili】https://www.bilibili.com/video/av43796708?p=4