【问题标题】:Android get new coordinates after rotationAndroid旋转后获取新坐标
【发布时间】:2014-07-05 05:16:13
【问题描述】:

我正在开发简单的游戏。我有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);

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

有人知道如何解决这个问题吗,我已经浏览了很多文章、wiki、wolframalpha 类别,但不走运。也许我只需要一些链接来更多地了解问题。

谢谢

【问题讨论】:

    标签: java android math


    【解决方案1】:

    您使用旋转矩阵。

    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
    

    【讨论】:

      【解决方案2】:

      好的,找到解决办法。

      首先将从角度转换为弧度

      很重要

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

      就是这样,这个解决方案是正确的

      【讨论】:

        猜你喜欢
        • 2010-10-09
        • 1970-01-01
        • 2011-12-09
        • 2013-05-10
        • 1970-01-01
        • 2021-08-12
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多