我有一张地图的数据,其中以下位置被视为地图的边界。


认为左上角(92,49)
左下(-93,49)
右上(92,-25),
右下(-93,-25)


在浮点值之间我有很多坐标,我想将它们放置在地图上以进行查看。

游戏地图本身实际上的长度仅为185,长度为74,但是我将地图缩放为1024,高度为786,以提高可视性。

如何在Java JFrame的地图上正确绘制例如地图上的-52.6,12.55的点,将左上角视为0,0?就像,我将如何缩放它以在放大的地图中获得正确的位置来绘制点?

最佳答案

我认为您的新高度786是错字,应该是768,而旧地图的角点坐标很可能贴错了标签。

您需要创建一个映射函数。

mappedX = (x - oldTopX) * (newWidth / oldWidth);
mappedY = (oldTopY - y) * (newHeight / oldHeight);


因此,对于-52.6的x坐标,新映射的x点为(-52.6--93)*(1024/185),等于223.6

新映射的y值为(49-12.55)/(786/74)= 387.2

Wikipedia有一个不错的2D计算机图形页面,其中包含您要查找的内容:https://en.wikipedia.org/wiki/2D_computer_graphics

10-08 09:17