按给定角度旋转一条线

时间:2014-12-12 11:12:48

标签: math geometry netlogo

给出A,B和C行的系数。

  Ax + By + C = 0

我希望以顺时针或逆时针方向按角度旋转 x 。我怎样才能实现这一点,以便获得新的系数?(在NetLogo中)

编辑: 抱歉,请将点视为x_0和y_0

1 个答案:

答案 0 :(得分:4)

你的线方程式

x * A + y * B + C = 0

可能会在normal form中显示为

x * Cos(Theta) + y * Sin(Theta) - p = 0

其中

Theta = ArcTan(B/A)
- OX轴和法线形式坐标原点到线

之间的角度

p = -C/Sqrt(A^2 + B^2) -
从原点到线的距离(正常长度)。

如果要将相对于坐标原点(0,0)的线旋转角度Alpha,只需创建新的等式(注意相同的p值):     Beta = Theta + Alpha

x * Cos(Beta) + y * Sin(Beta) - p = 0

如果要围绕任意点(x0,y0)旋转线: 从这一点到该线的正常距离是

d = x0 * Cos(Theta) + y0 * Sin(Theta) - p

新等式将

x * Cos(Beta) + y * Sin(Beta) - pnew = 0

并保持正常距离:

d = x0 * Cos(Beta) + y0 * Sin(Beta) - pnew

所以

pnew = p + x0 * (Cos(Beta)-Cos(Theta)) + y0 * (Sin(Beta)-Sin(Theta))