查找到线中间的距离
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
所以我有一条线,连接两点,我想在 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