当前位置:  开发笔记 > 编程语言 > 正文

如何在一条线的给定垂直距离处找到一个点?

如何解决《如何在一条线的给定垂直距离处找到一个点?》经验,为你挑选了2个好方法。

我在一个窗口画了一条线,我让用户拖动它.所以,我的线由两点定义:(x1,y1)和(x2,y2).但是现在我想在我的线末端绘制"帽子",也就是说,在我的每个终点处都有短垂线.大写字母的长度应为N像素.

因此,为了在终点(x1,y1)绘制我的"帽"线,我需要找到形成垂直线的两个点,并且其每个点距离点(x1,y1)的N/2个像素.

那么你如何计算一个点(x3,y3),因为它需要与已知线的终点(x1,y1)保持垂直距离N/2,即由(x1,y1)定义的线和(x2,y2)?



1> David Nehme..:

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

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


我认为你的计算或点3和4有一个符号错误.在最后四行中使用(+ - - +)或( - + + - ),不是吗?
在JSFiddle上组合公式的可视化:http://jsfiddle.net/n2gqw8of您可以更改ax,ay和bx的值,通过修改线条并看到相应的垂线调整...

2> Giacomo Degl..:

您只需评估正交值,然后乘以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

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有