1

我的 OpenGL 视图中有一个立方体,当我触摸立方体外部时可以旋转它。现在我可以检测到我触摸了立方体的哪一侧,现在我正试图找出触摸运动的哪一侧。因此,如果我触摸顶部,运动可以向立方体的左侧、右侧、正面或背面移动。执行此操作时,立方体的方向可以是任何东西。

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

我只需要知道如何实现这一点。

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

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

4

1 回答 1

3

这是一种方法:

当您向上滑动并抬起手指时,您会在屏幕空间中获得两个 2D 点:ptBegin 和 ptEnd。将这些转换为 3D(您需要执行 gluUnproject 的等效操作才能获得 3D 坐标),您将获得立方体坐标系中的 3D 坐标 ptBegin3D 和 ptEnd3D。

计算向量 D = ptEnd3D - ptBegin3D。

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

于 2012-08-09T02:02:41.800 回答