两点间连线围绕其中一个点旋转一定角度之后的角度或线

2020-03-29  本文已影响0人  杨闯

在无意之中,想到了一个问题:
知道两个点,一个点是(x_1, y_1),另外一个点是(x_2, y_2),然后想让他俩之间的连线绕着点(x_1, y_1)逆时针旋转一定的角度θ,怎么能够求得旋转后的方向上的任意一个点的坐标。

最后有几种方法,其中一个方法是直接计算,另外一个方法是求得原来的角度再加上旋转的角度求得最后的线,求原来角度的时候,有的是通过arctan进行求得,有的是通过arcsin或arccos求得,如果有哪里不对,敬请指正

首先设两个点分别是 (x_1y_1)和(x_2y_2

sinα = \frac{y_2-y_1}{\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}} = β
cosα = \frac{x_2 - x_1}{\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}} = Ω

直接计算的算法

基本思路是:
1、旋转后的角度为 α + β
2、可以求得
x'_2 = x_1 + c × cos(α + β) = x_1 + c × (cosα ×cosβ - sinα ×sinβ)
y'_2 = y_1 + c × sin(α + β) = y_1 + c × (sinα ×cosβ +cosα × sinβ)

需要求α的算法

直接求α

α = arctan \frac{y_2 - y_1}{ x_2 - x_1 }

推导求

y_2y_1进行比较 (sin结果) x_2x_1进行比较(cos结果) 象限位置
> > 第一象限
> = 垂直向上
> < 第二象限
= > 水平向右
= = 两点重合
= < 垂直向下
< > 第四象限
< = 垂直向下
< < 第三象限

针对以上结果,完全水平活完全垂直的不做任何的计算,那么我们需要对第一、二、三、四象限的进行计算处理。

象限 α的结果
arcsin β 或 arccos Ω
π - arcsinβ 或 arccos Ω
\frac{π}{ 2 } - arcsinβ 或 π + (π - arccos Ω) = 2π - arccos Ω
arcsin β 或 - arccos Ω

求得具体的α之后加上θ角度知道最后的角度,就可以求得最后的线的任意一个点的位置。

所打数学公式参考:https://en.wikibooks.org/wiki/LaTeX/Mathematics

上一篇 下一篇

猜你喜欢

热点阅读