带有“前”向量的线/平面的符号距离函数?

时间:2015-04-04 09:38:21

标签: math line distance point signed

我似乎无法找到任何可以帮助我的东西,它要么不完整,要么充满了我不太了解的数学术语(英语不是我的母语式语言)。

我有一条从l0到l1的线,前面的矢量fv。我希望函数给出点p0与线的距离,如果p0位于"返回"则为负号。这条线的一面。

What I want the function to calculate

如果需要,我可以访问一个完整的Vector2类,该函数可以在C ++ / C#/ Java / JavaScript中,我可以将它转换为C#我自己。

类似的东西:
浮点距离(Vector2 l0,Vector2 l1,Vector2 fv,Vector2 p0)

编辑: 事实证明这对我有用:signed distance between plane and point

1 个答案:

答案 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)