计算垂直于直线的点

时间:2011-03-07 19:44:15

标签: 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)。

提前致谢!

1 个答案:

答案 0 :(得分:8)

两点之间的中心由

给出
((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)

这两者都符合您的要求。