求助:游戏坐标与地图像素坐标的反向转换实现
游戏坐标转地图像素坐标的反向推导方法
直接对现有正向转换公式做代数变形,就能得到反向转换的逻辑:
推导步骤
X轴(游戏坐标→像素坐标)
原正向转换公式:
var lx = (x + 4.5) / (5632 / 5500) - 1500;
逐步变形解出像素坐标x:
- 将
-1500移至等式左侧:lx + 1500 = (x + 4.5) / (5632 / 5500) - 两侧同时乘以
(5632 / 5500):(lx + 1500) * (5632 / 5500) = x + 4.5 - 将
+4.5移至等式右侧:x = (lx + 1500) * (5632 / 5500) - 4.5
Y轴(游戏坐标→像素坐标)
原正向转换公式:
var ly = 2500.0 - (y + 5.5) / (4096 / 4000.0);
逐步变形解出像素坐标y:
- 移项整理:
(y + 5.5)/(4096/4000) = 2500 - ly - 两侧同时乘以
(4096/4000):y + 5.5 = (2500 - ly) * (4096 / 4000) - 将
+5.5移至等式右侧:y = (2500 - ly) * (4096 / 4000) - 5.5
最终反向转换代码
// 输入游戏坐标lx、ly,输出对应地图像素坐标x、y var x = (lx + 1500) * (5632 / 5500) - 4.5; var y = (2500 - ly) * (4096 / 4000) - 5.5;
验证说明
用你提供的示例反向验证时,输入游戏坐标(2260, 937)得到的像素坐标和你给出的(2491, 4869)存在偏差,大概率是示例中的像素坐标存在笔误,或是地图坐标系原点定义有特殊规则,但公式推导的数学逻辑完全成立,你可以用已知的正确坐标对进行校准调整。
内容的提问来源于stack exchange,提问作者James Smith
相关产品推荐
相关产品推荐

