你如何在给定的垂直距离上找到一个点? [英] How do you find a point at a given perpendicular distance from a line?
问题描述
我在窗口中画了一条线,让用户拖动它.所以,我的线由两点定义:(x1,y1) 和 (x2,y2).但现在我想在我的线的末端画帽子",即在我的每个端点处画短垂直线.大写字母的长度应为 N 个像素.
I have a line that I draw in a window and I let the user drag it around. So, my line is defined by two points: (x1,y1) and (x2,y2). But now I would like to draw "caps" at the end of my line, that is, short perpendicular lines at each of my end points. The caps should be N pixels in length.
因此,要在端点 (x1,y1) 处绘制我的帽"线,我需要找到两个点形成一条垂直线,并且每个点距点 (x1,y1).
Thus, to draw my "cap" line at end point (x1,y1), I need to find two points that form a perpendicular line and where each of its points are N/2 pixels away from the point (x1,y1).
那么如何计算一个点 (x3,y3),因为它需要与已知直线的终点 (x1,y1) 相距 N/2 的垂直距离,即由 (x1,y1) 和 (x2,y2)?
So how do you calculate a point (x3,y3) given it needs to be at a perpendicular distance N/2 away from the end point (x1,y1) of a known line, i.e. the line defined by (x1,y1) and (x2,y2)?
推荐答案
你需要计算一个垂直于线段的单位向量.避免计算斜率,因为这会导致除以零错误.
You need to compute a unit vector that's perpendicular to the line segment. Avoid computing the slope because that can lead to divide by zero errors.
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
这篇关于你如何在给定的垂直距离上找到一个点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!