我的OpenGL视图中有一个立方体,当我触摸立方体外时,我可以旋转它。现在我可以检测到我触摸的立方体的哪一侧,现在我正试图找出触摸运动的哪一侧。因此,如果我触摸顶部,则运动可以朝向立方体的左侧,右侧,前侧或后侧。这样做时,立方体的方向可以是任何东西。
所以在弄清楚之后我会让它围绕正确的轴旋转。
我只是想知道如何实现它。
编辑: 这是我正在尝试做的一个粗略的例子。对不起,我不好解释。
绿色的东西是一个手指触摸红色的一面。箭头显示手指移动的方向。由于它向蓝色侧(2)移动,它应该返回2.如果它向绿色侧(1)移动,它将返回1,依此类推。
答案 0 :(得分:3)
这是一种方法:
当您向上滑动并抬起手指时,屏幕空间中会出现两个2D点:ptBegin和ptEnd。将它们转换为3D(你需要做一个相当于gluUnproject来获得3D坐标),你将在立方体的坐标系中获得3D坐标ptBegin3D和ptEnd3D。
计算向量D = ptEnd3D - ptBegin3D。
现在,如果您使用立方体面法线(0,0,1),(1,0,0)等进行上述点积,您将从值中知道您正朝着哪个立方体面移动