如何找到光束从直线的反射角

how to find the angle of reflection of the beam from the line

我有一行 (x1, y1) (x2, y2) 和一条角度为“a”的光线,我需要找到光线从这条线反射的角度,如下图所示。谢谢

光束起始方向为矢量 Dir (dir.x, dir.y)
给定行的单位正常 N (n.x, n.y)

l = sqrt((y1 - y2)^2 + (x2 - x1)^2)
n.x = (y1 - y2) / l
n.y = (x2 - x1) / l

Dir的反射切向分量取反后,法向分量保持不变,所以我们可以用点积写出新方向的方程:

 dot = dir.x * n.x + dir.y * n.y

 //after reflection
 newdir.x = dir.x - 2 * dot * n.x
 newdir.y = dir.y - 2 * dot * n.y

如果你真的需要角度,使用atan2函数

angle = atan2(newdir.y, newdir.x)

但在大多数情况下 reflection/hitting 可以使用矢量分量解决问题而不直接使用角度