如何找到rubik立方体的方向?

时间:2012-12-26 16:45:21

标签: matrix orientation webgl three.js rubiks-cube

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

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

cube orientation

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

2 个答案:

答案 0 :(得分:0)

AxisHelper可以显示您可以确定方向的场景的混音。

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

您还可以log您的多维数据集,并使用Chrome开发者工具或Firebug检查positionrotation属性。

答案 1 :(得分:0)

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