计算垂直于直线的点
我有一个由(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)
这两者都符合您的要求。