我正在尝试计算点 P 的坐标,它距离 AB 线段 x 个单位,距离 BC 线段 y 个单位。
编辑: 我正在尝试为通用解决方案编写代码。 作为参数,我有三个点(坐标)A、B 和 C 以及距离 x 和 y 的两个值。
最佳答案
让我们翻译所有要点A,B,C
通过 (-BX, -BY)
将坐标原点设置为 B
, 新点是 a, 0, c
,我会将您的距离重命名为 dc
和 da
.
新坐标
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)
(BC
和 BA
段的长度)
如点p=(px, py)
位于 dc
与线的距离 0c
,并在 da
与线的距离 0a
, 然后
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
求解此线性方程组 px
和 py
, 最后将坐标移回 BX
, BY
PX = px + BX
PY = py + BY
附言在额外的情况下 angle ABC=180
系统没有解决da<>dc
或 da=dc
的无限数量的解决方案
关于math - 如何找到距离AB线段x单位和距离BC线段y单位的点的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317369/