如何让魔方的每个face能自如旋转呢?

首先必须弄清魔方的face旋转物理。如果能找到物理魔方,亲自动手实验一下,就能发现每个face的9个小cube在围绕中间的cube公转90度到同时,每个小cube同时也在自转90度;从这点看,这和地球公转太阳同时自转蛮类似。(后注后:这个说法是错误的)

由于程序提供了魔方绕x轴和y轴翻转的功能,那么每个face公转轴也是在变的,在face上的小cube的自转轴也是在变的,如何刻画这两个轴,显然是做旋转动画的要点所在;目前,还没有找到合适办法,应当作为项目长期目标。(后注后:这个说法是错误的,其实就是一个side在公转)

抛去上述难点不管,可以用一个trick来绕过它:旋转一个face,看成该face的小cube不动,仅仅是cube的颜色发生了转变,这个转变就是new cube序列旋转90度后的face color替换了old cube序列的face color。而要计算出这两个cube序列,其实是很容易的,虽然采取这个workaround并无动画。

绕过了这个难点,接下来的问题是如何识别旋转的种类这个问题:一个9个face,每个face有两种旋转方向:顺时针和逆时针。我们面对的问题是:

  • 当触摸屏幕时,如何判断是在哪个face上
  • 当移动手指时,如何判断出事顺逆时针方向

解决了这两个问题,我们就可以拿到一个初步的魔方产品了。

Advertisements