如何检查一个向量是不是在两个向量内
Posted
技术标签:
【中文标题】如何检查一个向量是不是在两个向量内【英文标题】:How to check if a vector is within two vectors如何检查一个向量是否在两个向量内 【发布时间】:2017-04-13 03:40:53 【问题描述】:这是一张图片:
我有两个向量:os, oe
它们之间的范围总是从 os(开始)到 oe(结束)。
所以在这张图片中,两者之间的角度是 270°。
然后我要检查两个向量:oa、ob
如你所见,向量 oa 应该在 osoe 形成的范围内,向量 ob 应该在外面。
我想知道是否有办法只使用向量数学(例如叉积点积)进行检查。
我尝试使用带有顺时针/逆时针检查的叉积,但似乎当两者之间的角度大于 180° 时,事情变得复杂了。
任何建议将不胜感激,谢谢:)
【问题讨论】:
这不是 *** 问题,因为它与编程完全无关。它应该在 This math site 上。虽然它可能不会因为重复而在那里被很好地接收。不过不妨试试 顺便说一下,二维平面 xy 上两个向量的叉积永远不会在二维平面 xy 上。它与平面正常(垂直),因此您无法使用叉积来计算。您应该只找到 oa 与 os 和 oe 之间的角度。这会告诉你它是在他们之间还是在他们的范围之外 我投票结束这个问题,因为它不是关于计算机编程的。 【参考方案1】:我将指向 p 的向量表示为op
。
计算叉积
c_se = cross(os, oe)
如果c_se>=0
(角度在0..180 range
),那么你必须检查是否
cross(os, op) >= 0 AND cross(op, oe) >= 0
如果c_se < 0
(角度在180..360 range
),那么你要检查是否
NOT (cross(oe, op) >= 0 AND cross(op, os) >= 0)
【讨论】:
以上是关于如何检查一个向量是不是在两个向量内的主要内容,如果未能解决你的问题,请参考以下文章
如何检查向量的所有元素是不是在 Eigen c++ 中的另一个向量中?