魔方的数字模拟

魔方是有史以来最伟大的数学难题之一。大多数人只是对快速解决魔方感兴趣,但深入研究揭示了一个丰富的数学和计算结构。数字魔方模拟器为线性代数、群论、数据结构和计算机图形学的研究提供了实验室。

内容

压制方糖

我们的抽象魔方是由一个小魔方的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];结束

循环变量xyz它包含所有可能的组合-20+ 2,最里面的语句涉及到数量

V + [x y z]

这是一个矩阵和一个向量的和,这在传统的线性代数中没有定义。MATLAB单例展开将其改写为两个矩阵的和。所以,xyz立方体的中心坐标和输出单元格数组是否包含所有立方体的顶点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',显示了其他三种传统颜色,红、白、蓝。




发布与MATLAB®R2022a

|

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그하거나계정을새로만드십시오。