Iphone 如何通过滑动手势确定三维对象的旋转角度?

Iphone 如何通过滑动手势确定三维对象的旋转角度?,iphone,ios,opengl-es,touch,opengl-es-2.0,Iphone,Ios,Opengl Es,Touch,Opengl Es 2.0,我正在创建一个OpenGL ES 2.0应用程序。我希望实现触摸控制,以便在屏幕上执行手势(如滑动)时旋转3D对象 我有旋转相机和旋转物体的功能。我的问题是我需要知道什么旋转角度,在X和Y中,必须传递到旋转函数中 如果用户在特定方向上执行滑动,我如何计算X和Y方向上的角度,以便将它们传递给旋转功能?有几种方法可以实现将触摸移动转化为三维对象旋转的任务:设置轨迹球,或者使用缩放的像素位移映射到旋转 我在中执行后一种操作,其中我执行立方体旋转,以响应手指在X和Y方向的位移。在这种情况下,我使用触摸点

我正在创建一个OpenGL ES 2.0应用程序。我希望实现触摸控制,以便在屏幕上执行手势(如滑动)时旋转3D对象

我有旋转相机和旋转物体的功能。我的问题是我需要知道什么旋转角度,在X和Y中,必须传递到旋转函数中


如果用户在特定方向上执行滑动,我如何计算X和Y方向上的角度,以便将它们传递给旋转功能?

有几种方法可以实现将触摸移动转化为三维对象旋转的任务:设置轨迹球,或者使用缩放的像素位移映射到旋转

我在中执行后一种操作,其中我执行立方体旋转,以响应手指在X和Y方向的位移。在这种情况下,我使用触摸点坐标差直接映射到旋转,使用如下代码:

    GLfloat totalRotation = sqrt(xRotation*xRotation + yRotation*yRotation);

    CATransform3D temporaryMatrix = CATransform3DRotate(currentCalculatedMatrix, totalRotation * M_PI / 180.0, 
                                                        ((xRotation/totalRotation) * currentCalculatedMatrix.m12 + (yRotation/totalRotation) * currentCalculatedMatrix.m11),
                                                        ((xRotation/totalRotation) * currentCalculatedMatrix.m22 + (yRotation/totalRotation) * currentCalculatedMatrix.m21),
                                                        ((xRotation/totalRotation) * currentCalculatedMatrix.m32 + (yRotation/totalRotation) * currentCalculatedMatrix.m31));
这大致将屏幕上一点的移动视为一度,这似乎很适合我的需要。可以将其放大或缩小以调整旋转的灵敏度

我在这里使用的CATTransform3D通过辅助函数转换为OpenGL模型视图矩阵,并作为矩阵统一传递到我的着色器中


轨迹球是处理这种旋转的另一种方式,Bill Dudney在他的核心动画示例中提供了一个例子。您可以提升他的轨迹球实现,并执行与我在应用程序中相同的CATTransform3D转换,以从该代码生成适当的模型视图矩阵。

如果您阅读向下箭头上的工具提示,您可能会看到为什么有人否决了它。这不是对你声誉的反映,而是对你提出问题的研究质量和努力的反馈。哦!谢谢你的信息。我应该更清楚地回答这个问题。不管怎样,下面提供的答案对我很有帮助。我会确保从现在开始发布更具体的细节。你看到这个可能有点晚,但如果下面的答案有帮助,你应该点击“接受”这个答案。