我似乎无法找到任何可以帮助我的东西,它要么不完整,要么充满了我不太了解的数学术语(英语不是我的母语式语言)。
我有一条从l0到l1的线,前面的矢量fv。我希望函数给出点p0与线的距离,如果p0位于"返回"则为负号。这条线的一面。
如果需要,我可以访问一个完整的Vector2类,该函数可以在C ++ / C#/ Java / JavaScript中,我可以将它转换为C#我自己。
类似的东西:
浮点距离(Vector2 l0,Vector2 l1,Vector2 fv,Vector2 p0)
编辑: 事实证明这对我有用:signed distance between plane and point
答案 0 :(得分:2)
线方程是
(x-x0)/(x1-x0) = (y-y0)/(y1-y0)
将其转换为一般形式
a * x + b * y - c = 0
并找到点(px,py)的距离为
Dist = Abs((a * px + b * py - c) / Sqrt(a^2 + b^2))
要确定半平面点p属于哪个,请找到向量(px-x0, py-y0)
和(x1-x0, y1-y0)
的点积的符号,并将其与Dot(fv, (x1-x0, y1-y0))
的符号进行比较
您还可以找到(px-x0, py-y0)
和fv
签名距离的另一种方式:
Dist = Dot((px-x0, py-y0), (x1-x0, y1-y0)) / Length(x1-x0, y1-y0)