给定一条直线的系数 A、B 和 C。
Ax + By + C = 0
我想顺时针或逆时针旋转线条,角度为x,如何实现并得到新系数?(在NetLogo中)
编辑: 把点视为x_0和y_0。
x * A + y * B + C = 0
可能以标准形式呈现为
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
d = x0 * Cos(Theta) + y0 * Sin(Theta) - p
新的方程式将会
x * Cos(Beta) + y * Sin(Beta) - pnew = 0
并保持正常距离:
d = x0 * Cos(Beta) + y0 * Sin(Beta) - pnew
so
pnew = p + x0 * (Cos(Beta)-Cos(Theta)) + y0 * (Sin(Beta)-Sin(Theta))