欢迎来到天天文库
浏览记录
ID:41154072
大小:1.64 MB
页数:38页
时间:2019-08-17
《matlab解魔方设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Matlab大作业层先法解魔方程序By0904102班赖文杰张恩泽陶杰1092510119109041021210904102170.任务1.程序构架简介2.程序精华介绍3.程序代码4.程序截图5.缺陷分析6.参考文献7.写在后面0.任务:通过这次大作业,我们想要将对魔方的了解和强大的Matlab语言相结合,编出一个可以通过读取运行者输入的初始魔方进行计算生成一个解决方案,并将解魔方的步骤在三维空间里动态演示。1.程序构架简介:我们的解魔方程序分为三个部分:输入部分,计算部分与输出部分。1)输入部分:利用一个一个魔方图片的替换指导运行者按照比较人性化的步
2、骤输入魔方的初始参数。程序将生成一个结果矩阵,结果矩阵会进入一个中转M文件转化为计算部分所识别的输入格式。并且在系统计算的时候,输入部分进入到Waiting画面等待运行结果。2)计算部分:计算部分是用来分析初始魔方通过计算生成旋转方案的程序,按照层先法拼魔方的步骤,这部分一共分为七个板块:第一层十字、第一层四角、第二层、第三层十字、第三层四角、第三层定向、第三层边块复位。在计算的过程中我们的主要思想是:首先定义了魔方的各种转动(左面逆时针LROT90,右面逆时针RROT90,上面逆时针UROT90,下面逆时针DROT90,前面逆时针FROT90,后面逆时
3、针BROT90,向右翻转YOUZHUAN90,向前翻转FANZHUAN90)时魔方矩阵各个元素发生的变化,定义每个板块中的各个不同的情况(参照《魔方三阶入门教程》),并根据不同的情况输出不同的结果。每次旋转之前程序会判断当前的情况并输出相关步骤,每输出一个步骤,魔方矩阵将会按照转动的定义变化一次。直到最后板块完成后使魔方最终还原。计算部分结束后会输出一个旋转方案,供输出部分运行。3)输出部分:为了输出动态的旋转魔方的过程,我们编了一个可以使空间中的立方体各个面涂上相应的颜色,并且可以在空间中移动和旋转的M文件。这个M文件的主要思想是定义一个点在三维空间中
4、按照特定的方程平动和旋转,通过这个点向四周八个方向延伸出8个点构成立方体的8个顶点,接着,连接这八个点组成六个面并且涂上相应的颜色即可完成空间立方体的移动和旋转。利用这个M文件,在空间中分别画出27(3*3*3)个立方体组成魔方,定义每一种旋转相对应魔方块的转动方程。在转动的过程中记忆每次转动后各个魔方块所在的位置与方向方便下次转动。通过以上方法,输出部分程序接收计算部分的结果进行相应旋转魔方的动态输出。完成整个魔方的还原。2.程序精华介绍:1)魔方转动实现:为了对魔方进行合理的数学描述,我们建立了一个大的细胞矩阵A=cell(3,3,3),细胞矩阵中每
5、一个单元中又分别由三个元素组成,分别表示(上下)、(前后)、(左右)的颜色,通过矩阵的变换以及每个单元中元素次序的对调来模拟魔方的转动。2)层先法的实现:首先将每一种可能的转动进行数学定义,方便以后的调用,由于层先法的精髓是一层一层的拼完整个魔方,所以这种方法的逻辑顺序很强,完全可以把每一层的可能性及其解决方法全部列出。在解决魔方的同时也出现了其它问题:由于每一层的可能性众多导致总程序很大运行需要时间较长(15秒左右)。3)动态演示的实现:分两步来走:图形位置的变换与颜色的变换。图形位置的变换分为自转和旋转,由27小方块的8*27个顶点来定位,并建立每个
6、点的运动方程的来模拟魔方的转动,运用fill3,pause以及delete语句来实现其动态模拟。颜色的变换是通过对一个大的矩阵的跟随变换来实现。其变换的基本操作与解魔方的基本操作相同,即通过对初始矩阵的变换和颜色元素位置的对调来实现变换。3.程序代码:(见附录2)3.程序截图:(图一)开始界面(图二)输入指导界面(图三)等待运算界面(图四)开始旋转(图五)第一层十字(图六)十字旋转完毕(图七)第一层旋转完毕(图八)第二层旋转完毕(图九)旋转第三层十字(图十)第三层边块复位(图十一)旋转完毕(由于图片滞留原因白色滞留在蓝色位置上,经检验,魔方已经完美还原)
7、5.缺陷分析:1)计算时间长由于对魔方的了解不够深入,我们选择的是比较麻烦的层先法,因此解出的并不是一个最简的步骤(理论上一切魔方都会在26步以内还原),其中会走很多曲折的道路,虽然层先法的实现相对简单,但是会耗费更多的时间。还有一种可能性是我们的子程序会进行大量的调用,也许会占用部分的时间。2)输入程序没有删除键假如运行者不小心出现输入错误,他就不得不重新运行程序再次输入。使得程序不太人性化。3)对于输入没有完整的查错程序虽然程序中会有部分的错误提示,但是由于程序比较庞大,我们无法充分的考虑到所有的可能输入错误。4)动态演示过程不能控制快慢不能控制视角
8、不能暂停动态过程的控制可以通过修改MYPLOTCUBE.M子文件中的暂停值以及步
此文档下载收益归作者所有