一段时间刚毕业的时候,想写┅个可以玩的魔方3D模型隔了很久都没有怎么精力去写,总以为这是要消耗挺多时间精力去年一段时间,在周末时间还是难耐的想去实現自己的想法最后用java swing写了一个简单的模型。
当然现在已经是写好了完事后,只是放在硬盘上一直都没有再去动应为想安装个linux系统,這边准备格式化硬盘就想着把他放到网上去,因为太懒这边只是附上简单的东西。
当时的想法整个模型的立体旋转,子模块的旋转然后磁性粘合。
这边通过点击来进行整体的模块和子模块旋转的切换旋转是一直按住鼠标左键滑动实现。
子模块的旋转先单击整个模块,将鼠标移动到制定要滑动的子模块然后程序会根据你滑动的方向判断要旋转的子模块。
如果再单击鼠标又切换到整个模块的旋轉,尽量可以人性化的去玩弄魔方:
最初的想法都是一样的创建子模块,组建成一个整体
代码没有分级,都是放在同一个包下面:
其Φ的思想是一个魔方WholeCubeModel.java对象,有27块小方块(Cube.java)组成LittleSquare.java就是小方块组装对象,每个小方块又有6个面组成没个面抽象出来成SubFace.java,这边Axis3D.java是控件坐标點对象。RoateModel.java模型主要是处理魔方的一些旋转和自动磁性粘合操作,CubeComparator.java是一个比较器,为了魔方旋转的时候旋转的人性化和吻合人类视觉感官对畫出的模型组建进行排序
//子立方块的边长大小 //每次更新四个定点的坐标时候,记得更新多边形的信息 //如果多边形的长度大于4的话,我們就重置