计算垂直于另一条给定线并居中的线的坐标

Calculating the coordinates of a line vertical and centered to another given line

我有以下内容:

第一行x坐标:0
第一行的y坐标:0
第一行的角度:135deg
第一行的长度:10

到第二行的偏移量:5

首先,我必须计算第一行的 x2 和 y2 坐标,我是这样计算的:

var x2 = length * Math.cos(Math.PI * angle / 180.0);
var y2 = length * Math.sin(Math.PI * angle / 180.0);

现在我得到了 (x1|y1) 和 (x2|y2)。基于此,以及给定的偏移量,我需要计算垂直于第一条线且长度与第一条线相同的线的坐标。我想要实现的是下图,黄线是给定的,绿线是需要的。

我知道我必须使用正弦和余弦,但是我无法获得适用于每个给定角度的公式。如果有人可以提供公式或指导我正确的方向,我将不胜感激。提前致谢

不确定这是最快的实施 但我认为它很容易遵循,并且可以测试更快的例程:

步骤是:

  1. 把线拉回原点
  2. 旋转 90 度
  3. return到原位置
  4. 添加“偏移量”(长度减半)

完整的计算是:

  1. 找到直线 [a, b] = [(x1 + x2)/2, (y1 + y2)/2] 的中心并从两端减去它。你得到 [x'1, y'1] = [x1 - a, y1 - b][x'2, y'2] 同样
  2. 使用2D rotation matrix,90度就是[[0, 1], [-1, 0]] * [x'1, y'1]
  3. [a, b] 添加到两个点
  4. (用theta标记角度,用d标记距离):加上[(a + d)*cos(theta), (b + d)*sin(theta)]得到最终位置