我真的不知道如何准确地表达这个问题,所以我制作了一个粗略的图表来解释我想问的问题:
给定一条由两点组成的线,我将如何检查给定点是否在相对于图像中显示的线的区域内?对不起,如果有一个我不知道的术语。
我真的不知道如何准确地表达这个问题,所以我制作了一个粗略的图表来解释我想问的问题:
给定一条由两点组成的线,我将如何检查给定点是否在相对于图像中显示的线的区域内?对不起,如果有一个我不知道的术语。
假设您的线段点是p1
和p2
,并且您的查询点是q
:
计算线段长度b := |p2 - p1|
和线方向(归一化)z := (p2 - p1) / b
和
计算从p1
到的向量q
,定义为w := (q - p1)
。
通过计算将查询点投影到无限线上q' := w dot z
。这为您提供了点的位置,就好像它从原始位置通过正交路径移动到线一样。
检查q
:如果q > b
您的查询点位于线段阴影之外,则过去p2
。如果q < 0
那么您的查询点位于线段阴影之外,则过去p1
. 否则,q
就是“内”。
基点 A、基点 B、线 AB、AD 和 BE(其中 DE 与 AB 平行,且距 AB 比 C 远。如果 CA 或 CB 与 AD 或 BE 相交,则 C 不在目标区域内。如果 CA 和 CB 都没有与AD或BE相交,则C在目标区域内。如果CA和CB都与AD和BE相交,则C在AD或BE上。
在你左边的例子中,ABC 是一个不与 AD 或 BE 相交的三角形。在你右边的例子中,ABC 是一个三角形,CB 与 AD 相交。
玩得开心编码!