上一个作品是制作平面图形的中心投影与平行投影,今天我们要制作的是立方体的正投影,难度要高一些。

先来看一下效果:

用geogebra画正方体展开图 立方体的正投影(1)

拉动滑动条,即可改变立方体的摆放位置,并实时显示立方体在投影面上的正投影。

为什么说这个作品的制作比上个作品的更难一些?

具体的,我们来看看应如何制作。

用geogebra画正方体展开图 立方体的正投影(2)

构造立方体、投影面

先构造立方体:

用geogebra画正方体展开图 立方体的正投影(3)

备注:正六面体(cube)、滑动条(slider)、旋转(rotate)、z轴(zAxis)

这样构造立方体,使得最左边的棱就在z轴上。将该立方体绕着左边的棱旋转,也就是绕z轴旋转。写起来比较简单,即a' = 旋转(a, α, z轴)

用geogebra画正方体展开图 立方体的正投影(4)

此时,立方体在3D绘图区比较中间的位置。为了显示效果更好,我们将立方体放到前面一些。

利用中心定位(centerview)指令:

中心定位( <视图中心坐标(x, y)|视图中心点> )

需要注意的是,中心定位指令是对当前用到的绘图区有效。

于是需激活3D绘图区,再于指令栏输入:

中心定位((-2.8,9,0))

用geogebra画正方体展开图 立方体的正投影(5)

并构造投影面——激活3D绘图区,再于指令栏输入:

y = 10

用geogebra画正方体展开图 立方体的正投影(6)

构造投影线

立方体a'的顶点怎么构造出来?

上一作品中,已有多边形,需要其顶点时,可用顶点(vertex)指令。

但,顶点指令并不适用于立方体。

用geogebra画正方体展开图 立方体的正投影(7)

顶点指令的所有语法

既然无法直接运用指令解决,那么,回想一下立方体a'是怎么构造出来。仿照一下,其顶点是否也可以构造出来?

于是:

用geogebra画正方体展开图 立方体的正投影(8)

l1 = {A, B, C, D, E, F, G, H}

l1' = 旋转(l1, α, z轴)

l1'即为立方体a'的顶点。

用geogebra画正方体展开图 立方体的正投影(9)

而需要进行投影的顶点,需要排除y坐标值最大的顶点。

用geogebra画正方体展开图 立方体的正投影(10)

b = 最大值(y(l1'))

l2 = 条件子列(y(Q) < b, Q, l1')

最大值(max)、条件子列(keepif)指令:

最大值( <数值列表> )

条件子列( <条件>, <变量>, <列表> )

理解如下:

b = 最大值(y(l1'))——y(l1')是l1'所有点的y坐标值;于是最大值(y(l1')),即为l1'中最大的y坐标值。

l2 = 条件子列(y(Q) < b, Q, l1')——Q依次取l1'中的点,再进行判断其y坐标是否小于b,小于b即为满足条件y(Q) < b,则可留下该点。最终,得到l2,l2就是所有y坐标值小于b的点,也就是需要进行投影的顶点。

那么,投影线的构造,仿照上一个作品即可。

用geogebra画正方体展开图 立方体的正投影(11)

稍作总结,这一部分的指令如下:

用geogebra画正方体展开图 立方体的正投影(12)

用geogebra画正方体展开图 立方体的正投影(13)

构造正投影

构造前,我们先分清投影线与投影面的交点排序。即l4的各个点。

首先,l1 = {A, B, C, D, E, F, G, H}为立方体a的顶点,具体如下:

用geogebra画正方体展开图 立方体的正投影(14)

于是l1'l2中点的排序如下:

用geogebra画正方体展开图 立方体的正投影(15)

那么,交点l4的排序为:

用geogebra画正方体展开图 立方体的正投影(16)

于是,即可分情况,构造出正投影:

用geogebra画正方体展开图 立方体的正投影(17)

当0°<α<90°时,为了方便构造,将正投影看成是一个大长方形以及线段·:

用geogebra画正方体展开图 立方体的正投影(18)

至此,拉动滑动条α即有开篇的效果。

结语

这一个作品,主要是对列表相关指定的应用。

如需源文件,请回复:立方体的正投影

,