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

在水平方向和 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 方向的迭代计数器。

使用 Kitten 编程猫绘制一个魔方相关推荐

  1. Kitten编程猫里如何先后播放不同的背景音乐

    Kitten编程猫 里说 XXX 直到结束 这个积木,在语音结束之前,不会执行下一块的对话积木. 如果此时收到其他事件,比如上图的"转盘停止"的事件,那么"转盘停止&qu ...

  2. 如何把 Kitten编程猫上开发出来的项目打包成安卓平台上可以安装的apk文件

    我们使用 Kitten编程猫这款少儿编程工具,开发出来的项目,另存成本地工程文件,格式为bcm: bcm文件打开可以发现,内容是json格式的明文数据,包含了该项目内使用到的scene(场景),素材( ...

  3. Kitten编程猫 里的一步积木设计原理

    一步积木位于 kitten编程猫 里的"积木实验室-扩展积木": 这个wrap有什么奥妙,只有查看 kitten编程猫 的源代码了: 按照 Kitten编程猫 的帮助文档,一步执行 ...

  4. Kitten编程猫 里的克隆体无法进行边缘检测

    克隆出的炮弹,无法执行到这个积木: 克隆体也无法收到广播: 同时,遇到边缘就反弹,以及当物品遇到边缘这里有一个坑. 如果把"碰到边缘就反弹" 放到重复执行内,则序号为2,即 &qu ...

  5. Kitten编程猫的工程文件 bcm,能发布成Android平台的apk文件吗

    根据Kitten编程猫社区的这个帖子: https://shequ.codemao.cn/community/367019 产生的不是可执行文件或者源码,产生的是配置文件,告诉执行文件的框架该怎么做的 ...

  6. 如何将 kitten编程猫里的以分号分隔的长字符串转换成列表结构

    积木设计: 全部变量值: 注意,kitten编程猫里的列表索引从 1 开始,但是运行时转换成 JavaScript 代码里,索引仍然是从0开始的: var 所有成语 = '塞翁之马;塞翁失马;盂方水方 ...

  7. 如何成批导入数据到 kitten编程猫 类型为列表的变量中

    我们在 kitten编程猫 里可以定义列表变量,即JavaScript 里的数组. 如下图所示: 如果我们有大量数据需要导入到这些变量里,可以直接编辑存储在本地的以.bcm结尾的工程文件: 用文本编辑 ...

  8. kitten编程猫里的函数定义,函数实现和函数调用原理

    kitten编程猫 函数定义和函数实现: var 我的成语库 = [];function 成语初始化() {我的成语库.splice('' - 1, 1);我的成语库.push(1);我的成语库.pu ...

  9. kitten编程猫里的工具函数

    鼠标点击检测,用的是kitten编程猫里的全局变量kitten: Kitten.is_touched, 接收两个参数,检测其代表的对象是否互相接触. 完整代码: when_start(function ...

最新文章

  1. Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version o
  2. win10安装spacemacs
  3. msvc 编译路径_Colmap编译教程
  4. 第二章 第二节 安装Eclipse
  5. 【安全漏洞】深入剖析CVE-2021-40444-Cabless利用链
  6. 03 ORA系列:ORA-00942 表或视图不存在 table or view does not exist
  7. LeetCode每日一题 116. 填充每个节点的下一个右侧节点指针
  8. HDU 1874 畅通工程续
  9. 使用Httpclient来替代客户端的jsonp跨域解决方案
  10. CF1120D Power Tree(树形DP/构造+差分+最小生成树)
  11. Spark WordCount
  12. 顶尖中文大学计算机专业课程体系
  13. javascript -- 变量
  14. 全国DNS服务器IP地址【电信、网通、铁通】
  15. java:详解native方法
  16. 怎么让composer加速
  17. 经典详细的Struts2教程(附案例源码)
  18. 信息学奥赛C++语言:什么时候开会
  19. matlab解方java_如何在MATLAB中获得该方程的所有解?
  20. 广式粤语VS港式粤语

热门文章

  1. 想通过手机刷视频赚钱?这篇文章你有必要了解一下
  2. Python Web开发(四):从零开始创建数据库和表
  3. 【判断一个数是不是素数】
  4. 京冀101家饭店跻身北京2022年冬奥会官方接待签约名单
  5. 【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点
  6. 天空盒、天空穹和天空面
  7. 什么是生化分析中的反应曲线?
  8. 外包项目开发课程整理一:SDLC传统系统开发生命周期7个阶段
  9. 不同的负载电容对晶振的影响
  10. JS手机号身份证验证