Android在轮换后获取新坐标

时间:2014-07-05 05:16:14

标签: java android math

我正在开发简单的游戏。我有cca。 50个矩形排列成10列5行。把它们以某种方式放在整个屏幕上都没有问题。但是当我旋转画布时,让我们说约7°角,旧坐标不适合坐标的新位置。在构造函数中我已经创建并定义了该矩形的位置,在onDraw方法中,我正在绘制这个矩形(当然有旋转)芽我需要一些与当前矩形相撞的方法。我尝试使用这样的东西(我围绕屏幕的中心点旋转)

int newx = (int) ((x * Math.cos(ROTATE_ANGLE) - (y  * Math.sin(ROTATE_ANGLE))) + width / 2);                
int newy = (int) ((y * Math.cos(ROTATE_ANGLE) + (x  * Math.sin(ROTATE_ANGLE))) + height / 2);

但它不起作用(因为它给了我绝对错误的新坐标)。 x y 是我试图以旋转方式计算新位置的触摸坐标。 ROTATE_ANGLE 是屏幕的旋转角度。

有没有人知道如何解决这个问题,我已经完成了许多文章,wiki,wolframalpha类别,但没有运气。也许我只是需要一些链接来更好地理解问题。

谢谢

2 个答案:

答案 0 :(得分:2)

您使用旋转矩阵。

Matrix mat = new Matrix();  //mat is identity
mat.postRotate(ROTATE_ANGLE);  //mat is a rotation matrix of ROTATE_ANGLE degrees
float point[] = {10.0, 20.0};  //create a new float array representing the point (10, 20)
mat.mapPoints(point);  //rotate the point by the requested amount

答案 1 :(得分:0)

好的,找到解决方案。

首先,将从角度转换为弧度

非常重要

然后我个人需要否定那个弧度值。

总而言之,这个解决方案是正确的