gpt4 book ai didi

javascript - 使用毕达哥拉斯定理移动地理点

转载 作者:行者123 更新时间:2023-12-03 00:55:00 25 4
gpt4 key购买 nike

我有两个带有 WGS84 的地理点以及一条连接这两个点的线。我需要将这条线分成两 block ,移动中点以构建一个半菱形。

我有:

  • A 坐标(例如 47.2270293988673、4.06494140625);
  • B 坐标;
  • 轮类长度;
  • D 坐标;

我需要什么:

  • C 坐标;

要计算 D 坐标,我使用:

calcMidPoint(position01, position02)
{
var lat1 = position01[1];
var lon1 = position01[0];
var lat2 = position02[1];
var lon2 = position02[0];

var dLon = this.toRad(lon2 - lon1);

//convert to radians
lat1 = this.toRad(lat1);
lat2 = this.toRad(lat2);
lon1 = this.toRad(lon1);

var Bx = Math.cos(lat2) * Math.cos(dLon);
var By = Math.cos(lat2) * Math.sin(dLon);
var lat3 = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt((Math.cos(lat1) + Bx) * (Math.cos(lat1) + Bx) + By * By));
var lon3 = lon1 + Math.atan2(By, Math.cos(lat1) + Bx);
return [ this.toDegrees(lat3), this.toDegrees(lon3) ];
}

enter image description here

最佳答案

您需要垂直于 DB 进行构建。

首先,使用this page处的轴承部分计算DB的轴承(注意一般情况下它与AB和BA轴承不同)。

JavaScript:     (all angles     in radians)
var y = Math.sin(λ2-λ1) * Math.cos(φ2);
var x = Math.cos(φ1)*Math.sin(φ2) -
Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1);
var brng = Math.atan2(y, x);

然后将 Pi/2 添加到该值 DCBrng = brng + Pi/2 并使用 DCBrng 和距离“偏移的 len”计算目的地点 C

JavaScript:     (all angles     in radians)

var φ2 = Math.asin( Math.sin(φ1)*Math.cos(d/R) +
Math.cos(φ1)*Math.sin(d/R)*Math.cos(brng) );

var λ2 = λ1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(φ1),
Math.cos(d/R)-Math.sin(φ1)*Math.sin(φ2));

The longitude can be normalised to −180…+180 using (lon+540)%360-180

关于javascript - 使用毕达哥拉斯定理移动地理点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875896/

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