本程序基于ABAP实现,使用CFOP法的思路还原3阶魔方。
录入时按照黄、橙、蓝、红、绿、白色依次录入,用英文首字母计作:
YYYYYYYYY OOOOOOOOO BBBBBBBBB RRRRRRRRR GGGGGGGGG WWWWWWWWW
按照上述方式录入颜色后,通过算法在三维坐标中模拟魔方,并将对应的颜色记录到对应空间上,在执行R、F等类似算法时,实际上是将对应的立方体沿某个轴进行旋转,则可以使用三维空间的旋转公式计算得到旋转后的位置。
在旋转过程中,所在轴对应的颜色不变,另外两个轴对应的颜色置换(±90°)。
例如,角块A(1,1,-1)(R,Y,G)执行R操作,此时沿着x轴顺时针旋转90°,对应的A‘的坐标,根据公式:
x' = x
y' = y·cos 90° + z·sin 90°
z' = z·cos 90° - y·sin 90°
所以,A'(1,-1,-1)(R,G,Y)
备注:
cos 90° = 0
cos -90° = 0
sin 90° = 1
sin -90° = -1
(待完善)
code编码便于在执行旋转过程中的处理
计划使用固定的算法,在匹配到算法表后直接执行
为便于测试,会提供随机生成的打乱公式
因个人习惯,在使用CFOP过程中,首先白色中心块朝上还原一个白色Cross,之后旋转180°,寻找后续算法,本程序依次运行,在每一阶段会做文字提示。
- https://github.com/crumpstrr33/CFOP-cube-solver
- https://www.speedsolving.com/wiki/index.php/CFOP_method
- https://juejin.cn/post/6970700421035884558
- http://kociemba.org/cube.htm
谨对以上文献的作者表示感谢,未竟之处,敬请谅解,欢迎交流指正。