Vectors
Normalizing


return to main index



Vector Length

Figure 1 shows a fixed vector with the following coordinates ie. components,
    a[3 1 2]
in other words,
    ax = 3,
    ay = 1,
    az = 2,


Figure 1


The magnitude (length) of the vector is,

    length = sqrt((ax * ax) + (ay * ay) + (az * az)) 
    length = sqrt(9 + 1 + 4) = 3.742

As a short-hand notation the magnitude of a vector is written with two vertical lines,

    |a| = sqrt((ax * ax) + (ay * ay) + (az * az))


Unit Vectors - Normalizing

Operations in 2D and 3D computer graphics are often performed using copies of vectors that have been normalized ie. converted to unit vectors. For example, the tutorial "RSL: Edge Effects" applies normalization before calculating the dot product of two vectors. Normalizing a vector involves two steps:
  1   calculate its length, then,
  2   divide each of its (xy or xyz) components by its length.

Given vector a its xyz components are calculated as follows,

    x = ax/|a|
    y = ay/|a|
    z = az/|a|

As a "worked example" the vector shown in figure 1 has the xyz components of 3, 1, 2 and a length of 3.742. Therefore, a normalized copy of the vector will have components,

    x = 3.0 / 3.742 = 0.802
    y = 1.0 / 3.742 = 0.267
    z = 2.0 / 3.742 = 0.534



© 2002- Malcolm Kesson. All rights reserved.