Math 函数用于从带有“符号”的线/平面的有符号距离;“正面”;矢量?

Math 函数用于从带有“符号”的线/平面的有符号距离;“正面”;矢量?,math,line,distance,point,signed,Math,Line,Distance,Point,Signed,我似乎找不到任何能帮助我的东西,它要么不完整,要么充满了我不太懂的数学术语(英语不是我的母语) 我有一条从l0到l1的线,前面有向量fv。我希望函数给出点p0到直线的距离,如果p0在直线的“背面”,则使用负号 如果需要,我可以访问完整的Vector2类,函数可以是C++/C#/Java/JavaScript,我可以自己将其翻译成C 类似于: 浮动距离(矢量2 l0、矢量2 l1、矢量2 fv、矢量2 p0) 编辑: 这对我来说是可行的:直线方程是 (x-x0)/(x1-x0) = (y-y0)

我似乎找不到任何能帮助我的东西,它要么不完整,要么充满了我不太懂的数学术语(英语不是我的母语)

我有一条从l0到l1的线,前面有向量fv。我希望函数给出点p0到直线的距离,如果p0在直线的“背面”,则使用负号

如果需要,我可以访问完整的Vector2类,函数可以是C++/C#/Java/JavaScript,我可以自己将其翻译成C

类似于:
浮动距离(矢量2 l0、矢量2 l1、矢量2 fv、矢量2 p0)

编辑: 这对我来说是可行的:

直线方程是

(x-x0)/(x1-x0) = (y-y0)/(y1-y0)
将其转换为一般形式

a * x + b * y - c = 0
求点(px,py)的距离为

为了确定半平面点p所属,找到向量
(px-x0,py-y0)
(x1-x0,y1-y0)
的点积符号,并将其与
点(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)

事实证明,这个答案对我来说很好:
Dist = Dot((px-x0, py-y0), (x1-x0, y1-y0)) / Length(x1-x0, y1-y0)