// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void OrientationMath::AxisAngletoHomochoric(float w, float n1, float n2, float n3, float& r1, float& r2, float& r3)
{
  // Bring omega into proper range.
  Mod<float> mod;
  w = mod.WrapTwoPI(w);

  float denom = 0.0f;

  denom = (n1 * n1) + (n2 * n2) + (n3 * n3);
  denom = sqrt(denom);
  if(denom == 0.0)
  {
    r1 = 0.0, r2 = 0.0, r3 = 0.0;
    return;
  }
  n1 = n1 / denom;
  n2 = n2 / denom;
  n3 = n3 / denom;
  if (w >= 0.0f && w < DREAM3D::Constants::k_Pi)
  {
    float temp = powf(((0.75f) * (w - sinf(w))), DREAM3D::Constants::k_1Over3);
    r1 = n1 * temp;
    r2 = n2 * temp;
    r3 = n3 * temp;
  }
  else
  {
    float temp = powf(((0.75f) * (DREAM3D::Constants::k_2Pi - w + sinf(w))), DREAM3D::Constants::k_1Over3);
    r1 = n1 * temp;
    r2 = n2 * temp;
    r3 = n3 * temp;
  }
}