GoTools Core Library



GoTools is the group name of many interdependent C++ software modules developed by the geometry group at SINTEF ICT, Dept. of Applied Mathematics. GoTools software has been developed for a range of different applications in many different projects. However, a few key modules are used by almost all the others; these have been singled out and grouped together in what we choose to call the GoTools Core Library .

The GoTools Core Library is mainly a library for parametrical curves and surfaces, usually spline based. For clarity it is divided in two parts, 'geometry' and 'utility' . The 'geometry' part contains classes and funcitonality for representing, storing and manipulating parameterized geometrical objects, whereas the 'utility' part contains general, low-level functionality.

the 'geometry' module

Main, streamable classes

The main classes in the 'geometry' module are the SplineCurve and the SplineSurface , which are used for reading, storing, manipulating NURBS curves and surfaces respectively. In addition to this, we have the BoundedSurface , which represents a trimmed surface (surface whose parametric domain has an arbitrary shape and topology). Other geometrical objects include PointCloud representing a set of (potentially very many) points, and LineCloud , representing a set of lines. All the abovementioned objects are Streamable , which means that they can be written to and read from a stream (typically a file) in a uniform way. Similarly, they can be created in a uniform way by the Factory , which is useful when you want to generate objects whose exact kind are unknown at compile time.

description of some of the core functionality (non-exhaustive)

All the spline objects have member functions for basic tasks such as evaluating points, tangents and higher-order derivatives, changing parameterization (insertion of knots, rescaling or reversing of parameter domains, etc.), bounding box specification, order raising, conversion to Bezier form, reading and writing, closeness to a given point in space, etc. In addition, namespace-level functions are providing for tasks such as:

the 'creators' module

The 'creators' module contains various methods for modifying and creating spline curves and surfaces. In addition to standard functionality such as projecting and lifting a spline curve, the class incorporates the following methods:

the 'utility' module

The 'utility' module was developed in parallel with the 'geometry' module, and contains various useful classes and functions related to math. / computational geometry, while not being directly related to splines.

Data structures

You can find templated arrays and optimised vectors.

Geometrical objects

The module contain some objects that are much used in computational geometry, like


Generated on Mon Jun 11 14:48:18 2007 for GoTools Core Library by  doxygen 1.5.1