In many applications, we need to find the points (curves) where two curves (surfaces) intersect, for example in constructing a countour map to graphically represent a prescribed surface o hypersurface, in computing silhouettes, in performing Boolean operations on solid bodies, in constructing smooth blending curves and surfaces, in finding offset curves and surfaces, etc.

A good (surface) intersection algorithm should have the following properties:

- accuracy, in the usual numeric sense;
- robustness, in the sense that all intersections are correctly identified, even where they decompose into pieces;
- speed, in particular in interactive setting;
- self control, in the sense that it does not require help from a user.

Tipically, a numerical algorithm is efficient, but is not fully robust and so may fail in certain cases. Furthermore, the accuracy a numerical method can deliver varies with the surface degree, with the local surface geometry at the intersection curve, and with the angle at which the local surface intersect. Algorithms based on exact arithmetic, on the other hand, are fully robust and accurate, but are normally slow. The difficulty of the intersection problem, and the type of algorithm which best suits it, depends also on the general form of the curves or surfaces we are dealing with (implicit, explicit, parametrized), along with their particular properties (special or free-form).

A CCI (Curve/Curve Intersection) or SSI (Surface/Surface Intersection) problem can be approached with a variety of different techniques, including numerical, analytic, geometric, and algebraic methods, and using various methods such subdivision, tracing, and discretization. While the classic algorithms of the first generation are mostly based on just one method, more recently the tendency is to combine two or more methods into a multi-step method or so called

In our research activity we dealed with the NURBS SSI problem; we experimented some known approaches in literature and finally, as our best result for NURBS, we proposed a modified version of the marching method given in Barnhill, Farin, Jordan, Piper "Surface/surface intersection" CAGD (1987), specialized and optimized for NURBS surfaces. The balance between robustness and efficiency, an open question in SSI algorithms, was the main contribution of that work. This proposal is the SSI algorithm used in the

Glass/Glass intersection

First Glass domain

Second Glass domain

Bottle/Bottle intersection

Bottle domains

In the following figures we consider the bottle/plane intersection computed by our SSI algorithm. They compare the intersection between the two well-parametrized surfaces (fig.1) with the intersection between the same surfaces, in which the bottle surface is badly parametrized; in fact it is built as a revolving surface with a badly parametrized circular trajectory curve (fig.2). In the second case our algorithm presents an increased computational cost due to the fact that the solution for the parametric domain shown in fig.2 is given by a less smooth curve than in the first case (see fig.1). In this situation the marching phase encounters problems in the spans of higher curvature making it impossible to find all the intersection points to the required tolerance.

Fig.1 Fig.2

This our experience where working with badly parametrized curves or surfaces can be disadvantageous was the motivation to deal with the problem of parametric NURBS curve (surface) reparametrization. This consists in changing the current parameter of a curve with another parameter using a reparametrization function. It should be noted that the shape of the curve remains unchanged during this process; only the way the curve is described is altered. Follows an example.

NURBS periodic curve of 3 degree with its control points.

drawing in dots relating to the initial parametrization.

drawing in dots relating to a reparametrization.

As well known, the mathematical nature of the intersection problem is very simple when one plane curve o surface is given implicitly while the other is given in parametric form. In view of this, if both curves or surfaces are given in parametric form that is the more useful rapresentation in CAGD, it is natural to try to convert one of them to implicit form. In the literature, this idea, which comes from algebraic geometry is called implicitization. Because of its algebraic complexity, implicitization for curves or surfaces via parametric elimination can usually be done only with the help of formula manipulation such as Mathematica. In addition, for high polynomial degree, the algebraic method leads to significant numerical problems.

For example to intersect curves of degree n we need the expansion of a determinant leading to an equation of degree n^2, whose zero are to be found. Thus the available software for finding zeros of polynomials has an essential influence on the robustness, accuracy and efficiency of the algorithm. Because of the associated numerical problems, at the moment of aour research, results using known algorithms for n>=5 have not yet been obtained.

Recently we have proposed a suitable realization of the fast fraction free algorithm proposed in Bini, Gemignani, "Fast fraction-free triangularization of Bezoutians with applications to sub-resultant chain computation", LAA (1998), for the triangulation of a Bezout matrix with integer entries. This algorithm has been applyed successfully to the rational Bezier CCI problem working with great accuracy and avoiding the need for symbolic computation.

As already noted, using double precision arithmetic, there is an upper limit to the degree of the curves to be intersected. So our proposal, for planar curves of degree >5, uses the GNU Multiple Precision arithmetic library, which provides optimized tools to perform floating point arithmetic with arbitrarily high precision.

CCI example; the two curves have respectively 5 and 8 degrees.

The next steps are to extend our approach for planar curve of any degree and to other intersection problems in CAGD, from ray/surface intersection, that is the main computational problem in a ray-tracing algorithm, to surfaces/surfaces intersection.

**G.Casciola, S.De Santis, R.Quadalti, Algoritmi paralleli per il problema NURBS Surface/Surface Intersection**, Dipartimento di Matematica, Universita di Bologna, (1992)**G.Casciola, S.Morigi, Il problema SSI nella modellazione solida con superfici NURBS**, Atti dell'Accademia delle Scienze dell'Istituto di Bologna, Serie V, n.6 (1995)**G.Casciola, S.Morigi, Reparametrization of NURBS curves**, International Journal of Shape Modeling, vol.2 n.2\&3 (1996)**G.Casciola, F.Fabbri, L.B.Montefusco, An Application of Fast Factorization Algorithms in Computer Aided Geometric Design**, submitted to Linear Algebra and its Applications, (2001)