2011-10-10 67 views
0

我正在尝试为我的游戏应用添加弹射运动。当用户触摸图像视图时,它会根据imageview的运动计算初始角度。但在logcat中,我看到这些角度值是消极的。任何人都可以解释为什么这样。我想用r来设置0到90度之间的角度值。负角度值android

在下面找到我的代码,用于计算角: -

float dy = motion.getY()-mImage.getPivotY(); 
float dx = motion.getX()-mImage.getPivotX(); 

double r = Math.atan2(dy, dx); 

int angle = (int)Math.toDegrees(r); 

其中运动类型MotionEvent的。

+0

这不是与标准数学和屏幕之间的不同坐标模型有关吗? –

回答

1

垂直屏幕坐标,例如由motion.getY()mImage.getPivotY()返回的垂直屏幕坐标将原点定义为从上到下正向移动的屏幕顶部。

标准数学约定与此相反。你需要将这个因素考虑进你的等式中。在这种情况下通过使用-dy

通过采取原始的公式的解释道:

浮动DY = motion.getY() - mImage.getPivotY();

并调整屏幕坐标正则坐标

浮子DY2 =(Screen.getHeight() - motion.getY()) - (Screen.getHeight() - mImage.getPivotY() );

其中给出:

浮子DY2 = mImage.getPivotY() - motion.getY()

因此:

浮子DY2 = -dy

这就是为什么y你看到一个负值。

+0

谢谢!为您的宝贵解释! – Ruchira