计算垂直于直线的点

sd_*_*sd_ 3 java geometry

我有一个由(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).

提前致谢!

How*_*ard 8

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

((x1+x2)/2, (y1+y2)/2)
Run Code Online (Sandbox Code Playgroud)

而(非标准化)正常是

(-(y2-y1), (x2-x1))
Run Code Online (Sandbox Code Playgroud)

如果我们将这个向量归一化,我们得到

(-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)
Run Code Online (Sandbox Code Playgroud)

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

((x1+x2)/2, (y1+y2)/2) +- D * (-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)
Run Code Online (Sandbox Code Playgroud)

这两者都符合您的要求.