如何计算法向量?
How to calculate the normal vector?
我正在用激光制作游戏。我需要将激光反射到旋转的物体上,但找不到正确的法向量。
示例:
- A点(0, 20)到B点(15, 5)。
- 我的速度是 (1, -1) * 速度。
- 从C点(15, 0)到D点(15, 50)的墙。
- 直立的墙。
现在我需要计算法线并将其归一化(我知道如何归一化)。归一化向量应该是 (-1, -1),但我该如何计算呢?我是否需要使用点积、角度或其他东西?
要将向量归一化,请将向量除以其大小...
point A: [0, 20] / root[sqr(0) + sqr(20)]= [(0 / 20), (20 / 20)] = [0, 1]
假设你有一堵墙从点 A
到 B
:
C
相对于AB
方向旋转anti-clockwise90度,D
顺时针。 C
的成分由[Ay - By, Bx - Ax]
给出,D
的成分只是减去这些。
您需要选择一致的约定,将 C
或 D
作为任何墙的法线,这意味着您需要小心 排序 个墙点。
例如对于 A = [0, 20], B = [15, 5]
,正常的 C = [15, 15]
和 D = [-15, -15]
。 D
的规范化版本是 [-1/sqrt(2), -1/sqrt(2)]
而 不是 [-1, -1]
(你 确定 你知道如何正常化?)
我正在用激光制作游戏。我需要将激光反射到旋转的物体上,但找不到正确的法向量。
示例:
- A点(0, 20)到B点(15, 5)。
- 我的速度是 (1, -1) * 速度。
- 从C点(15, 0)到D点(15, 50)的墙。
- 直立的墙。
现在我需要计算法线并将其归一化(我知道如何归一化)。归一化向量应该是 (-1, -1),但我该如何计算呢?我是否需要使用点积、角度或其他东西?
要将向量归一化,请将向量除以其大小...
point A: [0, 20] / root[sqr(0) + sqr(20)]= [(0 / 20), (20 / 20)] = [0, 1]
假设你有一堵墙从点 A
到 B
:
C
相对于AB
方向旋转anti-clockwise90度,D
顺时针。 C
的成分由[Ay - By, Bx - Ax]
给出,D
的成分只是减去这些。
您需要选择一致的约定,将 C
或 D
作为任何墙的法线,这意味着您需要小心 排序 个墙点。
例如对于 A = [0, 20], B = [15, 5]
,正常的 C = [15, 15]
和 D = [-15, -15]
。 D
的规范化版本是 [-1/sqrt(2), -1/sqrt(2)]
而 不是 [-1, -1]
(你 确定 你知道如何正常化?)