绘制出的魔方效果如下图所示:
在水平方向和 Y 方向绘制的立方体序列集合,我们前文已经叙述过了,本文主要讨论 Z 方向也就是俯视方向的立方体集合如何绘制。
笔者采用的是 Z 方向驱动的绘制方法。如果要绘制一个 3 × 3 × 3 的魔方,在绘制了底面 3 × 3 的9个小立方体之后,接下来绘制 Z 方向第二排立方体,从左到右绘制,即下图黄色箭头所示的水平排。
然后绘制第三排最面向我们的水平立方体集合,即上图蓝色→所代表的三列,然后是数字5和6代表的两列,总共6列,18个立方体。
以上就是 Z 方向驱动的工作原理。实现函数如下图所示:
以3阶魔方为例,最外层循环执行两次。第一次循环绘制上图黄色箭头。
移植当前行水平位置起点,这个函数是为了Z轴立方体绘制而设计的。
在这里如果将移动的步长增加一个偏移量,就可以模拟 Z 方向的拆分效果。
如下图所示:
该函数的目的还是为了得出 X 方向立方体顶点的 X 和 Y 坐标。
然后在这一轮的 Z 方向循环体内,引入一个嵌套的循环,在嵌套循环里,将这一层 Y 方向的立方体全部绘制完毕:
从内层循环的移动斜边长度积木,我们就能知道这个积木的作用是沿着斜边不断移动正方体初始顶点的 X 和 Y 坐标,从而完成当前这一层(z方向)的所有立方体绘制。
每次内层循环结束后,更新 Y 方向的迭代计数器。
每次外层循环结束后,更新 Z 方向的迭代计数器。