## Deliverables

The approximate implicitization method, developed by the project partner at Johannes Kepler University `Linz', has been implemented in C++. The `Linz' method is characterized by the simultaneous approximation of sampled point data pi (xi, yi, zi) and estimated normals ni at these points.
The method produces an approximate implicit representation of the form:
f(x, y, z) = sum (C_i x B_i) with basis functions B_i and a certain coefficients C_i. This method is fully general, i.e., it can be applied to any space of functions. For practical applications, however, fast evaluation of basis functions is important. For this reason we implemented the algorithm for using only polynomial function, namely, Tetrahedral Bèzier patch, Tensor product Bèzier patches, and Tensor product B-splines.
We implemented a prototype, which is used as a stand-alone version for experimental purposes. It can be run from a Linux shell using the parameters:
Offset OffsetDistance Basis Degree Cellsize [nonstop] [debug]'.
The parameters have the following meaning:
The input file including the full patch.
Offset: an intger switch whether to approximate an offset surface, set to be 0 (no offset) 1 (offset one side), 2 (offset double sides).
OffsetDistance: the offset distance in the case of offset surface.
Basis: an integer set to be 1 (Tensor product B-splines), 2 (Tensor product Bèzier) or 3 (Tetrahedral Bèzier).
Degree: the degree of the basis.
[Nonstop]: an integer switch the user input from the keyboard during the running.
[Debug]: an integer control the debug messegs: 0 no, 1 part, 2 full.
We are planning to make the source code available as Open Source, from the project web page.

A prototype toolkit for surface intersection and surface self-intersection has been developed that combine the uses of approximate implicitization and recursive subdivision algorithms.
The toolkit better solves the challenges of singular and near singular intersections, situations where the surfaces are parallel or near parallel along the intersection toolkit. These situations are not properly handled in traditional intersection algorithms in CAD.
The toolkit introduce the possibility of finding the topology and geometry of self-intersection curves in surfaces. Functionality not available in CAD-systems before the GAIA II project.
By the end of the project the stability of the toolkit was not at an industrial level. The computational speed for self-intersection detection in surfaces with ridges of vanish surface normals was much too slow for industrial use.
The ability to find and describe singular and near singular intersections and self-intersections represents a significant improvement in intersection algorithm technology.

Wider acceptance. The prototype for approximate implicitization is a scientific result introducing a numeric approach to implicitization of rational parametric surface instead of the traditional approaches requiring symbolic computations and exact arithmetic. The general idea of approximate implicitization was introduced in the Dr. Philos thesis from 1997 of Tor Dokken (Coordinator of the GAIa II project) and has been further elaborated in the GAIA II project. Approximate implicitization is at the end of the GAIA II project beginning to be accepted as a well documented approach also within applied real algebraic geometry. Achievements during GAIA II.
At the start of the GAIA II project approximate implicitization was dependent on the use of the Bernstein basis for the rational parametric manifold to be approximated.
This dependence on the Bernstein basis forced the central matrices to be built to use multiplication of polynomials. During the project the dependence on the Bernstein basis for practical implementation has been removed, and the approach can now be built on numeric integration, that give smaller matrices. At the end of the project we have understood why the use of the Bernstein basis give matrices with well distributed singular values, although we have not have time to publish this yet. It also seems that the theory behind approximate implicitization can give new insight into the convergence of rational parametric approximation. However, more research is needed to final establish this.
Software implemented:
A number of software prototypes related to approximate implicitization have been developed during the project:
- The traditional approach with multiplication of polynomials.
- A sampling based approach.
- An approach for piecewise approximate implicitization.
These best working of these prototypes will be made available as open source software under the GNU GPL license.
Dissemination potential:
The result will be disseminated through:
- Conference presentations and paper, a number of these have already taken place, more are planned.
- Opens Source GNU GPL License for non-commercial use.
- Commercial licensing.
Use of the result and expected benefits:
We have already demonstrated the usefulness of the result with respect to separating near parallel curve and surfaces in CAD intersection algorithms, and the potential for supporting detection of self-intersection in CAD-curves and surfaces.
There is, however, a not exploited potential with respect to shape design, where first a shape can be sketched using traditional CAD-techniques, the approximate implicitization can be used to catch the design intent and for modification of shape. This approach can help us solve the dependence of CAD-surface design on planar curve, and also help us design and modify 3D freeform curves.
By making the implementation of the approach available under the GNU GPL license we hope to further promote the approach for academic studies as well as for industrial testing.
Documentation:
The documentation and software of the software prototype will be made avaiable on the web-link: www.sinter.no/IST_GAIA

This toolkit is intended to experiment on new algorithms in CAGD by using simultaneously algebraic, geometrical and numerical techniques.
It will be presented as a new Maple toolbox and its use will be web provided under request.
The main capabilities of this toolbox are:
Generation of polynomial and rational b-spline curves and surfaces:
- Reading IGES/VDA format
- Plotting IGES/VDA format
Polynomial and rational b-spline curve/surface manipulation Numerical generation of polynomial and rational B-spline curves and surfaces.
Computation of the B-spline curve/surfaces derivatives, using:
- Basis function method
- Control point method.
- Knot vector refinement.
- Bezier decomposition.
- Approximate implicitation.
- Offset computations.
- Approximation of rational B-spline curves/surfaces with polynomial ones, degree raising.
A small cagd system with exact/mixed arithmetic Experimentations with precision by using symbolic and numerical techniques.
Exact and generic implicititation.
- A-splines manipulation.
- Topologically reliable computation of f(x,y)=0 and g(x,y,z)=0.
- Symbolic/Numerical Polynomial System Solving (connection to external software in some cases).
Curve and surface intersections:
- Implicit-implicit
- Parametric-implicit
- Parametric-parametric
- Tangential intersections curve tracing through ode numerical solving Code generation (C, Visual Basic, ...) when possible.

To use algebraic curves and surfaces in CAGD one needs to know about their shape: topology, singularities, selfintersections. Most of this kind of classification theory is performed for algebraic curves and surfaces defined over the complex numbers, i.e., one considers complex (instead of only real) solutions to polynomial equations in two or three variables (or in three or four homogeneous variables, if the curves and surfaces are considered in projective space). Complete classification results exist only for low degree varities and mostly only in the complex case. A simple example, the classification of conic sections, illustrates well that the classification over the real numbers is much more complicated than over the real numbers.
We have collected known results about such classifications, especially what is known for real curves and surfaces of low degree. Of particular interest in CAGD are parameterizable (i.e. socalled rational) curves and surfaces, and we have made explicit studies of various such objects. These objects, or patches of these objects, are potential candidates for approximate implicitization problems. For example, when the rough shape of a patch to be approximated is known, one can choose from a "catalogue" what kind of parameterized patch that is suitable - this eliminates many unknowns in the process of finding an equation for the approcximating object and will therefore speed up the application.
In addition to the survey of known results, particular objects that have been studied are:
- Monoid curves and surfaces, especially quartic monoid surfaces
- Tangent developables
- Triangle and tensor surfaces of low degree of low (bi)degrees
We have collected known results about such classifications, especially what is known for real curves and surfaces of low degree. Of particular interest in CAGD are parameterizable (i.e. socalled rational) curves and surfaces, and we have made explicit studies of various such objects. These objects, or patches of these objects, are potential candidates for approximate implicitization problems. For example, when the rough shape of a patch to be approximated is known, one can choose from a "catalogue" what kind of parameterized patch that is suitable - this eliminates many unknowns in the process of finding an equation for the approximating object and will therefore speed up the application.
In addition to the survey of known results, particular objects that have been studied are:
- Monoid curves and surfaces, especially quartic monoid surfaces.
- Tangent developables.
- Triangle and tensor surfaces of low degree of low (bi)degrees.

The use of triangulation based methods for intersection is based on the assumption that it is possible to triangulate the surfaces dense enough to ensure that all intersection curves are found. In the case of transversal intersections, when the normals of the surfaces intersected are not near parallel along the intersection curve, such methods work well.
However, when the intersection is singular or near singular along the intersection triangulation based intersection methods will easily loose some intersections and produce false intersections. The main advantage of triangulation based intersection methods is speed, and in most cases corrects results when transversal intersections are sought.
The reference method in GAIA II has enabled the industrial partner think3 to develop the user interface, test and demonstrate the new intersection functionality before the more advance intersection algorithms are available at the end of the project. Thus the reference method has been an important tool for preparing the industrial testing of intersection algorithms in GAIA.

Computational performance growth by a factor of 10000x since 1990.
CAD-systems are to a great extent based on research ideas dating back to the middle of the 1980s, standardized in IS= 10303 (STEP) at the start of the 1990s. Solutions chosen were aimed at what was possible to compute on industrial type computers around 1990. These were processors running at typically 30Mz, with 32Mbyte memories. In the middle of 2005, PC runs typically on 3GHZ, with Gbyte memories.
Thus resources are 100x more powerful than in 1990. While 0.2 floating point instructions could be performed in a clock cycle in 1990, now typically 4 floating point operations can be performed in a clock cycle. Thus the computational performance has grown by a factor of 1000. The form 2003 programmable graphics cards are available offering for a low cost typically 10x more computational performance than a 3GHz CPU of 2005. Thus since 1990 the computational power available for the PC-user has grown by a factor of 10 000.
GAIA II has addressed new computational demanding approaches to challenges within CAD.
In the project we have addressed uses of advanced mathematics results and researched new approaches that can address the shortcomings of current CAD-technology. Such advanced approaches combine knowledge from classical algebraic geometry and Computer Aided Geometric Design (CAGD). We have gained experience on which approaches are feasible, and approaches that should not be followed. For those deciding on CAD-system development and new technologies to be integrated, the knowledge from GAIA II can be very valuable, to ensure that proper directions are followed in further development.
- Keywords related to the knowledge.
- New methods for resultants.
- Multiple approaches to approximate implicitization.
- How to use approximate implicitization in CAD-systems in general.
- Use of approximate implicitization in recursive intersection algorithms.
- The feasibility of performing self-intersection check on CAD-surfaces.
- The configuration and structure of typical CAD-surface self-intersections.
- Knowledge of classification from algebraic geometry relevant in CAD-systems.