math - 将直线旋转给定角度

标签 math geometry netlogo

给定直线 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/

相关文章:

math - 多边形的交集和并集

c# - 找到完全覆盖矩形集所需的最少固定大小矩形的算法

math - 将球体映射到立方体

android - 自定义圆形 View 。放置 View

NetLogo rnd :weighted-n-of by turtle variable

variables - 对 Netlogo 中的品种使用 "n-of"命令时出错

android - 我如何获得一个矩阵,我在其中平移然后旋转然后平移然后再次旋转?

algorithm - 快速变化检测算法

c - 科学计算::OpenMP 或 Pthreads

java - 自治 java 可执行文件中的 netlogo