SISL is a geometric toolkit to model with curves and surfaces originally targeting the needs for NURBS functionality in Computer Aided Design systems. It is a library of C functions to perform operations such as the definition, intersection and evaluation of NURBS (Non-Uniform Rational B-spline) geometries. Since many applications use implicit geometric representations such as planes, cylinders, tori etc., SISL can also handle the interaction between such geometries and NURBS.
SISL stands for SINTEF Spline Library and it has been gradually developed and enhanced for more than three decades by the Geometry Group at SINTEF in Oslo. Although it is very comprehensive, its organisation is simple. There are but a few structures, and its nearly four hundred main functions can usually be employed directly and individually. The SISL manual organises and explains the main routines. However, much of this information can also be found directly in the code in the form of comments.
SISL is divided into seven modules, partly in order to provide a logical structure, but also to enable users with a specific application to use subsets of SISL. There are three modules dealing with curves, three with surfaces, and one module to perform data reduction on curves and surfaces. The modules for curves and surfaces focus on functions for creation and definition, intersection and interrogation, and general utilities.
The three important data structures used by SISL are SISLCurve, SISLSurf, and SISLIntcurve. These are defined in the Curve Utilities, Surface Utilities, and Surface Interrogation modules respectively. Other structures are SISLBox and SISLCone, which represent a bounding box and a normal cone, respectively. The routines in SISL are designed to function on curves and surfaces which are at least continuously differentiable. However, many routines will also handle continuous curves and surfaces, including piecewise linear ones.
In SISL, a distinction is made between NURBS (the default) and B-splines. The term B-splines is used for non-uniform non-rational (or polynomial) B-splines. B-splines are used only where it does not make sense to employ NURBS (such as the approximation of a circle by a B-spline) or in cases where the research community has yet to develop stable technology for treating NURBS. A NURBS require more memory space than a B-spline, even when the extra degrees of freedom in a NURBS are not used. Therefore, the routines are specified to give B-spline output whenever the extra degrees of freedom are not required. Transferring a B-spline into NURBS format can be done without loss of precision but converting a general NURBS to a B-spline requires approximation.
SISL is a mature library that is no longer subject to the introduction of new functionality. This version of the library differs from the previous one by bug fixing and an update of the documentation. SINTEF Mathematics and Cybernetics provide, in addition to SISL, GoTools. This is a collection of geometry libraries written in C++ that complements SISL. New geometry software development is integrated into GoTools. Corresponding geometry entities like NURBS curves and surfaces have different representations in SISL and GoTools, but conversion functionality exists within GoTools. GoTools also includes a 3D viewer for visualizing several types of geometric entities including NURBS curves and surfaces.
IPR / Licence
SISL is copyright of the Geometry Group at SINTEF Digital, Department of Mathematics and Cybernetics.
SISL is available under the GNU Affero General Public License v3.0 or under a Commercial License.
Source code is available from: https://github.com/SINTEF-Geometry/SISL
SISL is available in package managers under several Linux distributions (external maintainers):