在2D平面中有四个点:O
,A
,B
,P
。
O
,A
,B
定义了一个“角度”,即两条光线,均来自O
,一条经过A
,而另一个经过B
。如何判断点P
所在角度的哪一侧,即是否在两条射线标记的空间内?
请注意,这些点是任意放置的,即角度可能比π更大。
这与确定点的哪一侧所在的类似问题,如所讨论的那样。在comp.graphics.algorithms FAQ中(主题1.02:我如何找到从一个点到一条直线的距离?),但这里约有两条光线而不是一条光线。
编辑:抱歉没有明确说明:角度是定向的,即给定P
,它可能位于O
,A
,B
的右侧,但它位于O
,B
,A
的左侧。假设三角形O
,A
,B
具有时钟方向。同样,它类似于“行的哪一方面”问题:该行是否通过A
,B
或B
,A
。 / p>
一个例子:
\ \
A B
\ right \ left
left \ right \
O------B---- O------A----
答案 0 :(得分:3)
从O看时,我们可以将飞机分成两个区域或“两侧”。
要检查该点是否在哪个区域,您可以使用
In [373]: x=input('')
123,232,232
In [374]: x
Out[374]: '123,232,232' # I got a single string from input
In [375]: np.array(x)
Out[375]:
array('123,232,232', # trying to make that an array - still string
dtype='<U11')
In [377]: np.array(x.split(','))
Out[377]:
array(['123', '232', '232'], # better - 3 strings
dtype='<U3')
In [378]: np.array(x.split(','),dtype=float)
Out[378]: array([ 123., 232., 232.]) # good
答案 1 :(得分:1)