Android OpenGL在立方体上的触摸方向

时间:2012-08-08 23:51:17

标签: android opengl-es touch

我的OpenGL视图中有一个立方体,当我触摸立方体外时,我可以旋转它。现在我可以检测到我触摸的立方体的哪一侧,现在我正试图找出触摸运动的哪一侧。因此,如果我触摸顶部,则运动可以朝向立方体的左侧,右侧,前侧或后侧。这样做时,立方体的方向可以是任何东西。

所以在弄清楚之后我会让它围绕正确的轴旋转。

我只是想知道如何实现它。

编辑: 这是我正在尝试做的一个粗略的例子。对不起,我不好解释。

绿色的东西是一个手指触摸红色的一面。箭头显示手指移动的方向。由于它向蓝色侧(2)移动,它应该返回2.如果它向绿色侧(1)移动,它将返回1,依此类推。

1 个答案:

答案 0 :(得分:3)

这是一种方法:

当您向上滑动并抬起手指时,屏幕空间中会出现两个2D点:ptBegin和ptEnd。将它们转换为3D(你需要做一个相当于gluUnproject来获得3D坐标),你将在立方体的坐标系中获得3D坐标ptBegin3D和ptEnd3D。

计算向量D = ptEnd3D - ptBegin3D。

现在,如果您使用立方体面法线(0,0,1),(1,0,0)等进行上述点积,您将从值中知道您正朝着哪个立方体面移动