title: Eigen::Quaternion FromTwoVectors() does not return a valid quaternion
body: <p>I have two vectors in 3D space and I'm trying to use the function of <code>Eigen::Quaternion FromTwoVectors()</code> to calculate the rotation between them. Despite the fact that there is no unique solution to this problem, I'm getting a quaternion with almost 4 zero values (probably just numerical errors) e.g.: <code>6.95251e-310, 6.90758e-310, 9.88131e-324, 6.90758e-310</code>. And this is certainly not a valid quaternion.</p>
  
  <pre><code>Eigen::Vector3d normal1;
  Eigen::Vector3d normal2;
  Eigen::Quaterniond quat;
  quat.FromTwoVectors(normal1, normal2);
  std::cout &lt;&lt; quat.x() &lt;&lt; quat.y() &lt;&lt; quat.z() &lt;&lt; quat.w() &lt;&lt; std::endl;
  </code></pre>
  
  <p>Using the same vectors to compute AngleAxis and then converting to a quaternion gives valid values:</p>
  
  <pre><code>Eigen::Vector3d axis = normal1.cross(normal2);
  axis.normalize()
  double angle = acos(normal1.dot(normal2));
  Eigen::AngleAxisd aa(angle,axis);
  Eigen::Quaterniond quat(aa);
  std::cout &lt;&lt; quat.x() &lt;&lt; quat.y() &lt;&lt; quat.z() &lt;&lt; quat.w() &lt;&lt; std::endl;
  </code></pre>
  
  <p><code>0.000407447, 0.00621866, 0.0035146, 0.999974</code></p>
  
  <p>What is going wrong here?</p>