我试图计算点P的坐标,它是离AB线段很远的x单位,距离BC线段很远的y单位。
编辑:我正在尝试为通用解决方案编写代码。作为参数,我有三个点(坐标) A,B和C,以及距离x和y的两个值。
发布于 2016-02-10 08:35:17
让我们通过(-BX, -BY)
将所有的点(-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)
位于距离0c
线的dc
距离,而在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
解。
https://stackoverflow.com/questions/35317369
复制相似问题