title: Maintaining rotation during Quaternion normalization
body: <p>I've been studying Quaternions for an upcoming project and have come across a conceptual problem that I can't wrap my head around. </p>
  
  <p>The way to normalize a quaternion is as follows:</p>
  
  <pre><code>q_mag = sqrt(q0^2+q1^2+q2^2+q3^2)
  q0 = q0/q_mag  
  q1 = q1/q_mag   
  q2 = q2/q_mag  
  q3 = q3/q_mag
  </code></pre>
  
  <p>Straight forward and just like normalizing any other vector. But my question is how does this normalization method retain the same rotation information. Using the definition of a quaternion representing an axis-angle representation like below, </p>
  
  <pre><code>angle = 2 * acos(q0)
  x = qx / sqrt(1-q0*q0)
  y = qy / sqrt(1-q0*q0)
  z = qz / sqrt(1-q0*q0)
  </code></pre>
  
  <p>Since the normalization operation scales the x,y,z values equally, the axis around which you are rotating never changes. But the value of the angle itself changes drasticly with a normalization operation.  </p>
  
  <p>So wouldn't it make more sense to use a method that preserves the value of q0 and only adjusts the other points to reach normalization? </p>