如何找到魔方的方向?
我试图用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检查position
和rotation
属性。
您可以将每个立方体的方向存储在其自己的4x4矩阵(即“模型”矩阵)中,告诉您如何从立方体的本地坐标到世界坐标。 现在,因为您想要将立方体绕世界坐标旋转到一个轴(即矢量),您需要将该轴转换为立方体坐标。 这正是模型矩阵的倒数产生的结果。
链接地址: http://www.djcxy.com/p/81809.html上一篇: How to find orientation of rubik cube?
下一篇: Rotation Matrix from direction vector (Forward, Up, Right)