魔方吧·中文魔方俱乐部

标题: 球面切割魔方Java助手说明书 [打印本页]

作者: hubo5563    时间: 2024-4-14 08:42:33     标题: 球面切割魔方Java助手说明书

本帖最后由 hubo5563 于 2024-4-17 08:50 编辑

          球面切割魔方Java助手说明书
          球面切割魔方Java助手是我经历了3年才推出的魔方辅助破解和设计的软件。它不同与过去的魔方Java助手。过去的Java助手都是针对一类魔方设计的,这个是用户可以定义魔方外形,用户可以定义转动切割轴,用户可以定义用来切割魔方面的属性,定义转动轴的属性,用户可以定义切割方式。用它可以设计魔方外形,可以设计不同切割的虚拟魔方。
      可以从魔方吧任意状态下网页的最顶部的菜单栏里的工具栏的最后一项《球面切割魔方Java助手》菜单进入,也可以从倒数第三项菜单,《胡波系列Java助手》的第一个进入。进入后界面如下:
      界面如下:

图0001.PNG
  1:主显示区  显示魔方动画,显示魔方未切割块,显示输出代码等
      2:预定切割   预定的106种切割方式
      3:魔方外形    预定的59种魔方外形
      4:线条           魔方显示时有线条或无线条
      5:切割参数    自定切割参数,在三楼详细说明
      6:外形参数    自定外形参数,在四楼详细说明
      7:面性质        7种面性质,只对预定外形起作用
      8:模式           颜色模式 F9键可编辑魔方各个块的颜色
                            形状模式  F9键可轮流切换主显示区的显示模式
      9:自定去除块  不要的魔方块可去掉,例如空心魔方
      10:自定面修饰  魔方外形增加锥体、台体、对偶锥体、对偶台体 详细说明在八楼
      11:转动速度    控制魔方转动速度的参数
      12:提交按钮   
      13:自定切割序列   另一种切割魔方的方式,可切出捆绑魔方
      14:初始化序列    常规框
      15:待执行序列    常规框
      16:自定义公式    常规框
      17:可选参数       常规框
      18:输出框           常规框

      魔方外形预定义了59种常见对称多面体,包括正多面体,半正多面体,卡塔兰多面体,截角卡塔兰体等。这些立体外形都可以设计成平面、小凹面、大凹面、小凸面,中凸面、大凸面和球面七种方式。这些立体本质上是根据定义数据做出来的,只是把他们的定义数据存到程序里了。59种常见多面体可在Java工具的《魔方外形》选框内查看和选择。
      软件预定义了常用切割方式106种,这些数据转动切割方式也是和自定义切割方式一样的数据格式,只是预先保存到程序里了。预定义切割都用的是平面,并且层数固定。106种常用切割方式在《预定切割》选框内查看和选择。
      软件支持Bram魔方,有内设的227种外形。
       软件支持Bram魔方,有内设的227种转动轴,每种转动轴的切割层,以及每层的切割深度和切割面属性用户可以定义。
       除了这些预定义的外形和切割方式,用户可以通过Java助手自己设计自己的魔方外形,和切割方式。实际上每种轴可以自己定义切割层1到3层,每层可以用平面和半径不同的球面切割,可以用凸球面切割也可以用凹球面切割。切割转动轴与魔方外形是独立的,一种切割转动轴可以用在任意外形上,例如:普通七阶魔方用在正方体上就是普通七阶魔方,用到凹面的四角化六面体就是如下的魔方。
      本软件鼠标点击和原来的有一点不同,鼠标左键点击逆时针转动,右键点击顺时针转动,直接点击转动外层,加上上档键转动12层,加上Ctrl键转动123层。这和手动转动一致,手动转魔方也是一次转多层的。原来的软件加上上档键转动第二层,加上Ctrl键转动12层。
      本软件除了支持正常切割外,还支持魔中魔切割,可以定义每个魔中魔的面属性。最多可以支持3个圈的魔中魔切割。可以支持太阳花魔方的切割,太阳花魔方与普通切割不同就是节点多一倍。支持华丽魔方切割,支持子母魔方切割。
      本软件具有输出obj格式的数据功能。obj格式的文件是3d软件的标准文件,现行的多数3d软件都支持obj文件的导入。因此,本软件增加了obj格式数据的输出。可以输出魔方外形的obj数据,也可以输出任意一个魔方块的obj数据。把它复制到记事本中,保存成obj后缀的文件即可。这里有我调试程序时输出的几个obj文件,下载后解压到一个文件夹里,可以用Windows10自带的3d查看软件看到效果。obj文件的用途很多,可以作为建模软件的初始文件,可以在一些程序中使用。下面是Windows10自带的3D软件的截图:

凸面正方体:
图0002.PNG

图0003.PNG

Bram564外形:
图0004.PNG
图0005.PNG
图0006.PNG
图0007.PNG

下面是我调试程序输出的几个obj文件的压缩文件,下载后解压到一个目录即可用3D软件查看。


obj.zip (556.39 KB, 下载次数: 2)



附件: 图0001.PNG (2024-4-14 08:40:45, 96.35 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTAyfDU2N2I4NTEyfDE3MTg0ODM5NDB8MHww

附件: 图0007.PNG (2024-4-14 08:44:25, 188.18 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTA4fDcxNTE1NjJlfDE3MTg0ODM5NDB8MHww

附件: 图0006.PNG (2024-4-14 08:44:24, 241.58 KB) / 下载次数 1
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTA3fGEzY2MzYjAwfDE3MTg0ODM5NDB8MHww

附件: 图0005.PNG (2024-4-14 08:44:24, 214.54 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTA2fDRjYjZjYjIyfDE3MTg0ODM5NDB8MHww

附件: 图0004.PNG (2024-4-14 08:44:23, 138.08 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTA1fDkxZGZjMjg4fDE3MTg0ODM5NDB8MHww

附件: 图0003.PNG (2024-4-14 08:44:23, 306.55 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTA0fGU4YzY4MGJkfDE3MTg0ODM5NDB8MHww

附件: 图0002.PNG (2024-4-14 08:44:22, 143.3 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTAzfGNlMjNmYzJlfDE3MTg0ODM5NDB8MHww

附件: obj.zip (2024-4-14 08:58:29, 556.39 KB) / 下载次数 2
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxNTA5fGY0YTk1YWFlfDE3MTg0ODM5NDB8MHww
作者: hubo5563    时间: 2024-4-14 08:50:25

本帖最后由 hubo5563 于 2024-4-14 11:13 编辑

      Java助手主框显示方式有4种,第一种正常魔方动画,第二种显示没有切割的魔方,第三种显示魔方的单块,第四种显示魔方一组相似块。当界面的《模式》选择《形状》时,由F9键轮流切换。当《模式》选择《颜色》时,F9键和原来的一样,进入颜色编辑状态,操作也一样。
      当处在第一种正常魔方动画方式,除F9键之外,其他功能键与原来的一致。
      F1:帮助信息
      F2:退出文本态回到魔方状态
      F3:显示点击的步骤
      F4:显示初始化序列步骤
      F5:显示论坛代码
      F6:显示html代码
      F7:显示其他参数
      F8:同F2
       当处在第二种显示没有切割的魔方状态,功能键如下:
       F1:帮助信息
       F2:退出文本态回到魔方状态
       F3:显示魔方外形参数
       F4:显示魔方各个转动轴参数
       F7:显示魔方外形参数的OBJ格式的数据,可以按CtrL+a键,把它全选,再Ctrl+c键把它复制下来,再粘贴到Windows的记事本里,把它保存成扩展名为obj的文件,就是通用的3D软件文件。这样的文件可以导入到其他3D建模软件中,也可以在程序中使用。
       F9:键轮流切换显示模式
      当处在第三种显示魔方的单块状态,功能键如下:
       F1:帮助信息
       F2:退出文本态回到魔方状态
       F3:显示当前显示块的外形参数
       F5:显示前一块
       F6:显示后一块
       F7:显示当前显示快的外形参数的OBJ格式的数据。
       F9:键轮流切换显示模式
       当处在第四种显示魔方一组相似块状态,功能键如下:
        F1:帮助信息
        F2:退出文本态回到魔方状态
        F3:显示当前显示块族序号,你可以记录下该序号,把同样块的所有序号记录后,可以移除这些块,来定义空心魔方等。
      

作者: hubo5563    时间: 2024-4-14 09:04:27

本帖最后由 hubo5563 于 2024-5-3 08:54 编辑

     通常的魔方仿真软件以魔方为主,包括外形和切割,切割和魔方相对应,切割和外形是一体的。本软件的切割轴和外形是独立的,这样不同切割在不同外形下呈现不同的魔方,能方便看到不同外形的等价魔方是很有趣的。
例如:

正方体只转上面四个角的转角魔方:





[SCubejava=580,500]
[param=Order]1[/param]
[param=AxisType]7[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=MoveCut]UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;ULB';UFL';URF';UBR';ULB';UFL';URF';UBR';ULB';UFL';URF';UBR';[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]


等价的八面体魔方

[SCubejava=580,500]
[param=Order]2[/param]
[param=AxisType]7[/param]
[param=FaceType]4[/param]
[param=Speed]6[/param]
[param=MoveCut]UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;ULB';UFL';URF';UBR';ULB';UFL';URF';UBR';ULB';UFL';URF';UBR';[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]



等价的四角化六面体魔方

[SCubejava=580,500]
[param=Order]12[/param]
[param=AxisType]7[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=MoveCut]UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;UFL;ULB;UBR;URF;ULB';UFL';URF';UBR';ULB';UFL';URF';UBR';ULB';UFL';URF';UBR';[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]

形状不同,但切割相同,出来的魔方外形不同的。

著名的捆绑魔方Bicube魔方:

[SCubejava=580,500]
[param=Order]1[/param]
[param=AxisType]1[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=MoveCut]f2;r;R;U';L;U2;R';U;F';L';U';F;R;U;L;F;U';F';U';F2;[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]



等价的八面体魔方:

[SCubejava=580,500]
[param=Order]2[/param]
[param=AxisType]1[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=MoveCut]f2;r;R;U';L;U2;R';U;F';L';U';F;R;U;L;F;U';F';U';F2;[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]


等价的菱形十二面体魔方

[SCubejava=580,500]
[param=Order]8[/param]
[param=AxisType]1[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=MoveCut]f2;r;R;U';L;U2;R';U;F';L';U';F;R;U;L;F;U';F';U';F2;[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]

以上三个魔方等价的,你看不是很有趣。

作者: hubo5563    时间: 2024-4-14 09:15:45

本帖最后由 hubo5563 于 2024-4-15 09:24 编辑



空间对称群的种类和软件的转动轴的分类
标准轴
根据数学理论,空间有限的完全对称的变换群只有四类:
1:四面体对称群,
2:正方体对称群,
3:正十二面体对称群,
4:二面体对称群。

        魔方的设计大都是基于这些群设计的转动轴和转动面。
      上面的对称群实际上对三维空间点都是对称的,他的范围是无限大空间。另外,在局部有限尺度范围内,还有其他类型的有限对称群,不是全空间的对称群,Bram切割就是一种。除了以上四类全空间的对称群,在加上Bram切割算是5大类。
我这里也是根据这个设计的转动轴和切割方式,外形也是基于这些对称群设计的。因此我把轴和外形都设计成5大类。为编程方便,共设六类。下面分别介绍。
大类:
0-四面体切割群
1-正方体切割群
2-五魔方切割群
3-二面体对称群
外形类型:4-我设计的多面体
切割类型:4-五魔方和正方体魔方的二轴魔方
5-Bram魔方

大类0-2的小类表
小类:
大类0-四面体切割群的小类:
   0-四面体(转面)
   1-四面体(转角)
   2-正方体(转棱)
   3-三角化四面体(卡塔兰)
   4-菱形十二面体,卡塔兰
   5-小斜五魔方
   6-小斜五魔方
   7-正十二面体部分
   8 -大斜五魔方
   9-可截成正二十面体
   10-10可截成正二十面体
   11-二十二面体部分面
   12-等边
   13-截角菱形十二面体
   14-十六面体
   15-正二十面体
   16 -大斜五魔方
大类1-正方体切割群的小类:
   0-正方体转面
   1-正方体转角
   2-正方体转棱
   3-四角化六面体(卡塔兰体)
   4-鸢形24面体 (卡塔兰体)
   5-五角24面体1
   6-五角24面体2
   7-三角化八面体(卡塔兰体)
   8-六角化八面体(卡塔兰体)前
   9-六角化八面体(卡塔兰体)后
大类2-五魔方切割群的小类
   0-正十二面体转面
   1-正十二面体转角
   2-正十二面体转棱
   3-五角化十二面体,卡塔兰体
   4-鸢形60面体,卡塔兰体
   5-五角60面体1
   6-五角60面体2
   7-三角化二十面体
   8-六角化二十面体(卡塔兰体)前
   9-六角化二十面体(卡塔兰体)后

作者: hubo5563    时间: 2024-4-14 09:42:36

本帖最后由 hubo5563 于 2024-5-10 21:45 编辑

切割参数的详细说明
      这里的切割参数是Java助手里的《切割参数》,对应小应用程序的参数:Slice
      这个参数是构造自定义轴和切割平面的,与魔方外形无关,但是实现必须有外形。最好外形选择一致。

      这个参数可以为空,当这个参数为空时,切割采用预定切割。即《预定切割》的参数起作用。预定切割有106种,可以用预定切割设置轴的类型和切割面。这个参数不为空时,必须遵守这里规定的数据格式输入有效参数。当参数格式不对或数据大小不对,将出现错误状态。
下面数据结构中的大括号和中括号实际数据中并不存在,这里只表示重复项。

切割参数:0,1,2
                0:四面体对称群切割类
                 1:正方体对称群切割类
                 2:正十二面体对称群切割类
          数据结构l,n,{m,k,[u,r,],sx,[u,r]};
          l---大类,
          n---轴类数,
          m---小类,
          k=切割层数,
          u---深度,
          r----半径
         sx---附加属性
           其中:大类l只能是0,1,2  三个数之一,如楼上所述。
          轴类数n,是指这个切割中,有几种轴,可以有1,2,3这3种选择。
                         紧接着大括号里是重复内容,重复次数就是轴类数n。
          小类m,如楼上所述。
          切割层数k,就是这种轴切割的层数,可以有1,2,3这三种选择。
                            紧接着中括号里是重复内容,重复次数就是切割层数k。
          深度u,就是切割深度,0.0001到1.5之间任意实数,但是不能大于魔方外形,不然就切不到任何东西,形不成转动层。
          半径r,切割球面半径,
                    为0,代表切割面是平面;
                    正数代表切割面向外凸,
                    负数代表切割面向外凹。一般小于10;
          附加属性sx:
               0,1两位表示附加切割层数,也是后面中括号里的重复次数,用来设置魔中魔魔方。
               2,3两位  为0 正常转动  
                              为1 太阳花和华丽魔方的转动方式  
                              为2  45度  子母魔方转动  
                              为3  30度  子母魔方转动
              子母魔方只有正方体转面切割才起作用,其他切割无效。
         附加切割层的转动用:locked的值来控制。在魔中魔魔方设计时再详细介绍。
       切割参数:3  二面体对称群切割类
   
         精简数据结构:3,0,m,k1,[u,r],k2,[u,r]
                          精简数据结构定义简单的真正二面体对称轴。 第二个参数为0是精简数。
                          m---为上下底的边数,m大于3
                           k1----上下底切割层数,后面的[u,r]出现k1次
                           u----切割深度
                           r----切割球面半径
                                    为0,代表切割面是平面;
                                    正数代表切割面向外凸,
                                    负数代表切割面向外凹。
                           k2----是侧面轴的切割层数,后面的[u,r]出现k2次。
                                   侧面切割倾斜角为90度,水平初始角为0。

         扩展数据结构:3,m,k1,[u,r],ks1,[u,r],k2,[u,r],ks2,[u,r],n,{jiao1,jiao2,k3,[u,r],ks3,[u,r]}
                       u----切割深度
                      r-----球面半径
                                    为0,代表切割面是平面;
                                    正数代表切割面向外凸,
                                    负数代表切割面向外凹。
                     m----为上下底的边数,也是侧轴每层的轴数
                     k1----上底切割层数,k1=0时后面跟的[u,r]以及ks1和后面的[u,r]不出现
                              当k1不等于0时,后面的[u,r]出现k1次,然后是ks1参数。
                     ks1----上底的附加层数
                              当ks1为0时,后面紧跟的[u,r]不出现
                             当ks1不等于0时,后面紧跟的[u,r]出现ks1次。
                   然后就是下底切割参数,格式相同,不在详细解释。
                     k2----下底切割层数,k2=0时后面跟的[u,r]以及ks2和后面的[u,r]不出现
                     ks2---是下底的附加层数,数据格式同上底。
                  然后是侧面多组切割参数:
                     n---是侧面轴的层次数,最少为1
                     大括号里的出现n次
                         jiao1---是该层轴的倾斜角,和z轴平行倾斜角为90度,小于90度,上小下大,大于90度下小上大。
                         jiao2---是该层的水平初始角,该层轴的排列初始轴不一定是0,需要转动jiao1度,以后各个轴都均匀分布在该层的圆周上。
                          
                            k3----是侧面轴的切割层数,k3=0时后面跟的[u,r]以及ks3和后面的[u,r]不出现,一般不会出现这种情况。
                                   后面出现k3次[u,r]
                           ks3是侧面的附加层数,ks3可以为0,当k3为0时,后面的[u,r]不出现。
                                   当ks3不为0时,后面的[u,r]出现k3次。
                             
              附加切割层的转动用:locked的值来控制。在魔中魔魔方设计时再详细介绍。

   切割参数:4   正方体或正十二面体的二轴切割类

          数据结构:l,m,k,[u,r],k1,[u,r],deep;
           其中:l---类型 4     
           m---小类,m的范围:0-36;具体参考下面附表
          其中0-22是正十二面体数据,外形最好是正十二面体对称群外形,这样魔方就不变形
           23-36是正方体数据,外形最好是正方形对称群外形,这样魔方就不变形
           k----是正常切割层数,紧接中括号代表重复内容,k是重复内容。
          当k1为0时,是轴1和轴2的共同切割,当k1不为0时,只是轴1的切割。
           u----切割深度
           r----球面半径,为0,代表切割面是平面;
                                正数代表切割面向外凸,
                                负数代表切割面向外凹。
          k1---轴2切割层数,为0,代表轴2的切割同轴1。不为0时,是轴2的切割层数
          k1不为0时,后面中括号是轴2的切割深度和切割面球面半径。  
          deep---为解绑深度,两轴各转一次,算1。一般取10左右。


切割参数:5  Bram切割轴类
          模式0,预定轴,
          数据结构:5,0,m,k,[u,r,],k1,[u,r],deep;

其中:m---小类,m的范围:0-226;代表不同的Bram切割。227-453为0-226的对称Bram切割。
                             具体值与外形参数一致,参看楼下。
          k----是正常切割层数,紧接中括号代表重复内容,k是重复内容。
         当k1为0时,是轴1和轴2的共同切割,当k1不为0时,只是轴1的切割。
          u----切割深度
          r----球面半径,为0,代表切割面是平面;
                                正数代表切割面向外凸,
                                负数代表切割面向外凹。
          k1---轴2切割层数,为0,代表轴2的切割同轴1。不为0时,是轴2的切割层数
          k1不为0时,后面中括号是轴2的切割深度和切割面球面半径。
         deep---为解绑深度,两轴各转一次,算1,当u值小到一定程度,该数越大,计算量越大,存储空间需要越多。当deep越小,能完全解绑的魔方解绑不彻底。要从小到大适当调整该值。

         模式1,自定义轴
         数据结构:5,1,a,aa,b,bb,c,cc,k,[u,r,],k1,[u,r],deep;
         a,aa----Bram(a,b,c)的a的分子和分母都是整数
         b,bb----Bram(a,b,c)的b的分子和分母都是整数
         c,cc----Bram(a,b,c)的c的分子和分母都是整数
         k,u,r,k1,deep含义同上。
切割参数6:散点构造切割轴
  

         数据格式小类0,为三维坐标构造,数据格式:6,0,n,{x,y,z,k,[u,r],sx,[u,r]}
         n----轴特征点的个数,后面大括号里面的内容重复n次
         (x,y,z)---特征点三维坐标
         k----该轴的切割层数,范围1-3,后面中括号的u,r,重复k次
         sx---轴属性,低二位为辅助切割层数
         后面中括号的u,r,重复sx最低二位表示的次数。

           数据格式小类1,为经纬坐标构造,数据格式:6,1,n,{jiao1,jiao2,k,[u,r],sx,[u,r]}
         n----轴特征点的个数,后面大括号里面的内容重复n次
         jiao1---是该轴的倾斜角,和z轴平行倾斜角为90度,小于90度,上小下大,大于90度下小上大。
         jiao2---是该轴的水平初始角,该轴水平需要转动jiao1度。
         k----该轴的切割层数,范围1-3,后面中括号的u,r,重复k次
        sx---轴属性,低二位为辅助切割层数

         后面中括号的u,r,重复sx最低二位表示的次数。数据格式小类2,为经纬增量构造,
数据格式:6,2,n,{jiao1,jiao2,zl,k,[u,r],sx,[u,r]}
        n----轴特征点组的个数,后面大括号里面的内容重复n次
         jiao1---是该轴的倾斜角,和z轴平行倾斜角为90度,小于90度,上小下大,大于90度下小上大。
         jiao2---是该轴的水平初始角,该轴水平需要转动jiao1度。
         zl--------是该轴的水平角,每生成一轴的增量,重复到大于等于360度。
         k----该轴的切割层数,范围1-3,后面中括号的u,r,重复k次        
          sx---轴属性,低二位为辅助切割层数
         后面中括号的u,r,重复sx最低二位表示的次数。
         u,r-----为切割深度和切割球面半径,同上。







附件: 切割参数4的小类说明.zip (2024-5-4 09:46:19, 711 Bytes) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxOTIxfDcwYjYyNzZlfDE3MTg0ODM5NDB8MHww
作者: hubo5563    时间: 2024-4-14 09:49:25

本帖最后由 hubo5563 于 2024-5-10 22:22 编辑

     外形参数的相细说明
    这里的外形参数是Java助手里的《外形参数》,对应小应用程序的参数:Shape


     这个参数可以为空,当它为空时,以《魔方外形》设置的预定形状为准。当它不空时,数据格式必须满足下面规定的格式,否则将会出现错误状态。

外形参数:0,1,2
                0:四面体对称群类外形
                1:正方体对称群类外形
                2:正十二面体对称群类外形
               数据结构:l1,m1,k,s,u1,l2,m2,u2,l3,m3,u3;
               其中l1,l2,l3为三次切割的大类,数值只能是0,1,2三个之一。
               m1,m2,m3为三次切割的小类,数值参考上表。
               u1,u2,u3为切割深度,数值是实数,0.0001-1.8之间。
               k为切割次数,k为1时,没有l2之后的数据。k为2时,没有l3之后的数据。数据都是以英文逗号隔开,最后是英文分号。

外形参数:3
                3为二面体对称群切割外形类
              柱锥台的切割参数数据结构:3,0,m,r1,r2,h;
               这里:

              第二个参数为0,是棱台、棱柱或棱锥体,
               m-----为上下底面的边数。
               r1-----为上底面外接圆的半径,实数<2
               r2-----为下底面外接圆的半径,实数<2
               h------为它的高,实数>0<3;
               r1,r2不能同时为0,当r1或r2有一个为0时切出的是棱锥,当r1=r2并且不等于0时,切出的是棱柱,r1不等于r2都不为0时切出的是棱台。

     3,0,6,0.0,0.5,1.0;             六棱锥(尖)
     3,0,6,0.0,1.0,1.0;           六棱锥(中)
     3,0,6,0.0,1.5,0.7;           六棱锥(矮)
  
     3,0,6,0.5,0.5,1.0;           六棱柱(长)
     3,0,6,1.0,1.0,1.0;           六棱柱(中)
     3,0,6,1.0,1.0,0.5;           六棱柱(短)
  
     3,0,6,0.6,1.0,1.0;           六棱台(高)
     3,0,6,0.6,1.0,0.7;           六棱台(中)
     3,0,6,0.6,1.0,0.4;            六棱台(矮)
  
              
       当第二个参数不为0时
       其他切割的数据结构:3,n,m,u1,r1,u2,r2,[jiao1,jiao2,u,r];  k>0;
            
                n----为切割轴圈的个数。
                m-----为上下底面的边数。
                u1------上底切割的深度。
                r1------上底切割的球面半径,r1=0为平面,r1>0为凸面。r1<0为凹面。
                u2------下底的切割深度。
                r2-------下底切割面的球面半径,r2=0为平面,r2>0为凸面。r2<0为凹面。
                中括号重复次数为n。
                jiao1----切割面倾斜角度,以度为单位,90度与Z轴平行,小于90度,上小下大,大于90度上大下小。
                jiao2----初始水平转角,以度为单位。
                u-----切割深度
                r-----切割面半径,r=0为平面,r>0为凸面,r<0为凹面。

两个例子:
                3,1,5,0.5,0,0.8,0,80,0,0.5,0;
                3,2,6,0.5,5.5,0.55,5,67,0,0.5,0,113,30,0.5,0;



     外形参数:4
                4 为我设计的一系列多面体
                数据结构:4,m,n,p,a,c;
                m----参数1,奇数
                n-----参数2,
                p-----参数3,
                a----切割深度,通常取1即可
                c----配色方案:

                                 0:单色
                                 1:自动配色,保证相邻面不重复颜色
                                 2:根据面的边数配色
                                 
外形参数:5
                5为Bram几何
                模式0为预定的226种几何体,数据结构:5,0,m;
                其中m为Bram几何的序号。参见Bram几何表。

                模式1为自定义Bran几何体,数据结构:5,1,a,aa,b,bb,c,cc,u,r,u1,r1;
                其中:
               a,aa----Bram(a,b,c)的a的分子和分母都是整数
               b,bb----Bram(a,b,c)的b的分子和分母都是整数
               c,cc----Bram(a,b,c)的c的分子和分母都是整数
               模式1定义出来的几何体当切割深度大一些时转动不变形。
              模式2为自定义Bran几何体,数据结构:5,1,a,aa,b,bb,c,cc,u,r,u1,r1;
                其中:
               a,aa----Bram(a,b,c)的a的分子和分母都是整数
               b,bb----Bram(a,b,c)的b的分子和分母都是整数
               c,cc----Bram(a,b,c)的c的分子和分母都是整数
               模式2定义出来的几何体作为参考。


  Bram几何体外形参数:
说明01.PNG
说明02.PNG

切割参数6:散点构造外形

       由于外形是由最初的正方体逐步切割而成的,故散点构造外形是构造每个面的中心点,和面中心到坐标原点的距离,以及切割球面半径。
      模式0,数据结构6,0,n,{x,y,z,u,r}
      n---面数,中括号里的要重复n次。
     (x,y,z)----为轴的法向量,也叫特征点。
        u每个面切割深度。
        r-----切割球面半径,0为平面,证书为凸面,负数为凹面。
        
模式1,数据结构6,1,n,{jiao1,jiao2,u,r}
       n---面数,中括号里的要重复n次。
       jiao1----为轴的法向量倾斜角。
       jiao2----为轴的法向量水平分量角。
       u每个面切割深度。
        r-----切割球面半径,0为平面,证书为凸面,负数为凹面。

模式2,数据结构6,2,n,{jiao1,jiao2,zl,u,r}
       n---面类数,中括号里的要重复n次。
       jiao1----为轴的法向量倾斜角。
       jiao2----为轴的法向量水平分量角。
       zl-----是该轴的水平角每生成一轴的增量,重复到大于等于360度。
       u每个面切割深度。
        r-----切割球面半径,0为平面,证书为凸面,负数为凹面。







附件: 说明02.PNG (2024-5-10 22:22:26, 15.68 KB) / 下载次数 1
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgyMDY2fGRhYmMyNjQwfDE3MTg0ODM5NDB8MHww

附件: 说明01.PNG (2024-5-10 22:22:26, 89.54 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgyMDY1fDAzMWE2N2Y5fDE3MTg0ODM5NDB8MHww
作者: hubo5563    时间: 2024-4-14 10:05:41

本帖最后由 hubo5563 于 2024-4-23 20:55 编辑

一般切割的魔方设计
      软件定义了106种切割方式,和59种预定外形,再加上7种外形面性质,用户用这些就能设计出很多魔方了。直接选《预定切割》《魔方外形》《面性质》这三个参数即可。

         如果用户掌握《切割参数》和《外形参数》后,就可以更好的设计其他切割和其他外形的魔方了。

下面举例说明:

1、二层转角魔方的设计
     魔方外形是正方体,直接从魔方外形选择预定外形2:正方体。从预定切割里找,没有二层转角魔方,只能设计切割参数来实现。由于是正方形二层转角,所以大类肯定是正方体对称类,大类选1,找到大类为0-2的格式说明:
     数据结构:l,n,{m,k,[u,r,],sx,[u,r]};
          l---大类,
         n---轴类数,
         m---小类,
         k=切割层数,
         u---深度,
         r----半径
         sx---附加属性

l为大类1,n为轴类数,这里只是转角,所以有1类轴,选1,m为小类,查表,转角小类为1,k为切割层数,这里是2层,所以为2,n为1,大括号循环1次,k为2,中括号里循环2次,由于普通切割,sx为0,后面中括号里面循环0次,不需要数据。由于采用平面切割,所以切割半径为0,格式为:1,1,1,2,u,r,u,r,0;y额就是1,1,1,2,u,0,u,0,0;再确定切割深度。
注意:多层切割深度从浅到深排列,否则就转动不对了。

      经过多次实验,最终切割参数为:      1,1,1,2,0.7556,0.0,0.0002,0.0,0;
这样就可以了。





[SCubejava=580,500]
[param=Order]1[/param]
[param=AxisType]3[/param]
[param=Slice]1,1,1,2,0.7556,0.0,0.0002,0.0,0;[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]

2:花瓣直升机魔方:
     魔方外形是正方体,直接从魔方外形选择预定外形2:正方体。从预定切割里找,没有球面切割,只能设计切割参数来实现。由于是正方形球面切割转棱,所以大类肯定是正方体对称类,大类选1,找到大类为0-2的格式说明:
     数据结构:l,n,{m,k,[u,r,],sx,[u,r]};
           l---大类,
         n---轴类数,
         m---小类,
         k=切割层数,
         u---深度,
         r----半径
         sx---附加属性
l为大类1,n为轴类数,这里只是转棱,所以有1类轴,选1,m为小类,查表,转棱小类为2,k为切割层数,这里是1层,所以为1,n为1,大括号循环1次,k为1,中括号里循环1次,由于普通切割,sx为0,后面中括号里面循环0次,不需要数据。格式为:1,1,1,2,u,r,0;
采用的是凹面切割才能达到效果,所以,r要取负值。多次调整切割深度u和切割半径最后就是
1,1,2,1,0.556,-1.8,0;



[SCubejava=580,500]
[param=Order]1[/param]
[param=AxisType]3[/param]
[param=Slice]1,1,2,1,0.556,-1.8.0,0;[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]


3:窗花魔方切割参数
     魔方外形是正方体,直接从魔方外形选择预定外形2:正方体。从预定切割里找,没有球面切割,只能设计切割参数来实现。由于是正方形球面切割转角加转面,所以大类肯定是正方体对称类,大类选1,找到大类为0-2的格式说明:
     数据结构:l,n,{m,k,[u,r,],sx,[u,r]};
           l---大类,
         n---轴类数,
         m---小类,
         k=切割层数,
         u---深度,
         r----半径
         sx---附加属性
l为大类1,n为轴类数,这里是转面加转角,所以有2类轴,选2,大括号里面有两个循环,第一个循环,转面,m为小类,查表,转面小类为0,k为切割层数,这里是1层,所以为1,中括号里循环1次,由于普通切割,sx为0,后面中括号里面循环0次,不需要数据。第二个循环,转角,m为小类,查表,转角小类为1,中括号里循环1次,由于普通切割,sx为0,后面中括号里面循环0次,不需要数据。
       格式为:1,2,0,1,u,r,0,1,1,u,r,0;
      转面轴采用平面切割,所以对应的r为0,转角采用的是凹面切割才能达到效果,所以,r要取负值。多次调整切割深度u和切割半径最后就是
     1,2,0,1,0.5,0.0,0,1,1,0.73,-2.0,0;


[SCubejava=580,500]
[param=Order]1[/param]
[param=AxisType]3[/param]
[param=Slice]1,2,0,1,0.5000,0.0,0,1,1,0.73,-2.0,0;[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]
4:大雁大宝石9的设计
     这个魔方外形是截角八面体,但是不是正常情况下的截角八面体,是比正常的截角八面体截的深一些。因此预定的59种魔方外形没有这个,需要设计设置外形参数来达到。这个是正方形对称群的,设置外形选大类为1,切割有两种,一种是正方体切面,一种是正方体切角适当调节它们的深度,最后外形参数如下:
1,1,2,0,0.5,1,0,0.5;

切割直接选择转棱6即可:

[SCubejava=580,500]
[param=Order]11[/param]
[param=AxisType]15[/param]
[param=Shape]1,1,2,0,0.5,1,0,0.5;[/param]
[param=FaceType]0[/param]
[param=Speed]6[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/SCubejava]


   总之,一般魔方设计主要考虑的是外形和切割方式,尽量从预定义里面选择,预定义里没有,就要设计外形切割参数和转轴切割参数。要想正确选择参数,需要计算,或逐步实验。
作者: hubo5563    时间: 2024-4-14 10:16:35

本帖最后由 hubo5563 于 2024-5-3 08:44 编辑

魔中魔魔方的设计
      软件支持辅助层,就是用来设计魔中魔魔方的。

1、三阶双圈魔中魔魔方的设计
      外形,选择预定义外形,2:正方体
      切割面和切割轴,用切割参数来设计,三阶魔方,有一个切割主层,两个圈,需要两个辅助层。
1,1,0,1,0.3,0,2,0.7,-1.0,0.6,-1.2;
     出来是这样的:


图001.PNG

点击这里进入

明显,每个面都是跟着主面转动的,需要为每个面指定属性。
可以用locked参数来实现:


locked参数在其它参数框里输入即可。格式是一个字符串,一个面对应一个字符,顺序和轴的序号一致。可以在形状模式下,按F9键进入整体显示状态,然后按F4键输出轴信息来确定。
0---主面转动时所有圈内的块跟着转动。
1---主面转动时,只有最里面的小圈内的块不跟转动,其它块跟着转动
2---主面转动时,最里面两个圈内的块不跟着转动,其它块跟着转动
3---主面转动时,从里往外数三个圈内的块不跟着转动,其它块跟着转动
只有这4种状态。


根据魔方性质locked参数
      locked=021210;


由于魔方红面对应的是橙色面,所以需要为紫色面5设置颜色
选颜色模式,按F9键,进入颜色编辑状态,选整面填色,选橙色,然后点紫面的任一块,紫面就变为橙色了。然后按F7键输出。其它参数。

locked=021210;
Face1=1111111111111111111111111;
Face2=2222222222222222222222222;
Face3=3333333333333333333333333;
Face4=4444444444444444444444444;
Face5=bbbbbbbbbbbbbbbbbbbbbbbbb;
Face6=6666666666666666666666666;

把它复制下来,粘贴到助手的其它参数框里,提交后,魔方设计完成。之后,你可以用来破解或者做演示,可以输入初始化序列,公式等。
最后结结果:




点击这里进入查看



等价的截角八面体魔方是这样的:

说明书图003.PNG

点击进入查看


2、三圈魔中魔五魔方
外形选预定形状的3:正十二面体
切割参数:
2,1,0,1,0.848,0,3,1.0,-1.0,1.176,-1.15,1.25,-1.2;

其它参数选:
locked=012301230123;



设计结果

说明书图001.PNG

点击进入查看


附件: 图001.PNG (2024-5-3 08:42:45, 70.41 KB) / 下载次数 1
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxODk4fGUzYzRhMmY3fDE3MTg0ODM5NDB8MHww

附件: 说明书图003.PNG (2024-5-3 08:42:09, 90.7 KB) / 下载次数 1
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxODk3fDA1MGJmMzhifDE3MTg0ODM5NDB8MHww

附件: 说明书图001.PNG (2024-5-3 08:42:09, 142.93 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxODk2fDcyMzViYWE4fDE3MTg0ODM5NDB8MHww
作者: hubo5563    时间: 2024-4-14 10:25:51

本帖最后由 hubo5563 于 2024-5-3 09:25 编辑

华丽魔方的设计和太阳花魔方的设计

华丽魔方和太阳花魔方的特点就是最外层比原来有双倍的节点,在切割参数中的属性设置4即可。

1、华丽魔方的设计

外形:选44:截角三角化8面体
切割参数:1,1,0,2,1.083,0,0.45,0,4;

解释:第一个1为大类,正方体对称群类
          第二个1为轴的种类数,由于只有一类轴
          第三个0为小类,即正方体转面轴
          第四个2为该类轴设计两个切割层
          第五个1.083是外层切割深度,这个可以实验得出。
          第六个0为切割球半径,为0代表平面
          第七个0.45为里层切割深度,通过实验的出。
          第八个0为切割球面半径,0表示切割面为平面
          第九个4为属性,第01两位是0,表示没有附加层,第23两位为4即表示23两位是1,表示华丽魔方或太阳花魔方。

          结果:

说明书图006.PNG

         点击进入

2、华丽双圈魔中魔魔方
外形:选44:截角三角化8面体
切割参数:1,1,0,2,1.083,0,0.45,0,6,1.1,-1.0,1.25,-1.0;
根据魔方面性质再设计locked参数,设为012120;
或使用时在其它参数里输入即可。
解释:1-8个参数同上
        第九个6,第01位为2,第23位为1表示有2个附加层,即两个圈,第23位为1表示是华丽魔方或太阳花魔方。
       第十个参数1.1为里面小圈切割深度,由实验得出。
       第十一个参数-1.0为里面小圈切割球面半径,负数表示凹面切割,也是由实验得出。
       第十二个参数1.25为外面大圈切割深度,由实验得出。
       第十三个参数-1.0为外面大圈切割球面半径,负数表示凹面切割,也是由实验得出。

结果:

说明书图005.PNG


点击进入

3、太阳花魔方

外形 2:正方体
切割参数:1,1,0,1,0.41,0,4;
解释:第一个1为大类,正方体对称群类
          第二个1为轴的种类数,由于只有一类轴
          第三个0为小类,即正方体转面轴
          第四个1为该类轴设计一个切割层
          第五个0.41是外层切割深度,这个可以实验得出。
          第六个0为切割球半径,为0代表平面
          第七个4为属性,其中01位为0,没有附加切割层,其中23为4即为1属于太阳花或华丽魔方。

结果:
     
       说明书图004.PNG

点击进入参看动画


4、魔中魔太阳花
外形 2:正方体
切割参数:1,1,0,1,0.41,0,5,0.7,-1.5;

解释:前面六个参数同太阳花魔方
第七个参数5,属性,其中01为为1,代表有一个辅助切割层,即有一个圈
第八个参数0.7代表圈的切割深度,由实验确定。
第九个参数-1.5为圈的切割面半径,负数表示凹面切割,由实验确定。

结果:


说明书图007.PNG

点击进入参看动画




  

附件: 说明书图004.PNG (2024-5-3 09:06:29, 43.01 KB) / 下载次数 1
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxODk5fDhmMDVjYzQzfDE3MTg0ODM5NDB8MHww

附件: 说明书图006.PNG (2024-5-3 09:11:12, 79.42 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxOTAxfDczYjU5YjVifDE3MTg0ODM5NDB8MHww

附件: 说明书图005.PNG (2024-5-3 09:11:12, 92.9 KB) / 下载次数 1
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxOTAwfGRkYWRmNDI3fDE3MTg0ODM5NDB8MHww

附件: 说明书图007.PNG (2024-5-3 09:23:52, 72.81 KB) / 下载次数 0
http://www.mf8-china.com/forum.php?mod=attachment&aid=MjgxOTAyfDdhOTY1ZTU1fDE3MTg0ODM5NDB8MHww
作者: hubo5563    时间: 2024-4-14 10:33:58

本帖最后由 hubo5563 于 2024-5-11 23:00 编辑

Bram魔方的设计和二轴正方体正十二面体魔方设计
        Bram魔方和Bram几何详细内容可以参考redcarrot 老师的帖子:Bram几何——无jumble魔方的可能性探索:http://bbs.mf8-china.com/forum.php?mod=viewthread&tid=115214
       简单来说就是二轴魔方。我这里专门设计了这类魔方的切割。这类魔方除了与正多面体有关的几个,主要是Bram(3,3,2)正八面体转面,Bram(3,3,3)正四面体转面,Bram(4,4,3)正方体转面,Bram(5,5,3)正十二面体转面等由于对称性,所以比较简单,其它的和正多面体无关的Bram魔方切割深度越深,切出的块越多,多达成千上万。由于Java小应用程序不能太占用资源,所以很难做到完美切割的。
      我把和正多面体有关的Bram魔方专门设计一类,切割大类为4。列出了所有的与正多面体相关的,共36个。这些用正十二面体或正方体做外形,切割不深时都不变形。这类魔方的设计主要参考切割参数说明的第4大类。其它Bram魔方的设计参考切割参数说明的第5大类。外形设计也参考:外形参数说明的第5大类说明。


作者: hubo5563    时间: 2024-4-14 10:41:18

本帖最后由 hubo5563 于 2024-5-10 23:16 编辑

自定切割序列说明:
      自定切割序列是一边转动,一边切割的一种切割方式,当转动被卡住时,用相应的面就将所有卡住的块进行切割。
切割命令是合法的转动序列,前面可以冠以前置词,以&结束或自然结束的多个命令段。
   前置词有两个,都是小写字母加英文冒号。
   1-----a: 后面直到&之前的所有命令执行全对称切割。
    大类0是正四面体对称群,正四面体的全对称有4个面,每面3个方向,共12种。
    大类1的正方体对称群,正方体的全对称有6个面,每面4个方向,共24种。
    大类2的正十二面体对称群,正十二面体全对称有12个面,每面5个方向,共60种。
    大类3的二面体对称群,边数为m的二面体的全对称有2m种。其中m是边数。
   2-----am:后面直到&之前的所有命令执行面对称切割。
    大类0是正四面体对称群,有4个面,面对称有4种。
    大类1是正方体对称群,正方体有6个面,面对称有6种。
    大类2的正十二面体对称群,正十二面体有12个面,面对称有12种
    大类3不设面对称。
   其它大类切割不可加前置词。
        每个命令段执行完就自动倒回,带前置的命令段要根据对称性重复多次执行,每次执行完都要倒回。所以最后就是切割好的魔方,像是没有转动过的魔方。
        这个功能主要用来对正常魔方构造捆绑魔方,例如用三阶魔方构造BiCube魔方等,利用太阳花魔方构造百慕大魔方。应用好这个功能可以构造任意魔方的任意捆绑魔方。
        这个功能还可以用在Jumble魔方的解绑。例如子母魔方二代,子三母四子母魔方,九芯魔方等。

作者: hubo5563    时间: 2024-4-14 10:46:55

自定切割序列说明
作者: hubo5563    时间: 2024-4-14 10:53:03

子母魔方的设计
作者: hubo5563    时间: 2024-4-14 10:59:15

捆绑魔方的设计和百慕大魔方的设计
作者: hubo5563    时间: 2024-4-14 11:04:26

空心魔方和缺块魔方的设计
作者: hubo5563    时间: 2024-4-14 11:11:44

我设计的集合体的设计
作者: hubo5563    时间: 2024-4-14 11:17:23

保留一楼备用,下面大家可以发表回复帖子了。
作者: 牧马姑娘    时间: 2024-4-14 17:03:41

学习了,谢谢

作者: Fenz    时间: 2024-4-14 22:39:26

我是没折腾魔方好几年了,回过头回来这里,发现胡老师还在活跃,而且软件也越来越强大了。支持。
作者: hubo5563    时间: 2024-4-15 08:14:45

Fenz 发表于 2024-4-14 22:39
我是没折腾魔方好几年了,回过头回来这里,发现胡老师还在活跃,而且软件也越来越强大了。支持。

你做的在线魔方很好,很有特点。尤其是跨平台都能用,在手机上也能玩你设计的魔方,很好。采用的新技术我还没接触过呢。有心学一点新东西,但精力不够了。

作者: Fenz    时间: 2024-4-15 22:41:36

hubo5563 发表于 2024-4-15 08:14
你做的在线魔方很好,很有特点。尤其是跨平台都能用,在手机上也能玩你设计的魔方,很好。采用的新技术我 ...

我是借了新技术的东风,但是代码基础还远远不够,还不能像胡老师的作品一样实现强大的自定义功能,开发魔方也还太慢。
最近琢磨着从代码底层重构一遍,做好面向对象和分层(当时写这个程序时我还缺乏这些程序设计意识)。而且我最近开始继续更新魔方了,还搞定了 little chop 这个硬骨头。胡老师有空可以玩玩。

胡老师如果想做跨平台的魔方程序,可以尝试了解一下 three.js: https://threejs.org 封装得很棒,把难点技术细节都封装了,我们只要处理些 polygon、xyz、矩阵、四元数之类的就行。而且老师有多年的 java 功底,javascript 也只会比 java 简单。还是可以试试的。
作者: hubo5563    时间: 2024-4-20 16:57:02

Fenz 发表于 2024-4-15 22:41
我是借了新技术的东风,但是代码基础还远远不够,还不能像胡老师的作品一样实现强大的自定义功能,开发魔 ...

我买了一本Three,js开发指南,还没看呢。
作者: 谢老师    时间: 2024-4-21 13:16:42

非常的强大……
作者: Fenz    时间: 2024-4-29 11:06:03

hubo5563 发表于 2024-4-20 16:57
我买了一本Three,js开发指南,还没看呢。

网上也有很多好资料,比如官方出的这个
https://discoverthreejs.com/book/

期待胡老师的新作品。

我也得加油,要去实现像您这种强大的自定义功能
作者: hubo5563    时间: 2024-4-29 14:14:00

本帖最后由 hubo5563 于 2024-4-29 14:17 编辑
Fenz 发表于 2024-4-29 11:06
网上也有很多好资料,比如官方出的这个
https://discoverthreejs.com/book/


我还没有系统学习呢,现在主要完善一下编好的程序。完成它的说明。
我浏览了一下网站,不错。
你的拓扑魔方实现的很好。
作者: Fenz    时间: 2024-5-2 09:54:37

hubo5563 发表于 2024-4-29 14:14
我还没有系统学习呢,现在主要完善一下编好的程序。完成它的说明。
我浏览了一下网站,不错。
你的拓 ...

我的程序现在一堆冗余代码,弄新魔方就只能复制一些代码,再把关键的坐标和矩阵改改。然后还得每个都花不少精力调错。还处于比较原始的状态。新的思路有了,但工程量不小,所以只能一边在老架子上颤颤巍巍加魔方,一边去搞新框架。
我也是精力不够分配,一方面还有好几个魔方有了想法还没去实现;另一方面,每个百慕大有很多种面的组合,我都只取了其一二,还要扩充;还有做了键盘操控,也还只应用在二阶三阶立方体。四处都是待完善的东西。

胡老师的程序比我的庞大不少,完善起来也一定耗费精力不少吧。而且功能如此强大了,写说明也工作量不小。
作者: hubo5563    时间: 2024-5-2 13:01:15

Fenz 发表于 2024-5-2 09:54
我的程序现在一堆冗余代码,弄新魔方就只能复制一些代码,再把关键的坐标和矩阵改改。然后还得每个都花不 ...

是的,我今天还修改了一些。原来的魔方程序最多6000行,一般都是3000行代码,这个已经达到16700多行了。
还有一处知道有缺陷,还没修改呢。就是原来程序都假定一个面最少3边,所以遇到两个边的面处理不了,就出错了。要想改动能支持2个边的面,就要改动很多程序,一直也没敢动呢,太复杂。这就导致像铜币魔方就做不出来。
作者: Fenz    时间: 2024-5-4 22:54:56

hubo5563 发表于 2024-5-2 13:01
是的,我今天还修改了一些。原来的魔方程序最多6000行,一般都是3000行代码,这个已经达到16700多行了。
...

两条弧线组成的面吗,是不是可以故意切一刀,做成两个面,这样每个面就有三条边了。或者做成三条边,其中一条短到肉眼不可查。
作者: hubo5563    时间: 2024-5-5 07:58:12

Fenz 发表于 2024-5-4 22:54
两条弧线组成的面吗,是不是可以故意切一刀,做成两个面,这样每个面就有三条边了。或者做成三条边,其中 ...

是的,这样的面。不是简单的。这个我也是这样考虑的,关键是还有其它牵涉的问题,一下也解决不了。例如,一刀切下,正常情况是一分为二,里面一块外面一块,球面切割不是凸体,有可能一刀切下里面一块,外面几块的情况,多边形面也有这样的情况,怎样组织这些碎片,哪些属于那块立体,都需要算法判断。再说,原来的数据结构不支持这些,需要修改数据结构。编程量还不少呢。不是改动少量代码能解决的。我想统一把这些问题都解决。已经编了一些程序了,不想再在这里修修补补做工作了。
作者: Fenz    时间: 2024-5-5 14:40:11

hubo5563 发表于 2024-5-5 07:58
是的,这样的面。不是简单的。这个我也是这样考虑的,关键是还有其它牵涉的问题,一下也解决不了。例如, ...

也是,有时候老程序作为积累经验之用,新起炉灶在源头上避免问题也不错。我也有这么个规划,不过工程量大,需要慢慢来。不过许多想法等不及,还是在老架构上先弄着。我这次又更新了几个有意思的魔方。百慕大的 Emax 最高到 7.5 了。




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