当前位置: 首页 > 知识库问答 >
问题:

Android旋转后获得新坐标

宋新知
2023-03-14

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

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是屏幕旋转的角度。

有人知道如何解决这个问题吗?我已经浏览了很多文章,维基,wolframalpha分类,但运气不好。也许我只是需要一些链接来了解这个问题。

谢谢

共有2个答案

韩景胜
2023-03-14

好的,找到解决方案。

首先,将角度转换成弧度很重要

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

仅此而已,这个解决方案是正确的

曹镜
2023-03-14

使用旋转矩阵。

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
 类似资料:
  • 如何获得旋转矩形的角坐标(以矩形为中心)? 我已经尝试了以下链接中的所有解决方案,但似乎没有任何运气。 将一个点绕另一个点旋转(2D) 找到给定中心点和旋转的旋转矩形的角 https://game dev . stack exchange . com/questions/86755/how-to-calculate-corner-positions-marks-of-a-rotated-tilte

  • 给定的是一个旋转的矩形,该矩形内接到另一个矩形中<两个矩形都有自己的坐标系 在该区域中 我对变换矩阵的尝试(setRotate() 如何计算P点相对于外矩形的位置? 提前感谢!

  • 我正在做一个简单的模拟,并且在寻找一个旋转的、大小怪异的ImageView节点的X和Y坐标时遇到了很多麻烦。(蓝色的部分是前面) 目标是在旋转后找出相对于imageView指向的方向的XY坐标。我可以找到imageView相对于其起始位置的角度,但我不知道如何获得imageView相对于该角度的XY坐标。从那以后。setRotate(angle)方法不会更改imageView的X和Y位置,我应该如

  • 我有一个具有移动、旋转和缩放功能的,我有所有的四角位置,我想得到其中一些假想点的位置,以便可以随着缩放和移动保持不变。请看看下面的图片,以便更好地理解它。

  • 我有一个聊天应用程序,可以打开一个到服务器的Websocket。该应用程序有2个模块- chat sdk:处理连接和来回消息传递。 用户界面:处理适配器和视图 聊天UI位于活动托管的片段上。 一切都很好,但当我决定在设备旋转上使用持久性时,我遇到了问题。当我旋转设备时,websocket重新连接(这是正常的),活动被重新创建,片段也被重新创建。 经过设备旋转和一些调试,我看到我的消息列表被正确填充