如何检查一个向量是否在两个向量之内

sup*_*oon 0 math vector

这是一张图片:

\n\n

在此输入图像描述

\n\n

我有两个向量:os,oe

\n\n

它们之间的范围始终是从 os(开始)到 oe(结束)。

\n\n

因此,在此图像中,两者之间的范围是 270\xc2\xb0 的角度。

\n\n

然后我有两个向量要检查:oa,ob

\n\n

正如你所看到的,向量 oa 应该在 osoe 形成的范围内,而向量 ob 应该在之外。

\n\n

我想知道是否有一种方法可以仅使用向量数学(例如叉积点积)进行检查。

\n\n

我尝试使用叉积进行顺时针/逆时针检查,但似乎当两者之间的角度大于 180\xc2\xb0 时,事情会变得复杂。

\n\n

任何建议将不胜感激,谢谢:)

\n

MBo*_*MBo 5

我将点 p 的向量表示为op

计算叉积

 c_se = cross(os, oe)
Run Code Online (Sandbox Code Playgroud)

如果c_se>=0 (角度 in 0..180 range),那么你必须检查是否

cross(os, op) >= 0 AND cross(op, oe) >= 0
Run Code Online (Sandbox Code Playgroud)

如果c_se < 0 (角180..360 range),那么你必须检查是否(OR而不是AND,正如马特在评论中注意到的那样)

cross(os, op) >= 0 OR cross(op, oe) >= 0
Run Code Online (Sandbox Code Playgroud)

旧版本 - 有点复杂:

NOT (cross(oe, op) >= 0 AND cross(op, os) >= 0)
Run Code Online (Sandbox Code Playgroud)