魔方吧·中文魔方俱乐部

标题: 用石头剪刀布来玩魔方 [打印本页]

作者: aubell    时间: 2015-7-12 01:40:58     标题: 用石头剪刀布来玩魔方

用石头剪刀布来玩魔方

这是一种枯燥的运算,但也是一种有趣的运算。
你可以像把玩魔方一样,把玩这种运算。

定义一种乘法:


石头×剪刀=布
剪刀×布=石头
布×石头=剪刀

石头×石头= -1
剪刀×剪刀= -1
布×布=-1


这种乘法不满足交换律,但是满足结合律、分配律。

推论:
剪刀×石头=(布×石头)×石头=布×(石头×石头)=布×(-1)=-布
同理:
布×剪刀=-石头
石头×布=-剪刀

石头×剪刀×布=-1

以上规则的记忆方法:自乘得-1, 前胜直接写第三者,前负要加负号。

下文“石头”省略作“石”,剪刀略作“剪”。

下面开始应用这种乘法,算一些东西:
1.在一方块积木上试试
(1)任意挑选一个顶点,把机械表顶在这个定点上,保证你能正面看到它的走动,
按照秒针走的方向,在过这个定点的三个面上,顺序写上“石、剪、布”。
(2)做一个“布”操作:即把“布”面顺时针转90度;       
(与之类似的说法:做一个R操作,即把"R"面顺时针转90度;
或者是做一个U操作,即把"U"面顺时针转90度。 )                                               
(3)观察:“石头”面被发送到了“剪刀”面位置。
  这是这种乘法最直观的感觉:
  操作 × 面 = 面的新位置
(这只是一种感觉,不可以当真);
(但这种感觉太真实了。)
(4)负值是什么意思?
  方块是有中心的,从方块内部中心往布面中心的方向,叫做布;那么掉头的方向就是负的了。
  (-布)表示布面的对面。
刚才的“布”操作把剪刀面发送到了原石头面的对面,
写成算式就是: 布×剪=-石

2.在二阶上试试
(1)在二阶内部正中心发出一根射线来,穿破布面中心(四个方块中间),这射线就是“布轴”正方向了;这条射线的反向延长线自然是布轴的负方向。
类似,“石轴”穿破“石面”,“剪轴”穿破剪面。
现在,三个轴的正方向围起来的角落里,有一个方块,我们叫它(石+剪+布)
三个轴的负方向围起来的角落里,有一个方块,我们叫它(-石-剪-布)
类似的,八个方块都可以用加法来标记,如(石+剪-布)等等。
(2)怎么开始转呢?
  转一个面,不能跟着感觉走了。
  石头、剪刀、布用在魔方上,是如此的不真实,是虚假的,那我们就叫它“虚”的吧。还要
  有点“实”的东西。我们重新安排,增加一个实数1,用(1+布)和(1-布)来产生绕“布轴”的旋转,同“布”操作方向一样。
  把(石+剪+布)方块绕布轴转过90度,这样做:
  (1/2)×(1+布)×(石+剪+布)×(1-布)
=(1/2)(石+剪+布+布石+布剪+布布)(1-布)
=(1/2)(石+剪+布+剪-石-1)(1-布)
=(1/2)(2剪+布-1)(1-布)
=(1/2)(2剪+布-1-2剪布-布布+布)
=(1/2)(2剪+布-1-2石+1+布)
=(1/2)(2剪+2布-2石)
= -石+剪+布
  可以在你的魔方上看一下,是否到了这个位置上来。  

  列算式的时候,把(1+布)和(1-布)写在两头,方块的初始位置写在中间。
  算出来带上系数(1/2)。
  其他方块的结果我不写了,如果你有兴趣,可以计算一下,看看是否正确。

  围绕“布轴”的旋转,用(1+布)和(1-布)产生;
  同样的道理,围绕“石轴”的旋转用(1+石)和(1-石)产生;
  围绕“剪轴”的旋转也用(1+剪)和(1-剪)产生。

  要记得系数1/2。
  其实这个1/2应该开平方,分配到(1+布)和(1-布)中各
  半个根号2。那样,算式写起来又很不方便。但那是最原始的样子。

(3)转两下怎么办?
接着两头乘!
(4)逆时针转怎么办?
接着两头乘!
(5)一直乘,步骤太麻烦?
先写好算式,然后用结合律,会发现,
180度旋转对应 (1+布)的平方 和 (1-布)的平方,
(1+布)(1+布)=(1+2布+布布)=2布
(1-布)(1-布)=(1-2布+布布)=-2布
也就是说,绕布轴旋转180度,只需要前面乘布,后面乘(-布)。

所以,多次的旋转,可以先乘好前面一头,另一头的算式实的不变,直接把“虚”的取反。

(6)为什么有时要调节系数?
因为使用(1+布)这样的旋转,同时还进行了伸缩变化;
如果用(sqrt(2)/2+ (sqrt(2)/2)布)这样的形式,就不需要调节系数了。
为了计算方便,可以先把所有的根号2都提区出来,最后调节。


(未完待续)




  



作者: 乌木    时间: 2015-7-12 06:04:56

问问:这和邱志红在下面的帖子中说的“叉乘”是否有联系?
《[原创]一式解万方》
http://bbs.mf8-china.com/forum.p ... 355&fromuid=449

作者: schuma    时间: 2015-7-12 07:33:46

这个代数规则跟四元数的 i j k 的乘法完全一样。从四元数最开始,人们就已经知道它和三维空间的旋转的关系了。
作者: 天方魔    时间: 2015-7-12 09:03:00

完全晕晕圈了。。。用ABC代替布包槌可能更容易理解点吧??
作者: aubell    时间: 2015-7-12 09:04:26

乌木 发表于 2015-7-12 06:04
问问:这和邱志红在下面的帖子中说的“叉乘”是否有联系?
《[原创]一式解万方》
http://bbs.mf8-china.c ...

表示旋转、姿态等历来有向量方法和四元数方法。

邱用的是向量方法,解析的很漂亮,但个人感觉没有必要使用六个坐标轴,很容易弄错。
用向量方法,有一点不够美观的是要在魔方上适当的修订方法。使用四元数,基本上不用
改变任何规则。乌木老师如果有兴趣,可以百度一下”四元数“,研究一下怎样把用四元数
用在魔方上。



作者: aubell    时间: 2015-7-12 09:08:41

schuma 发表于 2015-7-12 07:33
这个代数规则跟四元数的 i j k 的乘法完全一样。从四元数最开始,人们就已经知道它和三维空间的旋转的关系了 ...

楼上schuma是明眼人啊,一眼就看出了来历!

我这样写,只是为了让从来没有接触过“四元数”的人看的懂。
不要让“四元数”这样貌似高深的名词吓跑看帖人。

schuma,也一起探讨后面的部分吧!
作者: aubell    时间: 2015-7-12 09:10:52

也欢迎邱老师来讨论使用四元数表示魔方转动和公式的方法!
作者: schuma    时间: 2015-7-12 12:14:17

aubell 发表于 2015-7-11 17:08
楼上schuma是明眼人啊,一眼就看出了来历!

我这样写,只是为了让从来没有接触过“四元数”的人看的懂 ...

原来你是假装纯洁啊,这可不好啊
作者: aubell    时间: 2015-7-12 12:31:23

(续)


既然已经识破了来历,那么,下文我就不时的把石头、剪刀、布恢复成它们原始的面貌了,
分别叫做i,j,k。最后终将恢复它们的原貌i,j,k。向大师哈密顿致敬。
这样,兼顾习惯看字母的朋友们。

这种方法使用的的确是四元数,有兴趣的朋友可以一起来讨论。

3.怎样表示我的RUF?怎样表示我的XYZ?我喜欢RUF!我喜欢XYZ!我要用ABC!
从一开始,我就不希望卷入争论,是使用RUF表示转动好?还是使用XYZ表示转动好?
所以我干脆叫它们石头、剪刀、布。

石头轴垂直于石头面,如果你关注于轴,你就能看到xyz三维坐标轴;如果你关注于面,
你就能看到,其实L层和R层以及M层其实没什么区别,都是垂直于同一个轴的平面。

数学的宝库浩如烟海。我们都像盲人摸象一样,常常执着大象的某一个部分,就以为
整头大象是这个样子了。魔方虽然小,在我看来,也无异于一头巨象,所以,我不敢
确立任何东西,只是拿前人的理论来解析它。

R操作和CR操作(整体转动)的区别在于:R是针对魔方上特定位置的方块,CR是针对魔方所有的方块。
两者没有本质的区别。都是朝一个同方向转动。不同在于,一个少转几层,一个多转几层。

R操作的定义应该是类似这样的:如果方块当前处于(ABCD)位置上,那么就转它;
CR操作的定义是类似这样的:如果方块当前处于(ABCDEFG)位置上,那么就转它。
只有一点点区别,就是当前处于某某位置,CR操作取的范围大很多。

本来坐标系种类已经够多了,现在我又不小心把i,j,k请了进来。好吧,既然来了,就安个家吧,
i放在x轴上,j放在y轴上,k放在z轴上。也就是说,“石头轴”现在是x轴了。i现在是x轴的长度
单位。

三维坐标系历来也有使用左手系还是使用右手系的争论,我真的很头大。传统上标准上好像是
习惯逆时针转;魔方玩友习惯顺时针表示,逆时针的都要打上一撇。
没有关系,四元数在对应到坐标系之前是没有方向的。
数是数,形是形。你希望它怎么转,它就怎么转。习惯用左手系的,您就用左手系;习惯用右手系的,您就用
右手系。注意那时(1+i)对应的方向就可以了。

甚至有的人习惯钻进魔方内部,来观察魔方的转动,他说,那样的好处是,可以随时看见所有面上的方块,
那时,他可能需要用雷达一样的坐标系。在那样的坐标系下,怎样讨论魔方的转动呢?我还没有尝试过。
有兴趣的朋友可以试试,那是怎样的感觉。

为了描述方便,我先不把i,j,k绑定到具体的坐标轴上,也不规定它们在魔方上对应哪个面。甚至,取消规定
“石头、剪刀、布”是顺时针排列的。在应用的时候,再把i,j,k绑定到具体的坐标轴上。这样,就可以暂时抛弃
坐标轴和LUR,由此也获得了更多的绑定方式,不同的绑定方式,可以完成不同对称方式的转换。左手系和右手系是
同时需要的,因为一种恰好存储了另一种的镜像。LUB也是需要的,因为传统上大家是这样表示的。

我们把实数称为“实部”,把i,j,k称作“虚部”。我们使用的是“两头乘”,假定R对应前乘(1+i)和后乘(1-i),
注意到前乘的数和后乘的数差别只在“虚部”的符号,因此,也只需关注一头就可以了。我们关注前面一头。
可以假定R对应(sqrt(2)/2)*(1+i), F操作对应的用j,U操作对应用k。此时,假如把i,j,k绑定为x,y,z
的长度单位,那么,坐标系是左手系。RUF有了各自对应的操作,xyz也有了对应的坐标轴。

也不知是幸运还是不幸的是,坐标系有那么多种。平面坐标系:笛卡尔原始的是向左为正,向上为正;我们教科书
上是向右为正,向上为正;电脑屏幕则常常把0点放在左上角,向右为正,向下为正;每一个窗口内部,又有至少两个
坐标系,一个是以整个窗口左上为0点计算的,方便安排各种按钮的位置,一个是以文档窗口左上为0点计算的,
好比word中新建一个文档,就把这张A4纸左上角作为坐标原点了。但你在文档里面绘图的时候,很可能右建一个教科书
上的坐标系,把原点方在纸的正中心。还有逻辑坐标和屏幕坐标的分别,比如,你画了一张巨大的图画,远远大于显示器屏幕,
图画每个点都有坐标,而屏幕自身也有坐标,于是,在屏幕显示这幅图画的时候,拖动的时候就有坐标变换。

坐标系,带给我们方便,也带给我们不便。坐标变换是普遍存在的。因此,不要为此头痛,只要多一点耐心,就不会出错。
在方方正正的魔方上,最多只有24种方法来建立三轴坐标系。

4.为了描述方便,暂时这样绑定:x轴从魔方内部中心穿出,标志正方向的箭头射破R面,x轴的长度单位用i;
  y轴正方向穿破U面,长度单位用j;z轴正方向从F面中心穿出,长度单位用k。


  



作者: aubell    时间: 2015-7-12 14:32:32

schuma 发表于 2015-7-12 12:14
原来你是假装纯洁啊,这可不好啊

呵呵!使用“石头、剪刀、布”还有一个理由,那就是它们天生的克制顺序。
正是这种克制顺序导致了乘法运算的不可逆。

i,j,k则没有明显的讲明这一点,只是暗含在其中讲。

所以,我先用“石头、剪刀、布”代替一下,让初相见的人一眼就能知道这种天然的顺序。

作者: 至尊达哥    时间: 2015-7-12 16:09:48

额,没听说过啊,这么神奇。。。
顺便问一下,这个有什么用?
作者: 至尊达哥    时间: 2015-7-12 16:14:18

schuma 发表于 2015-7-12 07:33
这个代数规则跟四元数的 i j k 的乘法完全一样。从四元数最开始,人们就已经知道它和三维空间的旋转的关系了 ...

四元是四维空间吗?
作者: aubell    时间: 2015-7-12 17:15:18

至尊达哥 发表于 2015-7-12 16:09
额,没听说过啊,这么神奇。。。
顺便问一下,这个有什么用?


5.这样表示有什么用?
  先插入回答这个问题。这样的表示,已经用在了很多魔方演示类程序的内部。这个表示方法其实是很微观的,什么意思呢?这个表示,可以精确计算出魔方上(包括魔方内部)每一个点在任何时候的位置。在能用鼠标拖着转动的魔方程序内部,常常需要用到四元数来计算重要点的位置,然后把魔方实时绘制出来。也就是说,这个方法已经用来绘制能拖着转的魔方,久矣。
  至于用来表示魔方公式,表示宏观上的转动,可能意义不是非常大。因为计算量太大,恐非人力所能接受。但用在宏观上,就不需要计算所有的点了,只需要在某些贴纸中心挑选一个点就可一了。于是,计算量又不是非常大了。
  因为四元数本身,还有很多未解之谜,如果解开了,也许能够揭开魔方的秘密。
  宏观上,使用群论可能是最佳选择。但也可以尝试用微观世界的技术,来解析宏观世界,尽管那会很繁琐。

  题外话:如果你发现一个魔方演示类程序转动的非常顺手,非常平滑,非常流畅,我几乎可以90%肯定的告诉你,那程序核心里有一个虚拟的球体,跟踪记录了你鼠标的位置,并且使用了四元数;如果你发现有的程序中魔方转的太不顺手了,经常在某个位置会卡住,无法按照你的意愿拖动,那我也可以90%的肯定告诉你,因为那里面没有使用四元数。

作者: aubell    时间: 2015-7-13 07:23:37

本帖最后由 aubell 于 2015-7-13 07:37 编辑

  6.在三阶魔方上试试
假定RFU面对应 i j k 面。现在研究RFD方块,先取它底面贴纸中心的坐标。(注意是贴纸的中心,不是方块的中心。方块中心的运动规律在二阶上已经讨论过了。)方块中心坐标是 (i +j -k),贴纸更往下一点点,因此
坐标是(i + j -1.5k),我们看公式RU'R'会把它送到哪里去(这三个步骤都会影响到该方块)。计算前面一头顺序与公式恰好是倒着做的,不如先计算后面一头吧。后面一头用的是(1 -i)(1-k)^3(1-i)^3,结果是(8+8j),
那么前面一头应该乘的是(8-8j),最终调节系数应该除以128(因为一共有 7 个1/2),最终的结果是 (1.5i +j +k) ,注意是 i 的方向凸出一点点,也就标志着贴纸在这个方向上。
(尽管只算一片贴纸,计算量也是比较大的。你可以尝试一下。)
作者: 乌木    时间: 2015-7-13 09:05:07

aubell 发表于 2015-7-12 09:04
表示旋转、姿态等历来有向量方法和四元数方法。

邱用的是向量方法,解析的很漂亮,但个人感觉没有必要 ...

原来这样,谢谢解释。
作者: 至尊达哥    时间: 2015-7-13 18:00:01

aubell 发表于 2015-7-12 17:15
5.这样表示有什么用?
  先插入回答这个问题。这样的表示,已经用在了很多魔方演示类程序的内部。这个 ...

魔方软件主要是用四元数吗?我想起了那个puzzler,鼠标太难操作,是因为四元数没有充分利用?
作者: aubell    时间: 2015-7-16 10:12:32

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/OnlineHelp/Flash3D/G_ProjectDocumentation/B_coordinate_system.html

一个讲左手系和右手系的页面,讲的很清晰。

作者: 轻描淡写3333333    时间: 2017-12-21 20:24:47

看到直接蒙圈了




欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs.mf8-china.com/) Powered by Discuz! X2