计算垂直于另一条给定线并居中的线的坐标
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)。基于此,以及给定的偏移量,我需要计算垂直于第一条线且长度与第一条线相同的线的坐标。我想要实现的是下图,黄线是给定的,绿线是需要的。
我知道我必须使用正弦和余弦,但是我无法获得适用于每个给定角度的公式。如果有人可以提供公式或指导我正确的方向,我将不胜感激。提前致谢
不确定这是最快的实施
但我认为它很容易遵循,并且可以测试更快的例程:
步骤是:
- 把线拉回原点
- 旋转 90 度
- return到原位置
- 添加“偏移量”(长度减半)
完整的计算是:
- 找到直线
[a, b] = [(x1 + x2)/2, (y1 + y2)/2]
的中心并从两端减去它。你得到 [x'1, y'1] = [x1 - a, y1 - b]
和 [x'2, y'2]
同样
- 使用2D rotation matrix,90度就是
[[0, 1], [-1, 0]] * [x'1, y'1]
- 将
[a, b]
添加到两个点
- (用
theta
标记角度,用d
标记距离):加上[(a + d)*cos(theta), (b + d)*sin(theta)]
得到最终位置
我有以下内容:
第一行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)。基于此,以及给定的偏移量,我需要计算垂直于第一条线且长度与第一条线相同的线的坐标。我想要实现的是下图,黄线是给定的,绿线是需要的。
我知道我必须使用正弦和余弦,但是我无法获得适用于每个给定角度的公式。如果有人可以提供公式或指导我正确的方向,我将不胜感激。提前致谢
不确定这是最快的实施 但我认为它很容易遵循,并且可以测试更快的例程:
步骤是:
- 把线拉回原点
- 旋转 90 度
- return到原位置
- 添加“偏移量”(长度减半)
完整的计算是:
- 找到直线
[a, b] = [(x1 + x2)/2, (y1 + y2)/2]
的中心并从两端减去它。你得到[x'1, y'1] = [x1 - a, y1 - b]
和[x'2, y'2]
同样 - 使用2D rotation matrix,90度就是
[[0, 1], [-1, 0]] * [x'1, y'1]
- 将
[a, b]
添加到两个点 - (用
theta
标记角度,用d
标记距离):加上[(a + d)*cos(theta), (b + d)*sin(theta)]
得到最终位置