What does it mean to normalize a value?

TheAmateurProgrammer picture TheAmateurProgrammer · Jul 25, 2012 · Viewed 35.9k times · Source

I'm currently studying lighting in OpenGL, which utilizes a function in GLSL called normalize. According to OpenGL docs, it says that it "calculates the normalized product of two vectors". However, it still doesn't explain what "normalized" mean. I have tried look for what a normalized product is on Google, however I can't seem to find anything about it. Can anyone explain what normalizing means and provide a few example of a normalized value?

Answer

benzado picture benzado · Jul 25, 2012

I think the confusion comes from the idea of normalizing "a value" as opposed to "a vector"; if you just think of a single number as a value, normalization doesn't make any sense. Normalization is only useful when applied to a vector.

A vector is a sequence of numbers; in 3D graphics it is usually a coordinate expressed as v = <x,y,z>.

Every vector has a magnitude or length, which can be found using Pythagora's theorem: |v| = sqrt(x^2 + y^2 + z^2) This is basically the length of a line from the origin <0,0,0> to the point expressed by the vector.

A vector is normal if its length is 1. That's it!

To normalize a vector means to change it so that it points in the same direction (think of that line from the origin) but its length is one.

The main reason we use normal vectors is to represent a direction; for example, if you are modeling a light source that is an infinite distance away, you can't give precise coordinates for it. But you can indicate where to find it from a particular point by using a normal vector.