我正在开发简单的游戏。我有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类别,但没有运气。也许我只是需要一些链接来更好地理解问题。
谢谢
答案 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)
好的,找到解决方案。
首先,将从角度转换为弧度
非常重要然后我个人需要否定那个弧度值。
总而言之,这个解决方案是正确的