计算垂直于直线的点

我有一个由(x1,y1)(x2,y2)指定的行L,并且想要计算点的坐标:

  • 位于与其长度的一半处的L相交的法线上
  • 是距离L一定距离D.

例子:

  • 如果线是(x1,a)(x2,a)(水平),则计算点的坐标将是((x2-x1)/ 2,D)。
  • 如果线是(a,y1)(a,y2)(垂直),则计算点的坐标将是(D,(y2-y1)/ 2)。

但我不知道如何以通用的方式计算所有线的坐标,无论角度如何(-Pi到Pi)。

提前致谢!

两点之间的中心由下式给出

((x1+x2)/2, (y1+y2)/2) 

而(非标准化)正常是

 (-(y2-y1), (x2-x1)) 

如果我们将这个向量标准化,我们得到

 (-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2) 

如果我们将两者结合起来,我们就会找到两点

 ((x1+x2)/2, (y1+y2)/2) +- D * (-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2) 

这两者都符合您的要求。