SISL is built on some fundamental premisses:
SISL code can be integrated into users systems without modifying their data structures
For this reason SISL has a procedural interface and simple C data structures. Integrating with existing C++ code does not require the development of new classes. Feedback from SISL users indicates that the SISL interface has the right balance of ease of use and flexibility.
Numerical accuracy is paramount in constructing CAD models
SISL contains some of the most numerically accurate algortihms devised for CAGD (Computer Aided Geometric Design), allowing propogation of rounding errors to be kept to a minimum. This is especially important in the many recursive algorithms used in CAGD.
SISL allows the numerical tolerance of a given geometric process to be specified by the user, and guarantees compliance of the result.
Results are always numerically consistent, for example the results from the subdivision and evaluation algortihms.
Intersection of points, curves and surfaces is of the utmost importance in a free form geometry library
For this reason, intersection algorithms are generic w.r.t the following properties of the geometric entity involved:
- mathematical description (e.g. analytical, B-spline, NURBS)
- type (i.e. point, curve, surface)
- dimension (1, 2 or 3)
The optimal algorithm is chosen within a given intersection routine according to the geometric parameters specified when the function is called.
The intersection algorithms are divided into:
- a topological part which uses recursive subdivision to find the number of intersection branches and points within each branch, and
- a marching part which marches along the intersection curve, to a user-defined level of accuracy.
Difficult, degenerative cases such as near touch, tangential intersections and singularities can all be handled by SISL. Such situations often arise when building CAD models.