在比例地图上定位位置
Position Locations on a Scaled Map
我有来自地图的数据,其中以下位置被视为地图的边界。
- 考虑左上角 (92, 49)
- 左下角 (-93, 49)
- 右上角 (92, -25),
- 右下角 (-93, -25)
我在这些浮点值之间有很多坐标,我想将它们定位在地图上以供查看。
游戏地图本身实际上只有 185 宽和 74 宽,但我已将地图缩放到 1024 宽和 786 高以获得更好的可见性。
我该如何正确绘制此地图上的点,例如 -52.6、12.55 的 Java JFrame,其中左上角被视为 0,0?比如,我如何缩放它才能在放大后的地图中找到合适的位置来绘制地点?
我认为您的新高度 786 是一个打字错误,应该是 768,并且旧地图的角点坐标很可能被错误标记。
您需要创建一个映射函数。
mappedX = (x - oldTopX) * (newWidth / oldWidth);
mappedY = (oldTopY - y) * (newHeight / oldHeight);
所以对于你的 x 坐标 -52.6,新映射的 x 点是 (-52.6 - -93) * (1024 / 185) 等于 223.6
新映射的 y 值是 (49 - 12.55) / (786 / 74) = 387.2
维基百科有一个很好的 2D 计算机图形页面,涵盖了您正在寻找的内容:https://en.wikipedia.org/wiki/2D_computer_graphics
我有来自地图的数据,其中以下位置被视为地图的边界。
- 考虑左上角 (92, 49)
- 左下角 (-93, 49)
- 右上角 (92, -25),
- 右下角 (-93, -25)
我在这些浮点值之间有很多坐标,我想将它们定位在地图上以供查看。
游戏地图本身实际上只有 185 宽和 74 宽,但我已将地图缩放到 1024 宽和 786 高以获得更好的可见性。
我该如何正确绘制此地图上的点,例如 -52.6、12.55 的 Java JFrame,其中左上角被视为 0,0?比如,我如何缩放它才能在放大后的地图中找到合适的位置来绘制地点?
我认为您的新高度 786 是一个打字错误,应该是 768,并且旧地图的角点坐标很可能被错误标记。
您需要创建一个映射函数。
mappedX = (x - oldTopX) * (newWidth / oldWidth);
mappedY = (oldTopY - y) * (newHeight / oldHeight);
所以对于你的 x 坐标 -52.6,新映射的 x 点是 (-52.6 - -93) * (1024 / 185) 等于 223.6
新映射的 y 值是 (49 - 12.55) / (786 / 74) = 387.2
维基百科有一个很好的 2D 计算机图形页面,涵盖了您正在寻找的内容:https://en.wikipedia.org/wiki/2D_computer_graphics