web-dev-qa-db-fra.com

Que signifie normaliser une valeur?

J'étudie actuellement l'éclairage dans OpenGL, qui utilise une fonction dans GLSL appelée normaliser. Selon les documents OpenGL, il dit qu'il "calcule le produit normalisé de deux vecteurs". Cependant, cela n'explique toujours pas ce que signifie "normalisé". J'ai essayé de chercher ce qu'est un produit normalisé sur Google, mais je n'arrive pas à trouver quoi que ce soit à ce sujet. Quelqu'un peut-il expliquer ce que signifie la normalisation et donner quelques exemples d'une valeur normalisée?

37

C'est un terme mathématique et ce lien explique sa signification en termes assez simples:

Les opérations en infographie 2D et 3D sont souvent effectuées à l'aide de copies de vecteurs normalisés, c'est-à-dire. convertis en vecteurs unitaires ... La normalisation d'un vecteur implique deux étapes:

  1. calculer sa longueur, puis,
  2. divisez chacun de ses composants (xy ou xyz) par sa longueur ...
15
momatrix

Je pense que la confusion vient de l'idée de normaliser "une valeur" par opposition à "un vecteur"; si vous ne considérez qu'un seul nombre comme une valeur, la normalisation n'a aucun sens. La normalisation n'est utile que lorsqu'elle est appliquée à un vecteur.

Un vecteur est une séquence de nombres; dans les graphiques 3D, il s'agit généralement d'une coordonnée exprimée par v = <x,y,z>.

Chaque vecteur a un magnitude ou length, qui peut être trouvé en utilisant le théorème de Pythagora: |v| = sqrt(x^2 + y^2 + z^2) Il s'agit essentiellement de la longueur d'une ligne de l'origine <0,0,0> Jusqu'au point exprimé par le vecteur.

Un vecteur est normal si sa longueur est 1. C'est tout!

Normaliser un vecteur signifie le changer pour qu'il pointe dans la même direction (pensez à cette ligne de l'Origine) mais sa longueur est une.

La principale raison pour laquelle nous utilisons des vecteurs normaux est de représenter une direction; par exemple, si vous modélisez une source de lumière à une distance infinie, vous ne pouvez pas lui donner de coordonnées précises. Mais vous pouvez indiquer où le trouver à partir d'un point particulier en utilisant un vecteur normal.

47
benzado