给定直线 A、B 和 C 的系数。
Ax + By + C = 0
我希望以顺时针或逆时针方向按角度旋转线,例如 x。我怎样才能做到这一点,以便获得新的系数?(在 NetLogo 中)
编辑: 抱歉,将点视为 x_0 和 y_0
最佳答案
你的线方程
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 值): 贝塔 = 西塔 + 阿尔法
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))
关于math - 将直线旋转给定角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442437/