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

Math 如何检查点是否在线阴影中,math,geometry,vector-graphics,Math,Geometry,Vector Graphics,我真的不知道如何准确地表达这个问题,所以我制作了一个粗略的图形来解释我想问的问题: 给定一条由两个点组成的线,我如何检查给定点是否在图像中显示的相对于该线的区域内?很抱歉,如果有一个术语我不知道。假设您的线段点是p1和p2,并且您的查询点是q: 计算线段长度b:=|p2-p1 |和直线方向(标准化)z:=(p2-p1)/b和 计算从p1到q的向量,定义为w:=(q-p1) 通过计算q':=w dot z将查询点投影到无限线上。这将为您提供点的位置,就像它从原始位置通过正交路径移动到直线一样 检查

我真的不知道如何准确地表达这个问题,所以我制作了一个粗略的图形来解释我想问的问题:


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

假设您的线段点是
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相交


    有趣地编写代码!

    作为旁注——这个问题可能与stackoverflow的主题无关:)。我认为可能是这样,但由于我需要从编程概念的角度向我解释这一点,我认为这是一个公平的游戏。谢谢,这很容易理解。这是一个正确的实现吗?请原谅我使用的图形库增加了复杂性。编辑:保存我需要为第5行使用向量距离公式的事实,我现在将其添加到我的代码中