鼠标点一点,点出一个个六色立方体—GeoGebra立方体堆叠

鼠标点一点,点出一个个六色立方体—GeoGebra立方体堆叠

首页休闲益智方块翻转乐更新时间:2024-05-11

之前做了,效果如下:

每个小立方体的颜色都是一样的

有老师问:可以修改成一面一色吗?还有老师问:可以修改成一层一色吗?

都可以!先解决第一个问题。

让所有立方体的同一面都是同一色,效果如下:

制作思路:

  • 原先是将立方体作为整体,自然只能设置一种颜色。
  • 要让立方体的六面不同色,那么原先对立方体进行的操作,同样地对进行操作即可。
  • 原先对立方体的操作,可一条指令搞定。那么,对的操作,只要找到规律,也可以一条指令搞定一面!
  • 源于:《哪里需要立方体就点哪里》

    在开始制作前:

    ■ 为了方便看效果和设置,需要显示所有立方体,也就是修改用来计数的n1,n2,……,n25的值,于是,输入:

    执行(序列("n" k "=0",k,1,25))

    ■ 并隐藏原先的立方体c1,c2,……,c25

    注:执行(Execute)、序列(Sequence)。


    指令只需敲六条,各位不妨一试。01至04部分为解释,05为细节完善,使得效果更佳。

    “上”“下” “左”“右” “前”“后”面

    源文件获取方式请见文末。


    下面的涂色

    最简单的,就是对立方体的下面进行涂色。

    以第一小格子的立方体为例,当其立方体个数大于0时,则需要显示面。即: 如果(n1 != -1, B1)

    ■ 于是,可批量构造所有立方体的下面:

    执行(序列("X" k "=If(n" k "!=-1,B" k ")",k,1,25))

    ■ 并设置颜色,至于线径、不在绘图区显示,将在构造出所有面后,再进行设置。

    上面的涂色

    只需要做出每一栋立方体的最上面即可。

    也就是将底面进行平移,以第一栋立方体为例:如果(n1 != -1, 平移(B1, 向量((0, 0, n1 1))))

    ■ 于是,可批量构造:

    执行(序列("S" k "=If(n" k "!=-1, Translate(B" k ", Vector((0,0,n" k " 1))))",k,1,25))

    左、右面的涂色

    以第一小格子的立方体为例:所有左面可由底面B1绕其左边所在直线旋转至左面,再平移得到!需要注意的是,平移所得的左面应是所有立方体的左面,是一系列面,可用序列指令:

    先旋转后平移

    这样就可以得到第一栋立方体的所有左面!而第2,3,……,25栋立方体的左面呢?

    关键是找出它们旋转轴的特点,就可用执行指令!

    找出旋转轴规律

    ■ 于是,可批量构造:

    执行(序列("Z" u "=Sequence(Translate(Rotate(B" u ", -90°,Line((Mod(" (u-1) ",5) ,0,0),yAxis)), Vector((0,0,v))),v,0,n" u ")",u,1,25))

    得到所有左面:

    ■ 要得右面,将上述指令略作修改即可:

    主要是修改旋转角度、旋转轴

    执行(序列("Y" u "=Sequence(Translate(Rotate(B" u ", 90°,Line((Mod(" (u-1) ",5) 1,0,0),yAxis)), Vector((0,0,v))),v,0,n" u ")",u,1,25))

    前、后面的涂色

    前面也可由底面先旋转再平移得到。

    旋转得到左、右面的旋转轴规律是与余式有关,而前、后面则与商式有关:

    ■ 得到所有前面:

    执行(序列("Q" u "=Sequence(Translate(Rotate(B" u ", 90°,Line((0, Div(" (u-1) ",5),0),xAxis)), Vector((0,0,v))),v,0,n" u ")",u,1,25))

    ■ 将上述指令略作修改:

    执行(序列("H" u "=Sequence(Translate(Rotate(B" u ", -90°,Line((0, Div(" (u-1) ",5) 1,0),xAxis)), Vector((0,0,v))),v,0,n" u ")",u,1,25))

    得到所有后面:

    细节完善

    选中所有面,设置线径为1,不在绘图区显示:

    目前效果如下:

    为了让效果更好,还可以给立方体加上棱!让界线更明显!

    无需另外构造立方体的棱,因为已有立方体c1,c2,……,c25,将其线径调为2。

    而刚刚已将面的线径调为1。所以效果如下:

    原先立方体颜色:#006699

    和预想的不一样?不急——再将所有面放在图层1,而立方体c1,c2,……,c25调为灰色,效果就有了:

    立方体颜色调为:#606060

    如果要分为涂色与否的话,多做几步:

    ■ 新建复选框c,标题为$\Large \textcolor{red}{涂}\textcolor{blue}{色}$,更新时脚本为:执行(序列("SetColor(c" k ",If(c,%1,%2))",k,1,25),"#606060","#006699")

    ■ 选中所有面,显示条件设为c

    至此,作品就完成了:

    如需源文件,请回复:立方体堆叠

    查看全文
    大家还看了
    也许喜欢
    更多游戏

    Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved