如何计算法向量?

时间:2018-02-17 14:34:55

标签: c++ reflection sfml trigonometry

我正在用激光进行游戏。我需要针对旋转的物体反射激光,但我找不到正确的法向量。

示例:

  • A点(0,20)到B点(15,5)。
  • 我的速度是(1,-1)*速度。
  • 从C点(15,0)到D点(15,50)的墙。
  • 墙直立。

现在我需要计算正常值并将其标准化(我知道如何规范化)。标准化向量应为(-1,-1),但我该如何计算?我是否需要使用dotproduct,角度或其他东西?

2 个答案:

答案 0 :(得分:2)

假设你有一个从A点到B的墙:

enter image description here

C相对于方向AB处于90度逆时针旋转,D是顺时针方向。 C的组件由[Ay - By, Bx - Ax]提供,D的组件只是减去这些组件。

您需要选择一致的约定,将CD作为任何墙的正常情况,这意味着您需要小心订购墙点。

E.g。对于A = [0, 20], B = [15, 5],正常C = [15, 15]D = [-15, -15]D的规范化版本为[-1/sqrt(2), -1/sqrt(2)] [-1, -1](您确定您知道如何规范化吗?)

答案 1 :(得分:0)

要标准化矢量,您可以将矢量除以其幅度......

{{1}}