如何从[闭合]线找到光束的反射角

问题描述 投票:-3回答:1

我有一条线(x1y1)(x2y2)和角度为“ a”的光线,我需要找到光线从这条线的反射角度,如下图所示。谢谢enter image description here

java math geometry linear-algebra algebra
1个回答
0
投票

光束开始方向是矢量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

[

的反射切向分量反转后,法向分量保持不变,因此我们可以使用点积写出新方向的方程: 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)

但是在大多数情况下,反射/击中的东西可能使用矢量分量来解决,而无需直接使用角度
© www.soinside.com 2019 - 2024. All rights reserved.