gpt4 book ai didi

Javascript + 数学 - 正确获取从 A 点到 B 点的方位 Angular

转载 作者:行者123 更新时间:2023-11-28 18:50:27 24 4
gpt4 key购买 nike

在互联网上询问,我找到了一个计算从 A 点到 B 点的方位 Angular 的公式,假设现在它起作用了一半。

//Creates to points A and B and set their coordinates
var A = {
x : 250,
y : 250
};

var B = {
x : 100,
y : 250
};

var angle = Math.acos(
(A.y - B.y) /
Math.sqrt(
Math.pow(A.x - B.x, 2) +
Math.pow(A.y - B.y, 2)
) * (180 / Math.PI);

在这里摆弄:https://jsfiddle.net/7js7e90k/4/

现在B点(绿点)位于A点(白点)的左侧,显示的 Angular 应该是270°,但它显示的是90°。如果将 B 点设置到右侧(更改对象坐标),您将看到它也将显示 90°。

我需要它显示相对于北方的正确 Angular (0°),但它不会超过 180°,公式中需要更改一些内容。

最佳答案

由于 Math.acos() 返回 0 到 π 之间的值,而不是 0 到 2π 之间的值,因此您可以检查 A 点是在 B 点的左侧还是右侧,并添加额外的 180 ˚ 如果 A 是 B 的右边。

试试这个:

var ref_angle = Math.acos((A.y - B.y) / Math.sqrt(Math.pow(A.x - B.x, 2) + Math.pow(A.y - B.y, 2))) * (180 / Math.PI);

if (B.x >= A.x) {
var angle = ref_angle
}
else {
angle = ref_angle + 180
}

更新:

如果您想避免使用条件,则需要使用 Math.atan2()。然而,Math.atan2() 测量相对于正 x 轴(东)的 Angular 并返回 -180° 到 180° 之间的值。我修改了下面的公式,获取相对于正 y 轴(北)的 Angular 并返回 0° 到 360° 之间的值:

var angle = ( ( ( -(Math.atan2((A.x-B.x),(A.y-B.y))*(180/Math.PI)) % 360) + 360) % 360); 

看看这个更新工作 fiddle :https://jsfiddle.net/g7shjjxq/5/

关于Javascript + 数学 - 正确获取从 A 点到 B 点的方位 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562518/

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