A method to compute the Canonical Form.

Assume the equation of the conic curve is:
    a_11x^2 + a_12xy + a_22y^2 + a_13x + a_23y + a_33 = 0

We call f the left-hand side of the equation. We first define a symmetric matrix A out of the 4 coefficients of degree 2, in this way.

        A = (      a  )         12  a     ---   11    2   a   12  ---   a   2     22    
        
The Conic is an ellipse, parabola, hyperbola, according if det(A) > 0, det(A) = 0, det(A) < 0. We will now explain how to compute:
- the the rotation sos1, making the Conic horizontal (vertical);
- the translation sos2, moving the center (vertex) of the Conic into the origin of axes.
Equivalently, sos1 removes the monomial a_12xy, while sos2 removes also the degree 1 monomials a_13x, a_23y (the degree 0 monomial a_33 for a parabola).

   The first step is to switch from f to -f in some cases.
   Taking the opposite of the polynomial f. We have first to switch from f to -f, in three cases:
     (a) when the Conic is an ellipse and  a_33 (the numerical term of the equation) is < 0.
     (b) when the Conic is a parabola and the trace of A (=the sum of elements in the main diagonal of A) is negative;
     (c) when the Conic is an hyperbola and  a_33 (the numerical term of the equation) is > 0.
  Without this switch, ellipses and hyperbolas would be vertical, while parabolas would horizontal: the opposite of our choice.

Computing the rotation sos1. We compute first the Eigenvector av of A corresponding to the largest Eigenvalue of A. Then we define the norm 1 version of av by P = av/||av||. Eventually, the rotation sos1 is defined by
                        (x,y)     |->     (xP_1 - yP_2,  xP_1+ yP_2)

Computing the translation sos2. We apply a translation x|->x-a, y|->y-b to the conic. Then we force, in the resulting equation, the degree 1 monomials a_13x, a_23y to be 0 for an ellipse or hyperbola (the monomial a_12xy is already gone).  We force the degree 0 monomial a_33 to be 0 for a parabola. The pair a, b solving this condition defines a translation sos2 as required.


Created by Mathematica  (August 4, 2004)