【问题标题】:Function for signed distance from a line/plane with a "front" vector?具有“前”向量的线/平面的有符号距离的函数?
【发布时间】:2015-04-04 21:06:43
【问题描述】:

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

我有一条从 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

【问题讨论】:

标签: math line distance point signed


【解决方案1】:

线性方程是

(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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多