查找到线中间的距离

Find distance to middle of line

所以我有一条线,连接两点,我想在 canvas 中给这条线起一个直观的名称。我希望这个名字正好位于该行的中间,但有一个偏移量,这样文本就不会穿过该行。确定线的中间并不难,你可以这样找到它:

而且直线的法线方程也很容易确定:

只需将 P 代入等式,即可求得 n

现在开始解决问题:对于给定的直线距离,我想找到一个点 P(xn, yn),该点位于通过直线中间的直线的法线上。将线性函数插入距离公式后,我得到了这个:

我不仅无法转换此等式以获得 xn 的有效值,我相信必须有一种数学上更简单的方法来实现此目的。

中间是

mx = (x1 + x2)/2
my = (y1 + y2)/2

行长为

len = sqrt((x1 - x2)^2 + (y1 - y2)^2)

直线的归一化方向向量为

dx = (x2-x1) / len
dy = (y2-y1) / len

垂直矢量为

nx = -dy
ny = dx

从中间偏移 d 的点是

px = mx + d * nx
py = mx + d * ny

或另一边

px = mx - d * nx
py = mx - d * ny