计算垂直于直线的点

发布于 2024-10-20 17:53:24 字数 308 浏览 1 评论 0原文

我有一条由 (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)。

提前致谢!

I have a line L specified by (x1,y1)(x2,y2) and want to calculate the
coordinates of the point that is:

  • located on the normal that intersects L at the half of its length
  • is a certain distance D away from L

Examples:

  • If the line is (x1,a)(x2,a) (horizontal) the coordinates of the
    calculated point would be ((x2-x1)/2,D).
  • If the line is (a,y1)(a,y2) (vertical) the coordinates of the calculated
    point would be (D, (y2-y1)/2).

But i dont know how to calculate the coordinates in a generic way for all
lines regardless of the angle (-Pi to Pi).

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄荷港 2024-10-27 17:53:24

两个点之间的中心由下式给出,

((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)

都满足您的要求的两个点。

The center between both points is given by

((x1+x2)/2, (y1+y2)/2)

while the (unnormalized) normal is

(-(y2-y1), (x2-x1))

If we normalize this vector we get

(-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)

and if we combine both we find the two points

((x1+x2)/2, (y1+y2)/2) +- D * (-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)

which both fulfill your requirements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文