  Two-dimensional almost-Riemannian structures are generalized Riemannian
structures on surfaces for which a local orthonormal frame is given by a Lie
bracket generating pair of vector fields that can become collinear.
Generically, there are three types of points: Riemannian points where the two
vector fields are linearly independent, Grushin points where the two vector
fields are collinear but their Lie bracket is not, and tangency points where
the two vector fields and their Lie bracket are collinear and the missing
direction is obtained with one more bracket. In this paper we consider the
problem of finding normal forms and functional invariants at each type of
point. We also require that functional invariants are "complete" in the sense
that they permit to recognize locally isometric structures. The problem happens
to be equivalent to the one of finding a smooth canonical parameterized curve
passing through the point and being transversal to the distribution. For
Riemannian points such that the gradient of the Gaussian curvature $K$ is
different from zero, we use the level set of $K$ as support of the
parameterized curve. For Riemannian points such that the gradient of the
curvature vanishes (and under additional generic conditions), we use a curve
which is found by looking for crests and valleys of the curvature. For Grushin
points we use the set where the vector fields are parallel. Tangency points are
the most complicated to deal with. The cut locus from the tangency point is not
a good candidate as canonical parameterized curve since it is known to be
non-smooth. Thus, we analyse the cut locus from the singular set and we prove
that it is not smooth either. A good candidate appears to be a curve which is
found by looking for crests and valleys of the Gaussian curvature. We prove
that the support of such a curve is uniquely determined and has a canonical
parametrization.
