我在一个窗口画了一条线,我让用户拖动它.所以,我的线由两点定义:(x1,y1)和(x2,y2).但是现在我想在我的线末端绘制"帽子",也就是说,在我的每个终点处都有短垂线.大写字母的长度应为N像素.
因此,为了在终点(x1,y1)绘制我的"帽"线,我需要找到形成垂直线的两个点,并且其每个点距离点(x1,y1)的N/2个像素.
那么你如何计算一个点(x3,y3),因为它需要与已知线的终点(x1,y1)保持垂直距离N/2,即由(x1,y1)定义的线和(x2,y2)?
您需要计算垂直于线段的单位矢量.避免计算斜率,因为这会导致零误差.
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
您只需评估正交值,然后乘以N/2
vx = x2-x1 vy = y2-y1 len = sqrt( vx*vx + vy*vy ) ux = -vy/len uy = vx/len x3 = x1 + N/2 * ux Y3 = y1 + N/2 * uy x4 = x1 - N/2 * ux Y4 = y1 - N/2 * uy