【问题标题】:How to find a Parallel line for given A,B coordinates in 2D如何在二维中找到给定 A,B 坐标的平行线
【发布时间】:2018-11-03 15:37:55
【问题描述】:

我有 A(x1,y1) 和 B(x2,y2) 坐标。我有直线的长度和角度。

我需要找到在特定距离处给我 C(x3,y3) 和 D(x4,y4) 坐标的平行线。它是一条斜线。

任何伪代码或数学公式都可以提供帮助。

例如:给定坐标 A(200,0) B(0,450)。线的角度是 113.962 。行长 492.4.

帮我找到距离 A、B 坐标 50 处的 C 和 D 坐标。

请在下面找到图片,它是一条带角度的线。

【问题讨论】:

  • 距离是如何测量的?它是沿 x 轴、y 轴还是任何其他角度?
  • 只需在 a.x 和 b.x 上加 50。结果线将是平行的。
  • 这是非常基本的几何图形。用向量 V 平移 A 和 B 得到 C 和 D。V 的长度是您的距离,V 的角度是您未指定的某个角度(沿 x 轴很简单)。
  • 它是一条角线。不是垂直或水平线。
  • 请找到附件图片@Nelfeal @ bhspencer @ SomeDude。

标签: javascript algorithm math svg geometry


【解决方案1】:

你的线有基点(x1,y1)和方向向量:

(dx, dy) = (x2-x1, y2-y1)

用向量长度规范化这个向量除分量:

len = sqrt((x2-x1)^2 + (y2-y1)^2)
(udx, udy) = (dx / len, dy / len)

垂直向量:

(px, py) = (-udy, udx)  
(note also reverse vector (udy, -udx) to shift onto another side)

距离 dist 处平行线的基点:

(nx, ny) = (x1 -udy * dist, y1 + udx * dist) 

第二点,如果需要的话:

(sx, sy) = (nx + dx, ny + dy)

【讨论】:

  • 我们能找到任何 cos 和 sin 角的公式吗
  • 你能解释一下吗?这个向量的新手。
  • udx, udy 确实是直线倾角的 cos 和 sin,但您不需要明确使用它们。所有公式都完成了。
  • x1 = x + cos(ang) * 距离; y1 = y + sin(ang) * 距离;
  • 有两点不需要角度。另请注意 - 垂直有 交换 组件,一个被否定。
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 2016-04-28
  • 2022-06-28
  • 2022-04-11
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多