如何找到围绕一个点的两个角度之间的最小差异?

196

给定一个2D圆形,其围绕坐标轴有两个角度,范围为-PI -> PI,求它们之间的最小角度值是多少?

需要考虑到PI和-PI之间的差值不是2PI而是零。

举个例子:

想象一个圆,中心有两条线,它们之间有2个角度,内部的角度被称为较小的角度,外部的角度被称为较大的角度。

两个角度加起来总共是一个完整的圆。鉴于每个角度都可以适合某个特定范围内,考虑到翻转,较小的角度值是多少


3
我读了3遍才理解你的意思。请加入一个例子,或者更好地解释一下... - Kobi
想象一个圆,从中心点出发有两条线,这两条线之间有两个角度,它们在内部形成的角度称为小角度,而在外部形成的角度则称为大角度。当两个角度相加时,它们组成了一个完整的圆。鉴于每个角度都可以适应一定的范围,考虑到回卷,那么小角度的值是多少? - Tom J Nowell
可能是重复的问题:如何计算一条线与水平轴之间的角度? - Jim G.
2
@JimG。这不是同一个问题,本问题中使用的角度P1将是另一个较小的角度,而不是其他问题中的错误答案。此外,并没有保证该角度与水平轴相同。 - Tom J Nowell
1
如果您使用Unity c#脚本,可以使用Mathf.DeltaAngle函数。 - bigant02
@bigant02,非常感谢。我在Unity中正在研究这个确切的问题。 :) 你帮了我很多 :) - JAQuent
11个回答

-1

我在C++中使用的一个简单方法是:

double deltaOrientation = angle1 - angle2;
double delta =  remainder(deltaOrientation, 2*M_PI);

2
很抱歉,这是错误的。考虑如果angle1 = 0且angle2 = pi+c,其中c>0。正确答案应该是-(pi-c),但你的答案给出了pi+c。请记住,OP明确要求较小的角度,而较小的角度应始终小于或等于pi。 - sircolinton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接