Geometry 二维几何图形:如何检查点是否在角度内

Geometry 二维几何图形:如何检查点是否在角度内,geometry,2d,point,Geometry,2d,Point,我在2D中有以下几何问题: 我有一个点,从这里我投射一个无限角(2D圆锥体),这个角由一个方向和一个角度给出。(点和方向形成一个向量,角度的每一侧各有一半形成2D圆锥体) 现在我想检查2D中的另一个点是在这个圆锥体内部还是外部 如何做到这一点? 谢谢 计算从圆锥体中心到查询点的向量。将向量规格化为长度1,取圆锥体的中心向量,并将其规格化为长度1。 现在取向量之间的点积。两个归一化向量之间的点积是它们之间角度的余弦。以点积的arccos(acos在大多数语言中)为例,您将得到角度。将此角度与圆锥体

我在2D中有以下几何问题:

我有一个点,从这里我投射一个无限角(2D圆锥体),这个角由一个方向和一个角度给出。(点和方向形成一个向量,角度的每一侧各有一半形成2D圆锥体)

现在我想检查2D中的另一个点是在这个圆锥体内部还是外部

如何做到这一点?
谢谢

计算从圆锥体中心到查询点的向量。将向量规格化为长度1,取圆锥体的中心向量,并将其规格化为长度1。
现在取向量之间的点积。两个归一化向量之间的点积是它们之间角度的余弦。以点积的arccos(
acos
在大多数语言中)为例,您将得到角度。将此角度与圆锥体的角度(描述中的半角)进行比较。如果它较低,那么问题点在圆锥体内


这适用于2D和3D。

使用方向的arctg计算方向的角度。从选中点减去原点。计算其角度(再次通过归一化向量的arctg),并检查其是否位于角度边界内。

我认为最好的方法是将点投影到垂直于圆锥体方向的2D曲面上。然后计算同一平面与该点之间的正交距离。最后,您知道该高度处圆锥体的宽度,以便查看该点是否超出该宽度。

让从原点到指定点的向量与穿过中心的法线形成一个角度A。如果角度A小于圆锥体的半角,则它位于内部或外部。

语言不重要;我相信这是OP正在寻找的算法。是的,这是一个很好的观点Daniel,“2D中的点”是什么?是的,语言不重要,这是我正在寻找的算法。如果你用语言描述它,它甚至还可以。对不起,如果一个圆锥体是3D的,我不确定用什么英语单词来代替。圆锥体也可以用在2D上。不过你也可以用“扇形”来表示2D。谢谢,实际上我一直都是这么做的,但我只是不认为它已经完成了,因为我没有意识到点的实际位置在哪里得到了考虑。现在它有意义了。谢谢绝妙的解决方案。请注意,您可以预先计算“圆锥angie一半的余弦”,然后在点积的结果和余弦值之间使用“如果小于”比较,不需要arccos——当然,只要点积的结果为正,以避免在圆锥“后面”引入点。如果针对同一个圆锥体检查多个点,这将非常有用。