9

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

我有一个点,我从该点投射一个由方向和角度给出的无限角度(2D 圆锥)。(点和方向形成一个矢量,每边一半的角度形成二维圆锥)

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

如何做到这一点?谢谢!

4

4 回答 4

15

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

这适用于 2D 和 3D。

于 2009-07-22T17:54:17.857 回答
1

我想说最好的方法是将点投影到垂直于圆锥方向的 2D 表面上。然后你计算同一平面和点之间的正交距离。最后,您知道该高度处圆锥的宽度,因此您可以查看该点是否超出该宽度。

于 2009-07-22T17:57:56.803 回答
1

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

于 2009-07-22T18:01:00.587 回答
1

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

于 2009-07-22T17:55:24.687 回答