一尘不染

如何找到与直线相距给定垂直距离的点?

algorithm

我在窗口中画了一条线,然后让用户拖动它。因此,我的线由两个点定义:(x1,y1)和(x2,y2)。但是现在我想在行尾绘制“盖帽”,也就是在每个端点处绘制短垂直线。上限的长度应为N个像素。

因此,要在端点(x1,y1)处绘制“帽”线,我需要找到两个形成一条垂直线的点,并且其每个点都离该点(x1,y1)N / 2像素。

那么,如何计算点(x3,y3),使其与已知线的终点(x1,y1)相距垂直距离N / 2,即由(x1,y1)和(x2,y2)?


阅读 305

收藏
2020-07-28

共1个答案

一尘不染

您需要计算与线段垂直的单位矢量。避免计算斜率,因为这会导致除以零误差。

dx = x1-x2
dy = y1-y2
dist = sqrt(dx*dx + dy*dy)
dx /= dist
dy /= dist
x3 = x1 + (N/2)*dy
y3 = y1 - (N/2)*dx
x4 = x1 - (N/2)*dy
y4 = y1 + (N/2)*dx
2020-07-28