gpt4 book ai didi

c# - 寻找两个角之间的最短距离

转载 作者:太空狗 更新时间:2023-10-30 00:04:49 24 4
gpt4 key购买 nike

我一直在努力寻找一种方法来找到两个角之间的最短距离。角度在 -360 < 360 区间内,以度为单位。

简而言之,我需要一种简单的方法(越简单越好)来找到两个角之间的最短距离,我们称它们为角度 1 和角度 2。角度 1 是我想要到达的角度,角度 2 是我所在的角度。之后我想使用 if 函数来确定实体的旋转方向。

伪代码:

CloseDistance = (Find shortest distance between angle1 (where i want to go) and angle2 (where i am))

if (CloseDistance > Something)
{Rotate to the right} else {Rotate to the left}

最佳答案

public static double AngleDifference( double angle1, double angle2 )
{
double diff = ( angle2 - angle1 + 180 ) % 360 - 180;
return diff < -180 ? diff + 360 : diff;
}

这是通过注意到我们想要取两个角度之间的差异来实现的,angle1angle2并将结果包装到 [-180, 179) 范围内。 mod 运算符允许我们将某些内容包装到 [0, n) 范围内。 IE。 x % n “包装”(注意 x < 0 )x 到范围 [0, n]。

我们的范围从 -180 而不是 0 开始,所以我们通过添加 180 来移动它。然后我们换到 360,然后我们移回去。这就是该方法的第一行所做的。

第二行处理负数的小问题。如果angle2 - angle1 + 180恰好小于0,则diff将小于 -180。在这种情况下,我们只需将 360 添加到它的范围内即可。否则我们什么都不做。

作为一个额外的好处,输入角度是完全不受限制的。它们不必介于 -360 和 360 之间。它们可以是任何值。

关于c# - 寻找两个角之间的最短距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036652/

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