hubo5563 发表于 2014-2-13 11:25:34

百慕大五魔方程序设计用的编码方案

本帖最后由 hubo5563 于 2024-2-24 22:37 编辑

    年前就收到老大寄来的百慕大五魔八大行星魔方了,又勾起我想设计百慕大五魔的仿真程序和java助手的欲望了。
    百慕大五魔组装状态是非常多的,外形除了正十二面体外,还能组装出棱十二面体还有正错12轴和棱错12轴的魔方,每种魔方又能组装出非常多的花样来。我想能把这些用一个程序实现,需要研究一些算法。
    首先是魔方的编码,魔方的形状取决于轴的形式,用正12轴就是百慕大五魔方,魔方有物理角块20个,物理棱块30个,每12个面都是五边形面。
    用正棱12轴就是百慕大棱12面体,这个魔方有8+4*6=32个物理角块,有4+8+8+4=24个物理棱块,12个面都是菱形面。
    用错装正12轴就是上下是五边形,中间是梯形面的十二面体魔方,有5+4*5+5=30个物理角块,有5+5+5+5+5=25个物理棱块。
    用错装棱12轴,这样的魔方上面3个菱形面,下面3个菱形面,中间6个梯形面,短边和长边交错排列。物理角块8+4*6=32个,物理棱块有3+6+6+6+3=24个。
    因此,第一个编码用A、B、C、D表示上面4种形状。

    形状确定后,魔方的花样取决于每个面中心的形状和方向。中心五角星的有2种状态,中心为菱形的有5种状态、中心为梯形的有10种状态,我们用小写字母a到q来表示。

    4种形状的魔方每个面有3种,就是5边形面、菱形面和梯形面。

    五边形面编码:





    菱形面编码:




      梯形面编码:





     魔方的编码就是形状码加12个面编码,共13个码。

     编码空间是4×17的12次方等于2330488948919044种。

     并不是每个编码都存在一个百慕大五魔方与之对应,在编码空间的任意一个编码,是否存在一个魔方与之对应,这就是魔方结构的存在性判断,需要一个判断方法。

      

Fenz 发表于 2014-2-13 12:25:09

本帖最后由 Fenz 于 2014-2-13 13:18 编辑

期待了好久啊,胡老师终于要做了。太好了,另外还有个6菱形面、6梯形面的菱错12轴的情况哟

hubo5563 发表于 2014-2-13 15:29:33

Fenz 发表于 2014-2-13 12:25 static/image/common/back.gif
期待了好久啊,胡老师终于要做了。太好了,另外还有个6菱形面、6梯形面的菱错12轴的情况哟

        经你的提示我弄明白棱错12轴的结构了,原来棱12轴分成两半要把中间的6轴劈开,这样一半有六个半轴,3根整轴,三根整轴形成等边三角形排列。
错开是指错60度安装。这样的魔方上面3个菱形面,下面3个菱形面,中间6个梯形面,短边和长边交错排列。物理角块8+4*6=32个,物理棱块有3+6+6+6+3=24个。
       菱形面和梯形面编码也和上面给出的一样,就是给定一个编码,判断这个魔方存在与否每种轴结构有差异。

洛阳狼王 发表于 2014-2-13 16:03:12

感谢分享                                             

折翼蚂蝗 发表于 2014-2-13 16:50:39

不理解老师的意思,但还是非常期待见到java工具出现!!

小糊涂虫 发表于 2014-2-13 20:39:34

支持一个                                

Fenz 发表于 2014-2-14 09:32:44

hubo5563 发表于 2014-2-13 15:29 static/image/common/back.gif
经你的提示我弄明白棱错12轴的结构了,原来棱12轴分成两半要把中间的6轴劈开,这样一半有六个半轴 ...

对,就是这种结构。我也是因为大烟头提到有菱错12轴后,才尝试出来这种结构的(以前只尝试出3种),由于身边没有模型,就没发图上来。也没找到这种结构需要的轴心,所以也没拼出其实物来。

hubo5563 发表于 2014-2-14 15:35:00

本帖最后由 hubo5563 于 2014-2-14 16:05 编辑

Fenz 发表于 2014-2-14 09:32 static/image/common/back.gif
对,就是这种结构。我也是因为大烟头提到有菱错12轴后,才尝试出来这种结构的(以前只尝试出3种),由于身边 ...

先用表面模型,我画了这几种的展开图:






注意,四个角块在一起时少画一个面。

     这4个除了正十二轴的正十二面体是精确模型,其他3个都是近似模型。

      就是说出来的面有可能不平整。

       例如棱错12轴,那6个被分开的轴是均匀分布的夹角是60度。精确模型应该是63.43495度。

Fenz 发表于 2014-2-14 16:18:44

hubo5563 发表于 2014-2-14 15:35 static/image/common/back.gif
先用表面模型,我画了这几种的展开图:




那三个都是近似的,实物组装时还会因为力的作用自适应,基本上不影响转动,只是稳定性和防POP打了些折扣;但3D建模就麻烦了,我弄的3D模型就都歪歪扭扭的,一直想不到什么好的方法调整。看胡老师算出了精确角度,是不是已经解决这个问题了呢?

hubo5563 发表于 2014-2-14 17:08:13

本帖最后由 hubo5563 于 2014-2-14 17:12 编辑

Fenz 发表于 2014-2-14 16:18 static/image/common/back.gif
那三个都是近似的,实物组装时还会因为力的作用自适应,基本上不影响转动,只是稳定性和防POP打了些折扣; ...

       这些都需要仔细计算,仿真应力作用的自适应,需要适当调整,但不能完全解决面不平的问题。
我想把棱块和角块组成的棱在夹槽中平均排放,出来面也不会太平整。
       实际棱12面体有精确模型,转动角度也不是36度的整数倍,而是
0,70.53,109.47,180,-109.47,-70.53度
       近似模型转动角度对应精确模型是:0,72,108,180,-108,-72度。相差不多。
页: [1]
查看完整版本: 百慕大五魔方程序设计用的编码方案