Vector Fun: projection of a vector on another

I just realized that I used a technique – projecting a vector on a line given by another vector – in my last post on ray-tracing that I did not justify in any way.

Look at this picture:


Given vector a and b we are looking for vector b'. We saw in the dot-product article, that we have

 a \cdot b = \left| a \right| \left| b \right| cos \alpha

and of course

 cos \alpha = \frac { \left| b' \right| } { \left| b \right| }

combining these we get

 a \cdot b = \left| a \right| \left| b' \right|

and therefore as

 b' = \frac {\left| b' \right| }{ \left| a \right| } a


 b' = \frac { a \cdot b}{ {\left| a \right|}^{2}} a

which reduces to

 b' = (b \cdot n) n

in the case that  n = a is a unit-vector. This is the result we lacked.