Java:当已知2个坐标对时,将坐标从一个系统转换为另一个系统

时间:2016-04-09 11:48:12

标签: java android math

我目前正在为Android创建一个应用程序,用户可以触摸地图上的特定位置并获取有关该地点的信息。地图是视频游戏地图的俯视图,但这并不重要。基本上,我知道左上角和右下角的视频游戏坐标,我需要知道用户触摸的地方的视频游戏坐标。

如果用户触摸了显示地图上的点(500,500),我想在此位置获得视频游戏地图的坐标。

这里的问题是我用于地图的API给出了坐标系中的触摸坐标,从左上角开始用(0,0)和增加数字到右下角。视频游戏使用更正常的坐标系统,其中数字越来越高(y)和右(x),数字越来越少(y)和左(x)。

您是否知道如何将地图API中的坐标转换为视频游戏坐标?

1 个答案:

答案 0 :(得分:0)

让我们来看看你的例子:

我假设你在解释中使用了符号(y,x),我将在这个答案中使用相同的符号。(我相信你应该使用(x,y))

左上方的VGC(视频游戏坐标)是(2403,1212),右下方的VGC是(-13,3084)。因此,在当前情况下,在VGC中存在2403 - ( - 13)= 2416可能的y和3084-1212 = 1872可能的x坐标。

对于Android坐标系,有1000个可能的x和1000个可能的y坐标。

如果我们尝试映射那些:2416/1000 = 2.416和1872/1000 = 1.872。因此,如果Android y坐标更改为1,则VGC y坐标将更改为2.416。

假设用户在android坐标中触摸(100,150)。这意味着距离左上角100英尺和150英尺。然后将它们转换为VGC变化,(100 * 2.416,150 * 1.872)大致等于(241,281)。

现在,如果左上角坐标为(2403,1212),则VGC坐标中的着陆将为(2403-241,1212 + 281)。

在代码中生成左上角和右下角的VGC变量,并使用相同的逻辑进行计算。