37

我目前正在研究 OpenGL 中的光照,它利用了 GLSL 中称为 normalize 的函数。根据 OpenGL 文档,它说它“计算两个向量的归​​一化乘积”。但是,它仍然没有解释“标准化”是什么意思。我曾尝试在 Google 上查找什么是标准化产品,但我似乎找不到任何关于它的信息。谁能解释归一化的含义并提供一些归一化值的示例?

4

3 回答 3

49

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

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

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

一个向量是正常的,如果它的长度是 1。就是这样!

规范化向量意味着改变它,使其指向相同的方向(想想从原点开始的那条线),但它的长度是一。

我们使用法线向量的主要原因是表示一个方向;例如,如果您正在对无限远的光源进行建模,则无法为其提供精确的坐标。但是您可以使用法线向量指示从特定点到哪里找到它。

于 2012-07-25T17:22:51.117 回答
16

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

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

  1. 计算它的长度,然后,
  2. 将它的每个(xyxyz)组件除以它的长度......
于 2012-07-25T07:19:42.780 回答
0

如果您对向量甚至向量代数不太了解,那么解释起来会很复杂。(您可以查看这篇关于向量、法线向量甚至规范化过程等一般概念的文章)查看

但是“规范化”的过程或概念是指使某物标准化或“正常化”的过程。</p>

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

于 2021-03-29T02:25:50.143 回答