如何检查点是否在线阴影中

时间:2013-05-25 04:01:49

标签: math geometry vector-graphics

我无法弄清楚如何准确地说出这个问题,所以我做了一个粗略的图解来解释我想问的问题:enter image description here

如果一条线由两点组成,我将如何检查给定点是否在相对于图像中显示的线的区域内?对不起,如果有一个我不知道的术语。

2 个答案:

答案 0 :(得分:1)

假设您的线段分数为p1p2,并且您的查询点为q

  1. 计算线段长度b := |p2 - p1|和线方向(标准化)z := (p2 - p1) / b

  2. 计算从p1q的向量,定义为w := (q - p1)

  3. 通过计算q' := w dot z将查询点投影到无限线上。这将为您提供点的位置,就好像它从原始位置通过正交路径移动到线上一样。

  4. 检查q:如果q > b,则您的查询点位于线段阴影之外,超过p2。如果q < 0,则您的查询点位于线段阴影之外,超过p1。否则,q在&#34;内部&#34;。

答案 1 :(得分:0)

基点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相交。

有趣的编码!