Java 如何求光束从直线的反射角
我有一条线(x1,y1)(x2,y2)和一条角度为“a”的光线,我需要找到光线从这条线反射的角度,如下图所示。谢谢波束起始方向是矢量方向Java 如何求光束从直线的反射角,java,math,geometry,linear-algebra,algebra,Java,Math,Geometry,Linear Algebra,Algebra,我有一条线(x1,y1)(x2,y2)和一条角度为“a”的光线,我需要找到光线从这条线反射的角度,如下图所示。谢谢波束起始方向是矢量方向(方向x,方向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
(方向x,方向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)
但是在大多数情况下,反射/撞击的东西可以用矢量分量来解决,而不直接使用角度