我知道三个点在一个圆上,它们代表弧的开始、中间和结束(a
和m
)b
。我也有这些点的角度,从正 X 轴逆时针方向,使用atan2(y,x)
从中心到点的三个相应向量,所以我们有-pi < theta < pi
.
我也知道哪些点是m
,我想知道的是a
和b
是弧的顺时针端。
我可以看到有 8 种方式可以排列点:
"East" "West" "East"
0 -pi | pi 0
---------------+-------------
a m b |
a m | b
a | m b
| a m b
b m a |
b m | a
b | m a
| b m a
其中前四个a
作为“结束”和b
作为“开始”,而后四个则相反。请记住,订单约可以在 0 处环绕并出现在右侧或左侧,因此符号没有帮助。
有没有一种简洁的方法来确定哪个是起点,哪个是终点?除了在一个大而密集的 if/else-if 块中费力地检查 8 个选项中的每一个之间的相对值之外,就是这样。
实现语言是 Python,但这不是特定于语言的问题!