title: When to Normalize a Vector?
body: <p>I am learning XNA and in almost all of the educational kits found on <a href="http://creators.xna.com/en-US/" rel="noreferrer">http://creators.xna.com/en-US/</a>. I always see a call to Normalize() on a vector. I understand that normalize basically converts the vector into unit length, so all it gives is direction. </p>
  
  <p>Now my question is When to normalize and what exactly does it help me in. I am doing 2D programming so please explain in 2D concepts and not 3D.  </p>
  
  <p>EDIT: Here is code in the XNA kit, so why is the Normalize being called?</p>
  
  <pre><code>if (currentKeyboardState.IsKeyDown(Keys.Left) ||
              currentGamePadState.DPad.Left == ButtonState.Pressed)
          {
              catMovement.X -= 1.0f;
          }
          if (currentKeyboardState.IsKeyDown(Keys.Right) ||
              currentGamePadState.DPad.Right == ButtonState.Pressed)
          {
              catMovement.X += 1.0f;
          }
          if (currentKeyboardState.IsKeyDown(Keys.Up) ||
              currentGamePadState.DPad.Up == ButtonState.Pressed)
          {
              catMovement.Y -= 1.0f;
          }
          if (currentKeyboardState.IsKeyDown(Keys.Down) ||
              currentGamePadState.DPad.Down == ButtonState.Pressed)
          {
              catMovement.Y += 1.0f;
          }
  
  
          float smoothStop = 1;
  
  
          if (catMovement != Vector2.Zero)
          {
              catMovement.Normalize();
          }
  
          catPosition += catMovement * 10* smoothStop;
  </code></pre>
  
  <p>}</p>