归一化价值意味着什么?

时间:2012-07-25 07:05:33

标签: opengl glsl normalization

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

3 个答案:

答案 0 :(得分:43)

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

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

每个向量都有幅度长度,可以使用毕达哥拉定理找到:|v| = sqrt(x^2 + y^2 + z^2)这基本上是来自原点的一条线的长度{ {1}}到向量表达的点。

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

对矢量进行标准化意味着更改它以使其指向相同的方向(从原点开始考虑该行),但其长度为1。

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

答案 1 :(得分:15)

这是一个数学术语,this link用非常简单的术语解释其含义:

  

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

     
      
  1. 计算其长度,然后,
  2.   
  3. 将其每个(xyxyz)组件除以其长度......
  4.   

答案 2 :(得分:0)

如果您对向量甚至向量代数知之甚少,解释起来会很复杂。 (您可以查看这篇关于向量、法线向量甚至归一化过程等一般概念的文章)Check it

但“规范化”的程序或概念是指使某事标准化或“正常”的过程。

在向量的情况下,让我们暂时假设标准向量的长度为 1。因此,要对向量进行归一化,就是取一个任意长度的向量,并保持它指向同一方向,改变它的长度为 1,将其转化为所谓的单位向量。