如何找到魔方的方向?

我试图用three.js在webgl中制作一个rubik cube游戏(你可以在这里试试)。 我在巫婆轴上检测到问题时,必须根据魔方的旋转来旋转我的魔方。 例如,如果立方体处于原始位置/旋转,如果我想从左到右旋转左层,我必须在Y轴上旋转。 但是我在Y轴上旋转了90度的立方体,我不得不在Z轴上旋转它以将我的左层从下往上旋转。

我试图找到一种方法根据立方体的方向获得正确的旋转轴。 目前,我检查魔方的旋转矩阵的轴矢量与矢量(0,1,0)最平行,如果我想从前向下移动一层。 但它不适用于这样的边缘情况:

立方体方向

我想有一些简单的方法可以做到这一点,但我在矩阵和数学方面不够好:)


一个AxisHelper可以显示你可以确定方向的场景的AxisHelper

var axishelper = new THREE.AxisHelper(40);
axishelper.position.y = 300;
scene.add(axishelper);

您还可以log您的魔方,并使用Chrome开发人员工具或Firebug检查positionrotation属性。


您可以将每个立方体的方向存储在其自己的4x4矩阵(即“模型”矩阵)中,告诉您如何从立方体的本地坐标到世界坐标。 现在,因为您想要将立方体绕世界坐标旋转到一个轴(即矢量),您需要将该轴转换为立方体坐标。 这正是模型矩阵的倒数产生的结果。

链接地址: http://www.djcxy.com/p/81809.html

上一篇: How to find orientation of rubik cube?

下一篇: Rotation Matrix from direction vector (Forward, Up, Right)