## Section: New Results

Keywords : C++ standardization, SCILAB, PYTHON, CORE, CGAL packages.

### Software

#### Generic programming and the CGAL library

Participant : Monique Teillaud.

In collaboration with Efi Fogel (University of Tel-Aviv)

This work [28] discusses geometric programming, and shows how the generic programming paradigm is used in cgal to overcome problems encountered when implementing effective computational geometry algorithms.

#### CG-LAB :an interface between CGAL and SCILAB

Participants : Naceur Meskini, Sylvain Pion.

We have continued the implementation of a scilab toolbox dedicated to geometric computing, based on cgal , named CGLAB. A third release 1.1 of this toolbox has been made in 2006. It provides the basic Delaunay triangulations in any dimension, various 2D meshing algorithms, 2D convex hull computations, 2D stream lines placements, 2D and 3D function interpolation and 3D isosurface mesh generation. CGLAB is available under the Open Source LGPL license, and is subject to the constraints of the underlying cgal packages. The web site is http://cglab.gforge.inria.fr/ .

#### CGAL-PYTHON: PYTHON bindings around CGAL

Participants : Naceur Meskini, Sylvain Pion.

We have started the implementation of Python bindings around cgal . python is a powerful, general purpose, interpreted language, which is increasingly used in scientific areas such as molecular biology, and various application areas. A first beta release 0.9 of this software has been made available in 2006. It provides bindings around several cgal packages: 2D and 3D triangulations, Delaunay triangulations, 2D constrained triangulations, 2D mesh generator, 2D and 3D Alpha shapes, 3D Polyhedron, 2D convex hull, several geometric optimization algorithms, and the 2D and 3D kernel. CGAL-PYTHON is available under the Open Source LGPL license, and is subject to the constraints of the underlying cgal packages. The web site is http://cgal-python.gforge.inria.fr/ .

#### C++ standardization of interval arithmetic

Participant : Sylvain Pion.

In collaboration with H. Brönnimann (Polytechnic University Brooklyn), and G. Melquiond (ARENAIRE).

We have submitted a revision of our proposal of specification of interval arithmetic [35] , [36] , [17] to the C++ standardization committee. We hope that by having this tool standardized, better ans faster implementations will exist, and we also hope that certified computations will be considered by more programmers. Some industry members of the C++ standardization committee like Sun Microsystems are also very interested in getting interval arithmetic standardized.

Our proposal is a basic template class parameterized by a floating point type, and provide some functions around it. Due to implementation cost constraints, we had to make choices between the simplicity of the implementation, and functionality. This appears for example in the choice we made for the specification of comparison operators between intervals. An accompanying proposal has also been drafted in the process, specifying the interface for doing multi-valued logic [68] . We have presented our proposals in front of the C++ standardization committee (ISO WG21), where they received good support so far.

#### New CGAL package for skin surfaces

Participant : Nico Kruithoff.

Skin surfaces, introduced by Edelsbrunner have a rich and simple combinatorial and geometric structure that makes them suitable for modeling large molecules in biological computing. Meshing such surfaces is often required for further processing of their geometry, like in numerical simulation and visualization.

A skin surface is defined by a set of weighted points (input balls) and a scalar called the shrink factor. If the shrink factor is equal to one, the surface is just the boundary of the union of the input balls. For a shrink factor smaller than one, the skin surface becomes tangent continuous, due to the appearance of patches of spheres and hyperboloids connecting the balls.

This package constructs a mesh isotopic to the skin surface defined by a set of balls and a shrink factor using an algorithm proposed by Nico Kruithof and Gert Vegter.

An optimized algorithm is implemented for meshing the union of a set of balls.

#### New CGAL package for 2D circular kernel

Participants : Monique Teillaud, Sylvain Pion.

The work done in previous years led to the release in cgal 3.2 of a new package providing users with elementary manipulations of circular arcs in the plane [71] . This package extends the standard cgal kernel by adding new types of points that can have non-rational coordinates, line segments whose endpoints can be of this new type, and circular arcs. Among other functionalities, exact comparisons, as well as constructions of intersections between these new objects can be performed.

This package will be improved in the next release, after the research done this year (see Section 6.3.2 ).

The 2D Circular kernel is under evaluation by Dassault Systèmes (that bought a research license from Geometry Factory ) and by Geometry Factory for a VLSI (Very Large Scale Integration) company.

#### New CGAL package for spatial sorting

Participant : Christophe Delage.

Recent work show the influence of insertion order on the performance of incremental computational geometry algorithms. With a careful, yet fast pre-ordering of the input data, many cgal algorithms can expect several-fold speed-ups.

The Spatial_sorting package is a first attempt to tackle this issue. It provides functions to sort 2D and 3D points in a way that dramatically improves triangulation algorithms, and others.

Comprehensive benchmarking is to be done on the many incremental
algorithms implemented in cgal . We also plan to extend this package to
sort other geometric objects such as circles, line segments, circular
arcs, *etc.*

#### New CGAL package for estimating differential properties

Participants : Frédéric Cazals, Marc Pouget.

Consider a sampled smooth surface, and assume we are given a
collection of points P about a given sample p. We aim at
estimating the differential properties up to any fixed order of the
surface at point p from the point set P^{ + } = P{p} . More
precisely, first order properties correspond to the normal or the
tangent plane; second order properties provide the principal
curvatures and directions, third order properties provide the
directional derivatives of the principal curvatures along the
curvature lines, etc. This new package, *Jet_fitting_3* ,
implements the Cazals-Pouget method based on polynomial fitting to
perform such estimations.
Datasets amenable to such a processing are naturally unstructured
point clouds, as well as meshes —whose topological information may
be discarded.

#### New CGAL package for reporting ridges and umbilics

Participants : Frédéric Cazals, Marc Pouget.

Given a smooth surface, a ridge is a curve along which one of the
principal curvatures has an extremum along its curvature line. An
umbilic is a point at which both principal curvatures are
equal. Umbilics are special points on the ridge lines. Ridges are
curves of *extremal* curvature and therefore encode important
informations used in segmentation, registration, matching and surface
analysis. The new package *Ridge_3* implements algorithms to
report umbilics and ridges on a surface given as a triangular
mesh. Differential quantities associated to the mesh vertices are
assumed to be given for these algorithms. If not, these quantities may
be computed from the *Jet_fitting_3* package just mentioned.

#### Improved predicates for the CGAL package of Voronoi diagram of circles

Participants : Christophe Delage, Dave Millman.

A new way of expressing the predicates for the 2D additively weighted Voronoi diagram was proposed, which results in simpler computations. These new predicates make the Apollonius_graph_2 cgal package significantly faster than the current implementation available in cgal 3.2 and will be integrated into the code base.

#### Vertex removal in the CGAL 3D regular triangulation

Participants : Christophe Delage, Olivier Devillers, Monique Teillaud.

The work done on symbolic perturbations (Section 6.3.1 ) allowed to provide the 3D regular triangulation class [73] with vertex removal. This new functionality was integrated in cgal 3.2. As far as we know, cgal is the only software offering this functionality.