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

Java:当已知两个坐标对时,将坐标从一个系统转换为另一个系统,java,android,math,Java,Android,Math,我目前正在为android开发一个应用程序,用户可以触摸地图上的某个特定位置,并获取该位置的信息。地图是视频游戏地图的自顶向下视图,但这在这里并不重要。基本上,我知道左上角和右下角的视频游戏坐标,我需要知道用户触摸的地方的视频游戏坐标 例如,如果用户触摸显示地图上的点(500500),我需要视频游戏地图在此位置的坐标 这里的问题是,我用于地图的API在一个坐标系中提供了接触坐标,该坐标系从左上角开始,以(0,0)为单位,从右下角开始递增。电子游戏使用更为正常的坐标系,顶部(y)和右侧(x)的数字

我目前正在为android开发一个应用程序,用户可以触摸地图上的某个特定位置,并获取该位置的信息。地图是视频游戏地图的自顶向下视图,但这在这里并不重要。基本上,我知道左上角和右下角的视频游戏坐标,我需要知道用户触摸的地方的视频游戏坐标

例如,如果用户触摸显示地图上的点(500500),我需要视频游戏地图在此位置的坐标

这里的问题是,我用于地图的API在一个坐标系中提供了接触坐标,该坐标系从左上角开始,以(0,0)为单位,从右下角开始递增。电子游戏使用更为正常的坐标系,顶部(y)和右侧(x)的数字增加,底部(y)和左侧(x)的数字减少

你知道如何将地图API中的坐标转换成视频游戏坐标吗


让我们来看看你的例子:

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

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

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

如果我们尝试映射这些:2416/1000=2.416和1872/1000=1.872。所以如果安卓y坐标改变1,VGC y坐标将改变2.416

假设用户在android坐标系下触摸(100150)。这意味着距离左上角100度和150度。然后将这些转换为VGC更改,(100*2.416150*1.872)大致等于(241281)

现在,如果左上角坐标为(24031212),则VGC坐标中的接地坐标为(2403-2411212+281)


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

虽然这个问题与代码相关(即使您没有显示代码),但您可能会得到更清晰的答案。