获得2D地图的瓦片的直角坐标



我在JPanel上绘制了一个2D瓦片图(由25个瓦片组成,每个瓦片30*30像素(。如何获取每个瓦片的直角坐标?

"基本"方法可能是做一些类似。。。

int tileWidth = 30;
int tileHeight = 30;
// Coordinates in the physical world, like a mouse point for example...
int x = ...;
int y = ...;
int col = (int)Math.floor(x / (double)tileWidth);
int row = (int)Math.floor(y / (double)tileHeight);

这将返回基于物理x/y坐标的每个瓦片的虚拟网格x/y位置

然后你可以使用类似。。。

 int tileX = col * tileWidth;
 int tileY = row * tileHeight;

瓦片矩形然后变为tileX x tileY x tileWidth x tileHeight

现在,当这起作用的时候。一个更好的解决方案是使用类似java.awt.Rectangle的东西,并维护其中的List,每个都代表现实世界中的单个瓦片。

然后,您可以使用Rectangle#contains来确定给定的磁贴是否包含您要查找的坐标。

这样做的另一个好处是,Rectangle可以使用Graphics2D#draw和/或Graphics2D#fill 打印

相关内容

  • 没有找到相关文章

最新更新