触摸旋转 Android,Opengl es Android 3D 手指触控旋转object
明確原理:
先確定一下OpenGL里面的坐標為:x軸正方向為屏幕向右,y軸正方向為屏幕向上,z軸正方向為屏幕由里向外。
當手指在X軸方向上移動時,畫面中物體應繞Y軸方向旋轉,則為gl.glRotatef(Angle,0,1,0);
當手指在Y軸方向上移動時,畫面中物體應繞X軸方向旋轉,則為gl.glRotatef(Angle,1,0,0);
除此之外,android中屏幕響應手勢移動所應用的function為:onTouchEvent.
下面展示代碼:
private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
renderer = new NewRender();
public booleanonTouchEvent(MotionEvent e) {switch(e.getAction()) {caseMotionEvent.ACTION_DOWN:
ypos=e.getY();
xpos=e.getX();return true;caseMotionEvent.ACTION_MOVE:float dy = e.getY() - ypos;//計算觸控筆Y位移
float dx = e.getX() - xpos;//計算觸控筆X位移
renderer.center.mAngleX = dy * TOUCH_SCALE_FACTOR;//設置沿x軸旋轉角度
renderer.center.mAngleY = dx * TOUCH_SCALE_FACTOR;//設置沿y軸旋轉角度
requestRender();//重繪畫面
return true;
}return true;
}
NewRender()是我繼承Renderer創建的一個class.
renderer.center.mAngleX = dy * TOUCH_SCALE_FACTOR;//設置沿x軸旋轉角度
renderer.center.mAngleY = dx * TOUCH_SCALE_FACTOR;//設置沿y軸旋轉角度
center.mAngleX 和 center.mAngleY是指我的Object(center)的旋轉角度。
在center中,我的旋轉角度設置為:
gl.glRotatef(mAngleX, 1, 0, 0);//旋轉
gl.glRotatef(mAngleY, 0, 1, 0);
gl.glRotatef(mAngleZ,0, 0, 1);
原文:http://www.cnblogs.com/lws520/p/5997030.html
總結
以上是生活随笔為你收集整理的触摸旋转 Android,Opengl es Android 3D 手指触控旋转object的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flash如何制作漂亮的三维水纹特效字体
- 下一篇: android产品设计,Android产