1

可能重复:
具有 OpenGL 和触摸屏功能的视觉正确旋转

我有一个立方体,我想在触摸时移动手指的方向旋转。我确实知道如何获得当前的触摸移动并使用这些值来旋转立方体,但这不是我想要的。

这是我目前正在使用的:

    case MotionEvent.ACTION_DOWN:
        mx = me.getX();
        my = me.getY();
        break;
    case MotionEvent.ACTION_MOVE:
        x_diff = mx - me.getX();
        y_diff = my - me.getY();
        mx = me.getX();
        my = me.getY();
        this.rot_x -= y_diff;
        this.rot_y -= x_diff;
        break;

回转:

gl.glRotatef(rot_x, 1, 0, 0);
gl.glRotatef(rot_y, 0, 1, 0);
gl.glRotatef(rot_z, 0, 0, 1);
4

2 回答 2

3

我找到了解决方案。正确的做法是实施 ArcBall 旋转。

NeHe OpenGL 教程: http: //nehe.gamedev.net/tutorial/arcball_rotation/19003/
Java 端口:http ://www.java-tips.org/other-api-tips/jogl/arcball-rotation-nehe-tutorial -jogl-port.html

于 2012-07-15T16:02:08.067 回答
0

您没有指定您对当前实现不满意的是什么,但一个想法可能是使用 VelocityTracker 并根据触摸速度为您的立方体分配 3 维速度,然后制作立方体当您停止移动手指时,缓慢减速回到静止状态。它会给交互带来更自然的感觉。

于 2012-07-14T17:36:19.973 回答