在旋转地图中将游戏位置转换为经纬度
Convert game position to lat lng in rotated map
我有一道数学题,我无法解决这个问题,我觉得这很愚蠢。
我有这样定义的游戏边界。
const GAME_BOUNDS = {
x: {
min: -3200,
max: 4800
},
y: {
min: -4000,
max: 6000
}
}
我有职位ex。 const POS = {x: 100, y: -500}
。我想将位置转换为在我的范围内更正 lat/lng。其中 lng 180 为 x: 4800
。然而诀窍是,地图旋转了,我找不到正确的旋转我需要应用以获得正确的 lng/lat.
您可以定义一个漂亮的函数,将值 x 从一个范围 xMin..xMax 映射到另一个范围 yMin..yMax:
function remap(x, xMin, xMax, yMin, yMax) {
return yMin + (yMax - yMin)*(x - xMin)/(xMax - xMin);
}
现在假设您要将 x 值从 -3200..4800 范围映射到 -180..180 并将其存储为变量 lng
,并映射 -4000..6000 范围内的 y 值范围为 -90..90 并将其存储为 lat
:
let lng = remap(x, -3200, 4800, -180, 180);
let lat = remap(y, -4000, 6000, -90, 90);
我有一道数学题,我无法解决这个问题,我觉得这很愚蠢。
我有这样定义的游戏边界。
const GAME_BOUNDS = {
x: {
min: -3200,
max: 4800
},
y: {
min: -4000,
max: 6000
}
}
我有职位ex。 const POS = {x: 100, y: -500}
。我想将位置转换为在我的范围内更正 lat/lng。其中 lng 180 为 x: 4800
。然而诀窍是,地图旋转了,我找不到正确的旋转我需要应用以获得正确的 lng/lat.
您可以定义一个漂亮的函数,将值 x 从一个范围 xMin..xMax 映射到另一个范围 yMin..yMax:
function remap(x, xMin, xMax, yMin, yMax) {
return yMin + (yMax - yMin)*(x - xMin)/(xMax - xMin);
}
现在假设您要将 x 值从 -3200..4800 范围映射到 -180..180 并将其存储为变量 lng
,并映射 -4000..6000 范围内的 y 值范围为 -90..90 并将其存储为 lat
:
let lng = remap(x, -3200, 4800, -180, 180);
let lat = remap(y, -4000, 6000, -90, 90);