如何计算法向量?

2 c++ reflection trigonometry sfml

我正在用激光制作游戏。我需要将激光反射到旋转的物体上,但我找不到正确的法向量。

例子:

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

现在我需要计算法线并将其归一化(我知道如何归一化)。归一化向量应该是 (-1, -1),但是我该如何计算呢?我是否需要使用点积、角度或其他东西?

meo*_*dog 5

假设你有一堵墙,它从点AB

在此处输入图片说明

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

您将需要选择一致的约定,以将任一墙作为CD作为任何墙的法线,这意味着您需要小心墙点的排序

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