使用 Kitten 编程猫绘制一个魔方

简介: 使用 Kitten 编程猫绘制一个魔方

绘制出的魔方效果如下图所示:

在水平方向和 Y 方向绘制的立方体序列集合,我们前文已经叙述过了,本文主要讨论 Z 方向也就是俯视方向的立方体集合如何绘制。


笔者采用的是 Z 方向驱动的绘制方法。如果要绘制一个 3 × 3 × 3 的魔方,在绘制了底面 3 × 3 的9个小立方体之后,接下来绘制 Z 方向第二排立方体,从左到右绘制,即下图黄色箭头所示的水平排。


image.png


然后绘制第三排最面向我们的水平立方体集合,即上图蓝色→所代表的三列,然后是数字5和6代表的两列,总共6列,18个立方体。


以上就是 Z 方向驱动的工作原理。实现函数如下图所示:

以3阶魔方为例,最外层循环执行两次。第一次循环绘制上图黄色箭头。


移植当前行水平位置起点,这个函数是为了Z轴立方体绘制而设计的。

在这里如果将移动的步长增加一个偏移量,就可以模拟 Z 方向的拆分效果。

如下图所示:

该函数的目的还是为了得出 X 方向立方体顶点的 X 和 Y 坐标。

然后在这一轮的 Z 方向循环体内,引入一个嵌套的循环,在嵌套循环里,将这一层 Y 方向的立方体全部绘制完毕:


从内层循环的移动斜边长度积木,我们就能知道这个积木的作用是沿着斜边不断移动正方体初始顶点的 X 和 Y 坐标,从而完成当前这一层(z方向)的所有立方体绘制。


每次内层循环结束后,更新 Y 方向的迭代计数器。

每次外层循环结束后,更新 Z 方向的迭代计数器。


————————————————

版权声明:本文为CSDN博主「汪子熙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/i042416/article/details/128955262



相关文章
使用 Kitten 编程猫绘制一个 Y 方向平铺的立方体集合
使用 Kitten 编程猫绘制一个 Y 方向平铺的立方体集合
如何做一个俄罗斯方块5:形状碰撞检测(下)
其实,两侧的碰撞判断跟我们上一节讲过的向下移动的碰撞判断原理是一样的,向下碰撞检测的是每一个方块下方的位置是否有其它方块,那么向左/右碰撞检测的就是每个方块左/右侧的位置是否有其他的方块。
311 0
|
开发工具
如何做一个俄罗斯方块4:形状碰撞检测(上)
在游戏开发中,我们所说的“碰撞”经常指的是物理碰撞,什么是物理碰撞呢?一般的在游戏开发工具中都会包含一个叫做“物理引擎”的东西,它的作用就是在游戏中模拟出现实中的物理效果。例如,我们扔一个东西,这个东西会因为重力而下落,最终落到地上,与地面发生碰撞。在游戏中,我们可以借助物理引擎,来模拟出东西下落掉到地面上的效果。当东西掉到地面上时,我们就说这个东西与地面发生了碰撞。
297 0
|
Python
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏03之重力及碰撞检测
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏03之重力及碰撞检测
171 0
|
Python
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏02之物体运动
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏02之物体运动
118 0
|
存储 程序员
七夕快到了,用SwiftUI做一个表达爱意的心形动画
传统的七夕快到了,作为一个程序猿,最浪漫的礼物当然是自己写的啦! 思来想去也不知道写什么好,在某天在某音上学习时看到点赞的动画效果还不错,那不如就做一个表达爱意的动画吧。
348 0
七夕快到了,用SwiftUI做一个表达爱意的心形动画