游戏xy到图像(像素)xy的公式

时间:2014-11-25 10:27:28

标签: math coordinates

这可能很简单,但我无法在搜索引擎上找到我需要的东西......(就像他们以前更了解我在寻找的东西一样)

我需要将游戏中的坐标转换为"坐标"在图像上,我可以添加...说出图像上的一个像素来表示游戏中坐标的位置。

图像是地图,大小为2384x2044(宽x高)。 游戏中的0,0 =游戏中地图的中间位置,这也是图像的中间位置。 因此,很容易找到xy在图像中间打印一个像素: 2384:2 = 1192和2044:2 = 1022,因此图像中游戏中0,0的xy为1192,1022。

现在,例如,如果我向上移动并稍微向左移动,则坐标变为:-141.56,1108.11 - 如何计算图像的正确xy?

图片:http://i.imgur.com/yfiwfO7.png?1

1 个答案:

答案 0 :(得分:0)

总结一下,你想要在两个轴上缩放-3000到+3000的游戏坐标,并将它们偏移以使它们在你的图像上居中;在这种情况下,您想要的计算是

pixel_x = 1192 + (game_x * 1192 / 3000.0)
pixel_y = 1022 - (game_y * 1022 / 3000.0)

注意y线上的减号以反转偏移的方向。你的游戏坐标是浮点数,所以我通过添加.0来制作3000s浮点数 - 你没说出你使用的语言,所以这可能是也可能不是正确的语法。

但是,您可能应该避免将常量放入此中,以防您想要更改播放区域或图像的大小。

会更好
  • 在程序中为playfield尺寸设置常量
  • 为图像大小设置常量或全局变量:您可以在加载图像时从图像中读取此内容
  • 预先计算值1192 / 3000.0和1022 / 3000.0(但使用图像常量)为每个刻度保存一个浮点运算?但是现在作为速度优化可能不值得,你可能会在尾数末尾牺牲一点浮点精度,但这并不重要。