【问题标题】:How to find position of point that is x unit distant from AB line segment and y unit distant from BC line segment?如何找到距离 AB 线段 x 单位和距离 BC 线段 y 单位的点的位置?
【发布时间】:2016-02-10 14:06:28
【问题描述】:

我正在尝试计算点 P 的坐标,它距离 AB 线段为 x 个单位,距离 BC 线段为 y 个单位。

编辑: 我正在尝试为通用解决方案编写代码。 作为参数,我有三个点(坐标)A、B 和 C,还有距离 x 和 y 的两个值。

【问题讨论】:

  • 这在很大程度上取决于您需要处理的极端情况,以及您的“到线段的距离”是否与“到包含线段的线的距离”相同。

标签: math language-agnostic geometry


【解决方案1】:

让我们将所有点A,B,C 转换为(-BX, -BY) 以将坐标原点设置为B,新点是a, 0, c,我会将距离重命名为dcda

新坐标

cy = CY - BY
cx = CX - BX
ay = AY - BY
ax = AX - BX

那么0c行就会有方程

(-cy * x + cx * y) / Sqrt(cx*cx +cy*cy) = 0

0a 行会有等式

(-ay * x + ax * y) / Sqrt(ax*ax +ay*ay) = 0

让我们 lc = Sqrt(cx*cx +cy*cy)la = Sqrt(ax*ax +ay*ay)BCBA 段的长度)

如果点p=(px, py)0c 线的距离为dc,并且与0a 线的距离为da,则

Abs(-cy * px + cx * py) = dc * lc
Abs(-ay * px + ax * py) = da * la

如果你的点总是形成BC, BP, BA 射线的逆时针顺序,你可以只使用这个符号组合并找到单一的解决方案:

-cy * px + cx * py = dc * lc
-ay * px + ax * py = - da * la

求解pxpy的线性系统,最后将坐标向后移动BXBY

PX = px + BX
PY = py + BY

附:在额外的情况下angle ABC=180 系统没有da<>dc 的解决方案或da=dc 的无限数量的解决方案

【讨论】:

  • 注意:对于角度 ABC = 180,如果两个距离不相等,则没有解决方案。如果这两个距离相等,则存在无限解(平行于 ABC 的两条直线中的任意一条上的任意点在距它的距离处)。
猜你喜欢
  • 1970-01-01
  • 2022-07-29
  • 2013-02-21
  • 2018-01-17
  • 2010-10-25
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多