Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何求光束从直线的反射角_Java_Math_Geometry_Linear Algebra_Algebra - Fatal编程技术网

Java 如何求光束从直线的反射角

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

我有一条线(x1y1)(x2y2)和一条角度为“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.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)
但是在大多数情况下,反射/撞击的东西可以用矢量分量来解决,而不直接使用角度