找到与已知线形成角度θ的线

时间:2012-12-05 22:36:05

标签: math geometry

我有一行( a b )到( x y ),我想画一条从( x y )开始的线,长度为l,与原线成一个θ角。

如何计算此新线路端点的坐标?见图:

2 个答案:

答案 0 :(得分:2)

好的,经过大量的涂鸦后,我想出了这个:

虚线表示平行于x轴和y轴的线。

m = x - a

n = y - b

α= tan -1 (n / m)

β=α - θ

p =ℓcosβ

q =ℓsinβ

c = x + p

d = y + q

答案 1 :(得分:2)

使用矢量代数来做这种事情几乎总是比较简单,而不是笛卡尔坐标。让我们从标记点开始:

enter image description here

设R(θ)为逆时针旋转θ弧度的矩阵

然后计算:

v = B - A (从 A B 的矢量) )

v = v / | v | ( v 方向的单位向量)

ŵ = R(-θ) v BC 方向的单位矢量;旋转顺时针< / em>,所以我们这里需要R(-θ),而不是R(θ))

w =ℓŵ BC 方向的长度为l的向量)

C = B + w

这种方法避免了计算反正切的需要,这需要一些小心(如果天真地完成,当 B 垂直高于或低于 A 时会遇到麻烦;但大多数语言都有像atan2这样的函数来处理这种情况。)

在任何带有矢量库的合理编程语言中,您都应该能够将其写成单行,也许是这样的:

C = B + (B - A).unit().rotate(-theta) * l