魔方的数字模拟
魔方是有史以来最伟大的数学难题之一。大多数人只是对快速解决魔方感兴趣,但深入研究揭示了一个丰富的数学和计算结构。数字魔方模拟器为线性代数、群论、数据结构和计算机图形学的研究提供了实验室。
内容
压制方糖
我们的抽象魔方是由一个小魔方的27个相同的副本组成的cubelet.在下面的第一个视图中,您可以看到立方体面的三种传统颜色——绿色、白色和橙色。旋转立方体,你会看到白色面对面的面是黄色的,橙色面对面的面是红色的。绕着不同的轴旋转,就会发现绿色脸对面的脸是蓝色的。
cubelet
四种类型
一个巧妙的弹簧机构将一个真实的物理魔方固定在一起,同时允许它的面旋转。另一方面,我们的计算机模型不包含任何弹簧,它的面是由3 × 3矩阵旋转的。
模型中的27个立方体有四种类型——中心、面、边和角。中心立方体永远不可见,只有当整个拼图的视点旋转时才会旋转。
在六面拼图的中心有六个立方体。当相应的拼图面旋转时,它们也会旋转。
在十二个谜题边缘的中间有十二个立方体。每个边立方显示其相关面的两种颜色,绿色-白色、白色-橙色等等。没有橙红色边的立方体,因为这个谜题的橙红色面从来没有共用一条边。
有八个角落的立方体,每个立方体显示三种颜色,绿-白-橙,绿-橙-黄,等等。在6种颜色的6x5x4 = 120种可能的组合中,只需要8个角立方体。
如果你从中间加上六个面的立方体开始,然后加上十二个边的立方体,最后加上八个角的立方体,会发生这样的情况。
show_types
Q0处
我用大写字母问用来表示立方体。立方体是一个3乘3乘3的单元阵列。每个单元格包含立方体的顶点,存储在8 × 3的双精度矩阵中。总共有27个顶点矩阵,每个都可以旋转相乘。对一个立方体中的所有27个立方体应用相同的旋转会旋转整个立方体。更有趣的做法是对其中一个立方体面的9个立方体进行给定的旋转,同时保持其他18个立方体不变。
我会用Q0处表示所有方块在一个面上显示相同颜色的拼图。
Qfigure Qshow (Q0)
代码
生成的代码Q0处从一个矩阵开始v包含中心立方体的顶点,qzero.
类型qzero
函数q0 = q0 %单位立方。Q0 = [-1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1];结束
循环变量x,y和z它包含所有可能的组合-2,0和+ 2,最里面的语句涉及到数量
V + [x y z]
这是一个矩阵和一个向量的和,这在传统的线性代数中没有定义。MATLAB单例展开将其改写为两个矩阵的和。所以,x,y和z立方体的中心坐标和输出单元格数组是否包含所有立方体的顶点Q0处.
类型Q0.m
函数Q = Q0(w)如果nargin < 1 w = width;结束v = w* q0;Q = cell(3,3,3);对z =(2 0 2)为x = y =[2 0 2][2 0 2]问{x / 2 + 2, y / 2 + 2, z / 2 + 2} = v + [x y z];端端端端端
大卫Singmaster
大卫·辛格马斯特是最早研究魔方的数学家之一,他用来描述动作的符号已经成为标准。巧的是,20世纪50年代末,我们都在加州理工学院读本科时,辛格马斯特是我的一个朋友。随后,他去了加州大学伯克利分校的研究生院,不久之后就搬到了英国。从那以后,他一直在现在的伦敦南岸大学担任数学教授。这是一个2018年的视频采访歌手大师.
Singmaster使用字母L, R, U, D, F和R来表示左,后,上,下,前和后面顺时针旋转。其中一个字母后面跟着a'符号表示逆时针旋转。
L U动画
例如,这是L旋转的“左”面的动画Q0处顺时针,然后U旋转“向上”的脸。
F, F动画
这是F旋转"正面"两次。
Z, X'的动画
辛格马斯特的表示法也使用X、Y和Z来表示整个立方体的旋转。这里是Z和X',显示了其他三种传统颜色,红、白、蓝。
댓글
댓글을남기려면링크를클릭하여MathWorks계정에로그하거나계정을새로만드십시오。