Math 找到一条形成角度的线θ;用一条已知的线

Math 找到一条形成角度的线θ;用一条已知的线,math,geometry,Math,Geometry,我有一条从(a,b)到(x,y)的线,我想画一条从(x,y)开始的线,长度为ℓ, 与原始直线成θ角 如何计算这条新线端点的坐标?见下图: 好的,在大量的涂鸦之后,我想到了这个: 虚线表示平行于x轴和y轴的线 m=x− a n=y− b α=tan−1(不适用) β=α− θ p=ℓ cosβ q=ℓ sinβ c=x+p d=y+q好的,在大量的涂鸦之后,我想到了这个: 虚线表示平行于x轴和y轴的线 m=x− a n=y− b α=tan−1(不适用) β=α− θ p=ℓ cosβ q=ℓ

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

如何计算这条新线端点的坐标?见下图:


好的,在大量的涂鸦之后,我想到了这个:

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

m=x− a

n=y− b

α=tan−1(不适用)

β=α− θ

p=ℓ cosβ

q=ℓ sinβ

c=x+p


d=y+q

好的,在大量的涂鸦之后,我想到了这个:

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

m=x− a

n=y− b

α=tan−1(不适用)

β=α− θ

p=ℓ cosβ

q=ℓ sinβ

c=x+p


d=y+q

对于这类问题,使用向量代数几乎总是比笛卡尔坐标更简单。让我们从标记点开始:

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

然后计算:

v=BA(从AB的向量)

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

ŵ=R(−θ) (沿BC方向的单位向量;你的旋转是顺时针的,所以我们需要R(−θ) 这里不是R(θ))

w=ℓ ŵ(长度向量ℓ 在BC的方向

C=B+w

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

在任何带有向量库的合理编程语言中,您都应该能够将其作为一行程序编写,可能如下所示:

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

对于这类事情,使用向量代数几乎总是比笛卡尔坐标更简单。让我们从标记点开始:

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

然后计算:

v=BA(从AB的向量)

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

ŵ=R(−θ) (沿BC方向的单位向量;你的旋转是顺时针的,所以我们需要R(−θ) 这里不是R(θ))

w=ℓ ŵ(长度向量ℓ 在BC的方向

C=B+w

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

在任何带有向量库的合理编程语言中,您都应该能够将其作为一行程序编写,可能如下所示:

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

你能算出第一条线和y轴之间的角度吗?如果你知道的话,你能算出未知的坐标吗?你能算出第一条线和y轴之间的角度吗?如果你知道,你能计算出未知的坐标吗?谢谢你的编辑。你用什么来创作这幅图?谢谢你的编辑。你用什么来创作这幅图?谢谢