给定一个角度,将一条线旋转

3

给定一条直线的系数 A、B 和 C。

Ax + By + C = 0

我想顺时针或逆时针旋转线条,角度为x,如何实现并得到新系数?(在NetLogo中)

编辑: 把点视为x_0和y_0。


1
你必须围绕某个点旋转该线。这个点是什么? - MBo
1个回答

5
你的线性方程式
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

如果您想围绕任意点(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

so

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接