3cube 发表于 2008-6-6 07:40:23

发现一个别人写的教程,图做的不错。

<DIV style="TEXT-INDENT: 21pt">高中的时候买过一个六面魔方,很容易就拼完一面,两面以上很少能拼成功,只记得成功拼过一次两面的,那是相临的两面,至于六面嘛,基本上是拆开拼成功的。</DIV>
<DIV style="TEXT-INDENT: 21pt">上大学到上班多年以来,没想到过关于魔方的事情,只是前段时间在同事的桌上看到过一个魔方才想起来的。接下来在每次逛街时都有意识的看看有没有魔方卖,但大多都是令人失望的。</DIV>
<DIV style="TEXT-INDENT: 21pt">直到前几天在东昌地铁站2号出口处从地摊顺利买到魔方,大的要价10元小的5元,后来还成8元买了一个大的,当天回到家很容易就把一面拼完,但两面以上都没撤。第二天用Google搜索魔方的六面玩法,一大堆成果,分析了两三篇然后打印了一份来仔细对照玩。经过多次摸索终于能成功拼完六面,而且口诀也背熟了。现在也学学网上的作法写点心得,记在这里供大家参考,也便于自己以后需要用时还能找回来。</DIV>
<DIV style="TEXT-INDENT: 21pt">首先找定一面先拼完。这里以白色面为第一面,如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2624.jpg" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">上图为开始拼之前的图样,位置1的块由两面组成,我们称为“棱块”,位置2的块由三面组成,我们称为“角块”,拼第一面的原则是“先棱后角”,结果如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2625.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">确保拼成功的面的四个边颜色都一样,比如上图的红色和橙色。</DIV>
<DIV style="TEXT-INDENT: 21pt">接下来以白面为底,从下往上拼,先拼第二层的四个棱块,如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2626.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">上图中<STRONG>以红箭头指向为“前”面</STRONG>,“左”面即是红色,如果把位置1的块移到位置2则刚好完成这个棱块。</DIV>
<DIV style="TEXT-INDENT: 21pt">把位置1移到位置2的口诀是:<FONT color=#ff0000><FONT face="Comic Sans MS"><STRONG>上-90,左-90,上90,左90,上90,前90,上-90,前-90</STRONG> (口诀1)</FONT></FONT>。</DIV>
<DIV style="TEXT-INDENT: 21pt"><SPAN style="COLOR: blue">注:</SPAN><SPAN style="COLOR: blue">90 – </SPAN><SPAN style="COLOR: blue">顺时针转</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">度,</SPAN><SPAN style="COLOR: blue"><FONT face="Comic Sans MS">-90</FONT> – </SPAN><SPAN style="COLOR: blue">逆时针转</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">度,</SPAN><SPAN style="COLOR: blue">180 – </SPAN><SPAN style="COLOR: blue">顺时针转</SPAN><SPAN style="COLOR: blue">180</SPAN><SPAN style="COLOR: blue">度,</SPAN><SPAN style="COLOR: blue"><FONT face="Comic Sans MS">-180</FONT> – </SPAN><SPAN style="COLOR: blue">逆时针转</SPAN><SPAN style="COLOR: blue">180</SPAN><SPAN style="COLOR: blue">度。其中除于“底”面为从上往下看之外,其它均是从对应的面往其背面看,比如:</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"><SPAN style="COLOR: blue">“<FONT face="Comic Sans MS">上</FONT></SPAN><SPAN style="COLOR: blue"><FONT face="Comic Sans MS">-90</FONT></SPAN><SPAN style="COLOR: blue">”指的是上面层从上往下看逆时针转</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">度;</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"><SPAN style="COLOR: blue">“左</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">”指的是左面层从左往右看顺时针转</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">度;</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"><SPAN style="COLOR: blue">“<FONT face="Comic Sans MS">右</FONT></SPAN><SPAN style="COLOR: blue"><FONT face="Comic Sans MS">-90</FONT></SPAN><SPAN style="COLOR: blue">”指的是右面层从右往左看逆时针转</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">度;</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"><SPAN style="COLOR: blue">“前</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">”指的是前面层从前往后看顺时针转</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">度;</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"><SPAN style="COLOR: blue">“<FONT face="Comic Sans MS">水平中间层</FONT></SPAN><SPAN style="COLOR: blue"><FONT face="Comic Sans MS">-90</FONT></SPAN><SPAN style="COLOR: blue">”</SPAN><SPAN style="COLOR: blue">指的是水平中间层从上往下看逆时针转</SPAN><SPAN style="COLOR: blue">90</SPAN><SPAN style="COLOR: blue">度;</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"><SPAN style="COLOR: blue">“底</SPAN><SPAN style="COLOR: blue">180</SPAN><SPAN style="COLOR: blue">”指的是底层从上往下看顺时针转</SPAN><SPAN style="COLOR: blue">180</SPAN><SPAN style="COLOR: blue">度,而不是从下(底)往上看。</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt">转完口诀后位置1移到如下图的位置:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2628.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">如果位置1块“前”面颜色刚好与其下面的颜色一致则转完后位置和颜色刚刚好,比如上图的绿色。否则转到位置1的可能是位置正确位颜色刚好相反,如下图位置2的黄色和绿色相反:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2629.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">解决办法是按上面的口诀把一个无关的块转到位置2处把2块挤走,然后再用同样的口诀把被挤走的2块转回来,其颜色就正过来了,如下图完成第二层:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2630.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">现在该转第三层了,也是先转棱块,共4块,把上图中位置1和位置2互换的口诀是:<FONT color=#ff0000><FONT face="Comic Sans MS"><STRONG>上90,前90,右90,上90,右-90,上-90,前-90</STRONG> (口诀2)</FONT></FONT>。</DIV>
<DIV style="TEXT-INDENT: 21pt">重复上面的口诀把各个块的位置放好,这时可能有位置对但颜色反的情况,比如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2631.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">颜色相反都是成对出现的,也就是说不存在1块或3块颜色反的情况。把颜色反过来,需要先把换色的块转到位置1,口诀是:<FONT color=#ff0000><FONT face="Comic Sans MS"><STRONG>{右90,水平中间层-90}×4</STRONG> (口诀3)</FONT></FONT>,“{…}×4”的意思是把大括号里的口诀重复4遍。</DIV>
<DIV style="TEXT-INDENT: 21pt">转完口诀后会发现位置1块颜色正确了,但下面两层乱了,如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2632.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">此时不用担心,<FONT color=#ff0000>只转动上层</FONT>把另一个需要换颜色的位置2块转到位置1(“前”的位置不变),然后重复上面的口诀,转完后会发现下面两层的恢复了,如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2633.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">最后就只剩4个角块了,首先看看有没有位置正确的块(颜色不一定正确),如果有则把该块当作位置0,如上图。如果没有则按后面的口诀(注:即1→2→3→1转换的口诀)转一遍直到有一块位置正确,再把它当作位置0。</DIV>
<DIV style="TEXT-INDENT: 21pt">确定位置0后“前”面也就确定了,如上图的绿色,此时实现位置1→2→3→1转换的口诀是:<FONT color=#ff0000><FONT face="Comic Sans MS"><STRONG>前90,底-90,前180,底-180,前180,底90,前-90,<SPAN style="COLOR: blue">上</SPAN><SPAN style="COLOR: blue">90</SPAN>,前90,底-90,前180,底-180,前180,底90,前-90</STRONG> (口诀4)</FONT></FONT>。其中“上90”的前后步骤都是一样的,记住一边就行。走完口诀再“<STRONG><FONT face="Comic Sans MS" color=#0000ff>上-90</FONT></STRONG>”还原,如果1、2、3位置还不正确继续走口诀直到位置都正确。</DIV>
<DIV style="TEXT-INDENT: 21pt">位置都转对了之后可能有颜色反的情况,如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2634.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">此时可能有多个颜色反的块,接下来需要换颜色了,把要换色的块转到位置1,如上图,然后执行口诀:<FONT color=#ff0000><FONT face="Comic Sans MS"><STRONG>{右90,前-90,右-90,前90}×N</STRONG> (口诀5)</FONT></FONT>,“{…}×N”的意思是把大括号里的口诀重复N遍直到位置1的颜色正确,如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2635.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">此时下面两层也乱了,不过也不用担心,<FONT color=#ff0000>只转动上层</FONT>把下一个需要换颜色的块比如2转到位置1,重复上面的口诀,直到颜色正确,接着是下一个,直到转六面就大功告成了,如下图:</DIV>
<DIV style="TEXT-INDENT: 21pt"><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2636.JPG" onload=ResizeImage(this,520)></DIV>
<DIV style="TEXT-INDENT: 21pt">祝愿各位在魔方的世界中找到征服感,有空再去研究其机理。</DIV>

丙丙 发表于 2008-6-6 08:32:55

沙他一发,然后再慢慢研究:lol

dzbalc 发表于 2008-6-6 08:39:07

好像还不错的样子,学习学习了~~~~~~

kexin_xiao 发表于 2008-6-6 08:42:29

自己研究,精神可嘉啊!

kexin_xiao 发表于 2008-6-6 09:17:22

第一个问题:贴纸的颜色有问题,白对蓝??

xinandy 发表于 2008-6-6 09:18:09

呵呵。很陈很冠希。顶个。

乌木 发表于 2008-6-6 10:06:47

<P><IMG title="" alt="" src="http://www.lordong.cn/blog/yuanup/100_2633.JPG" onload=ResizeImage(this,520)>&nbsp;&nbsp; </P>
<P>&nbsp;</P>
<DIV style="TEXT-INDENT: 21pt">“最后就只剩4个角块了,首先看看有没有位置正确的块(颜色不一定正确),如果有则把该块当作位置0,如上图。如果没有则按后面的口诀(注:即1→2→3→1转换的口诀)转一遍直到有一块位置正确,再把它当作位置0。</DIV>
<DIV style="TEXT-INDENT: 21pt">确定位置0后“前”面也就确定了,如上图的绿色,此时实现位置1→2→3→1转换的口诀是:<FONT color=#ff0000><FONT face="Comic Sans MS"><STRONG>前90,底-90,前180,底-180,前180,底90,前-90,<SPAN style="COLOR: blue">上</SPAN><SPAN style="COLOR: blue">90</SPAN>,前90,底-90,前180,底-180,前180,底90,前-90</STRONG> (口诀4)</FONT></FONT>。其中“上90”的前后步骤都是一样的,记住一边就行。走完口诀再“<STRONG><FONT face="Comic Sans MS" color=#0000ff>上-90</FONT></STRONG>”还原。”</DIV>
<DIV style="TEXT-INDENT: 21pt">&nbsp;</DIV>
<DIV style="TEXT-INDENT: 21pt">这个三角轮换的公式太长,而且易令人误解(做一遍的话底层有一个角块和顶层的互换了,必须适当转顶后再做一遍,再适当转顶,等等,做第四遍才能实现三个角块轮换,步骤更是超长了,见下面第9楼的java演示),其实要实现1-2-3-1的角块轮换,只要这样:整体旋转魔方,使绿色作为后面,黄色作为左面,做U R U' L' U R' U' L 即可。类似的简短公式还有好几个。详见:<A href="http://bbs.mf8-china.com/viewthread.php?tid=4697&amp;extra=page%3D3">http://bbs.mf8-china.com/viewthread.php?tid=4697&amp;extra=page%3D3</A></DIV>

[ 本帖最后由 乌木 于 2008-6-6 10:54 编辑 ]

zoukongyijia 发表于 2008-6-6 10:27:49

我发现一种没有公式的方法,想整理一下发出来。但不知如何发JAVA,先借此地试一个。和本帖无关,不是捣乱<APPLET height=200 name="rubik" codebase="http://zmb.fnfnet.com/myopus/rubik/" archive="http://zmb.fnfnet.com/myopus/rubik/AnimCube.jar" width=200 code="AnimCube.class">
<PARAM NAME="hint" VALUE="6">
<param name="scale" value="0">
<PARAM NAME="facelets" VALUE=".y.......bbbbbb.bb.yyryy....ww.ww.ww...oooooo....rr.rr">
<param name="speed" value="11">
<PARAM NAME="textHeight" VALUE="3">
<PARAM NAME="butbgcolor" VALUE="99CCFF">
<PARAM NAME="initrevmove" VALUE="3">
<PARAM NAME="bgcolor" VALUE="FFFFFF">
<PARAM NAME="movetext" VALUE="2"        title=#为不显示字,2 为显示字>
<PARAM NAME="buttonBar" value="1">
<PARAM NAME="move" VALUE="R   U'   R'">
</APPLET>

[ 本帖最后由 zoukongyijia 于 2008-6-6 10:49 编辑 ]

乌木 发表于 2008-6-6 10:50:03

<P>1楼的三角轮换公式的用法演示如下,要做四遍:(F D' F2 D2 F2 D F') U (F D' F2 D2 F2 D F')U (F D' F2 D2 F2 D F') U2 (F D' F2 D2 F2 D F') (角块的色向暂不管,到下一步再解决);右图是简捷公式 U R U' L' U R' U' L 。</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<applet code="RubikPlayer.class" codebase=3 width="250" height="250">
<param name="colortable" value="0xf8f8f8,0x00732f,0xff4400,0xffd200,0x003373,0x8c000f,0x858585">
  <param name="scrptLanguage" value="SupersetENG">
  <param name="scrpt" value="(F D' F2 D2 F2 D F') U (F D' F2 D2 F2 D F')U (F D' F2 D2 F2 D F') U2 (F D' F2 D2 F2 D F') ">
  <param name="scriptProgress" value="0">
  <param name="beta" value="29">
  <param name="stickersFront" value="1,0,3,0,0,0,0,0,0">
  <param name="stickersRight" value="5,1,5,1,1,1,1,1,1">
  <param name="stickersBack" value="4,3,3,3,3,3,3,3,3">
  <param name="stickersLeft" value="4,4,0,4,4,4,4,4,4">
  <param name="stickersUp" value="5,5,0,5,5,5,5,5,1">
</applet>
<applet code="RubikPlayer.class" codebase=3 width="250" height="250">
<param name="colortable" value="0xf8f8f8,0x00732f,0xff4400,0xffd200,0x003373,0x8c000f,0x858585">
  <param name="scrptLanguage" value="SupersetENG">
  <param name="scrpt" value="CU2 U R U' L' U R' U' L CU2">
  <param name="scriptProgress" value="0">
  <param name="beta" value="29">
  <param name="stickersFront" value="1,0,3,0,0,0,0,0,0">
  <param name="stickersRight" value="5,1,5,1,1,1,1,1,1">
  <param name="stickersBack" value="4,3,3,3,3,3,3,3,3">
  <param name="stickersLeft" value="4,4,0,4,4,4,4,4,4">
  <param name="stickersUp" value="5,5,0,5,5,5,5,5,1">
</applet>

[ 本帖最后由 乌木 于 2008-6-6 12:13 编辑 ]

zoukongyijia 发表于 2008-6-6 10:52:00

试验多次,终于成功了。
另外,不知道为什么,有的JAVA能看到,有的只是灰蒙蒙的一片,但是别人能看到。
页: [1] 2
查看完整版本: 发现一个别人写的教程,图做的不错。