2015-04-04 24 views
1

我似乎无法找到任何可以帮助我的东西,它可能不完整,或者充满数学术语,我不太明白(英语不是我的母语)。带有“前”向量的线/平面的带符号距离的函数?

我有一条从l0到l1的线,带有前向量fv。我希望该函数能够给出从该行开始的点p0的距离,如果p0位于该行的“后”侧,该函数的负号将为负数。

What I want the function to calculate

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

喜欢的东西:
浮动距离(Vector2 10,Vector2 L1,Vector2 FV,Vector2 P0)

编辑: 原来这会为我工作:signed distance between plane and point

+0

事实证明,这个答案适用于我的罚款:http://stackoverflow.com/questions/3860206/signed-distance-between-plane-and-point – ManIkWeet 2015-04-04 13:05:57

回答

2

线方程是

(x-x0)/(x1-x0) = (y-y0)/(y1-y0) 

将其转换为一般形式

a * x + b * y - c = 0 

,并找到为

Dist = Abs((a * px + b * py - c)/Sqrt(a^2 + b^2)) 

的点(PX,PY)距离来确定什么semiplane点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) 
+0

第一件:x/y从哪里来?我的数学可能真的很生疏,对不起...... – ManIkWeet 2015-04-04 12:31:28

+0

l0.x,l1.x等 – MBo 2015-04-04 13:12:27