【发布时间】:2012-03-19 08:05:04
【问题描述】:
我正在寻找一个公式来找出圆上两个度数标记之间的最短距离(以度为单位):例如,30 度和 170 度(140 度)。
两度标记几乎可以是任何实数,不一定介于 0 和 360 之间(可以是负数,也可以远大于 360,例如 -528.2 和 740(即 171.8 度))。但是,距离应始终为 = 0 度。
听起来很简单。但是,我一直在尝试为此找到一个好的解决方案,并且我尝试了很多不同的代码,但到目前为止我发现在我尝试过的所有情况下都没有。我在 C++ 中工作。有人有什么想法吗?
【问题讨论】:
-
abs(deg1 - deg2)会给你带来差异,然后一些简单的模数学使其始终为 -
根据您的示例,听起来您取两个数字的绝对值,然后从最大值中减去最小值。
-
@RobertHarvey:这实际上是行不通的。想象一下起点是-90。覆盖 4 个点,你有 -90(又名 270)、0、90 和 180。如果你有一个点在 -90,另一个点在 135,那么它们之间的最小距离实际上是 135。
-
@ChrisLively:是的,我意识到你需要模数计算。
标签: c++ trigonometry geometry