归一化价值意味着什么?

The*_*mer 37 opengl glsl normalization

我目前正在研究OpenGL中的照明,它使用GLSL中的一个函数,称为normalize.根据OpenGL文档,它说它"计算两个向量的标准化乘积".但是,它仍然无法解释"正常化"的含义.我已经尝试过在Google上查找标准化产品,但我似乎无法找到任何相关信息.任何人都可以解释正常化的含义并提供一些标准化值的例子吗?

ben*_*ado 48

我认为混淆来自于将"一个价值"归化为"一个载体"而不是"一个载体"的想法; 如果您只想将一个数字视为一个值,则规范化没有任何意义.标准化仅在应用于矢量时有用.

向量是一系列数字; 在3D图形中,它通常是表示为的坐标v = <x,y,z>.

每个向量都有一个幅度长度,可以使用毕达哥拉定理找到:|v| = sqrt(x^2 + y^2 + z^2)这基本上是从原点<0,0,0>到向量表示的点的直线长度.

如果长度为1,则向量是正常的.就是这样!

归一化矢量意味着改变它以使其指向相同的方向(从原点开始考虑该线)但其长度为1.

我们使用法向量的主要原因是表示方向; 例如,如果您要建模距离无限远的光源,则无法为其提供精确坐标.但是您可以使用法线向量指示从特定点找到它的位置.

  • 归一化确实对单个值有意义。这就是 sign(x) 的作用。 (2认同)
  • 感谢您的确认。当我说值时,我基本上是指向量,但我不确定整数/浮点数是否也可以标准化,因此术语值假设表示向量和整数和浮点数。 (2认同)

小智 15

这是一个数学术语,这个链接用非常简单的术语解释了它的含义:

2D和3D计算机图形中的操作通常使用已经标准化的矢量的副本来执行,即.转换为单位向量...对向量进行归一化包括两个步骤:

  1. 计算它的长度,然后,
  2. 按其长度划分每个(xyxyz)组件...