触摸旋转 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值