Que signifie normaliser une valeur?
j'étudie actuellement l'éclairage à OpenGL, qui utilise une fonction en GLSL appelée normalize. Selon OpenGL docs, il est 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é est sur Google, mais je n'arrive pas à trouver quoi que ce soit. Quelqu'un peut-il expliquer ce que signifie la normalisation et donner quelques exemples d'une valeur normalisée?
2 réponses
C'est un terme mathématique et ce lien explique sa signification en termes très simples:
les opérations en infographie 2D et 3D sont souvent effectuées en utilisant des copies de vecteurs qui ont été normalisés, c'est-à-dire: converti en vecteurs unitaires... La normalisation d'un vecteur implique deux étapes:
- calculer sa longueur, puis,
- divisez chacun de ses (
xy
ouxyz
) composants par sa longueur...
je pense que la confusion vient de l'idée de normaliser "une valeur" par opposition à "un vecteur"; si vous pensez juste à 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; en graphique 3D, il s'agit généralement d'une coordonnée exprimée par v = <x,y,z>
.
chaque vecteur a un grandeur ou longueur, qui peut être trouvé en utilisant le théorème de Pythagore: |v| = sqrt(x^2 + y^2 + z^2)
C'est en gros la longueur d'une ligne à partir de l'origine <0,0,0>
au point exprimé par le vecteur.
vecteur normal si sa longueur est de 1. Ça y est!
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 lumineuse qui est une à une distance infinie, on ne peut pas donner de coordonnées précises. Mais vous pouvez indiquer où le trouver à partir d'un point particulier en utilisant un vecteur normal.