gpt4 book ai didi

geolocation - 如何使用方向角和速度计算下一次的经纬度

转载 作者:行者123 更新时间:2023-12-04 01:38:07 25 4
gpt4 key购买 nike

我知道我现在的位置({lat:x,lon:y})
我知道我的速度和方向角;
如何预测下一次的下一个位置?

最佳答案

首先,根据您当前的速度和已知的时间间隔(“下一次”)计算您将行驶的距离:

distance = speed * time

然后你可以使用这个公式来计算你的新位置(lat2/lon2):
lat2 =asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
dlon=atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(lat2))
lon2=mod( lon1-dlon +pi,2*pi )-pi

有关 Javascript 中的实现,请参阅函数 LatLon.prototype.destinationPointthis page

更新 对于那些希望对上述内容进行更充实的实现的人,这里是在 Javascript 中:
  /**
* Returns the destination point from a given point, having travelled the given distance
* on the given initial bearing.
*
* @param {number} lat - initial latitude in decimal degrees (eg. 50.123)
* @param {number} lon - initial longitude in decimal degrees (e.g. -4.321)
* @param {number} distance - Distance travelled (metres).
* @param {number} bearing - Initial bearing (in degrees from north).
* @returns {array} destination point as [latitude,longitude] (e.g. [50.123, -4.321])
*
* @example
* var p = destinationPoint(51.4778, -0.0015, 7794, 300.7); // 51.5135°N, 000.0983°W
*/
function destinationPoint(lat, lon, distance, bearing) {
var radius = 6371e3; // (Mean) radius of earth

var toRadians = function(v) { return v * Math.PI / 180; };
var toDegrees = function(v) { return v * 180 / Math.PI; };

// sinφ2 = sinφ1·cosδ + cosφ1·sinδ·cosθ
// tanΔλ = sinθ·sinδ·cosφ1 / cosδ−sinφ1·sinφ2
// see mathforum.org/library/drmath/view/52049.html for derivation

var δ = Number(distance) / radius; // angular distance in radians
var θ = toRadians(Number(bearing));

var φ1 = toRadians(Number(lat));
var λ1 = toRadians(Number(lon));

var sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1);
var sinδ = Math.sin(δ), cosδ = Math.cos(δ);
var sinθ = Math.sin(θ), cosθ = Math.cos(θ);

var sinφ2 = sinφ1*cosδ + cosφ1*sinδ*cosθ;
var φ2 = Math.asin(sinφ2);
var y = sinθ * sinδ * cosφ1;
var x = cosδ - sinφ1 * sinφ2;
var λ2 = λ1 + Math.atan2(y, x);

return [toDegrees(φ2), (toDegrees(λ2)+540)%360-180]; // normalise to −180..+180°
}

关于geolocation - 如何使用方向角和速度计算下一次的经纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com