GoTools Core Library
1.1
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 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.
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:
-
closest point calculations
-
computation of intersections
-
affine transformations
-
splitting and merging
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:
-
Approximation
-
Approximate parametrized points with a spline curve within a prescribed tolerance, whilst fulfilling boundary conditions ( ApproxCurve ).
-
Approximate parametrized points with a spline surface within a prescribed tolerance, whilst fulfilling boundary conditions ( ApproxSurf ).
-
Smoothing
-
Perform smoothing on a spline curve while fulfilling various constraints (SmoothCurve ).
-
Perform smoothing on a spline surface while fulfilling various constraints (SmoothSurf ).
-
Perform smoothing on a set of spline surfaces while fulfilling various constraints (SmoothSurfSet ).
-
Skinning
-
Given input of a set of curves, and possibly the corresponding cross tangent curves, create a spline surface interpolating the curves (loftSurface ).
-
Coons patch
-
Given input of four boundary curves, and possibly their corresponding cross tangent curves, create a spline surface interpolating the curves (createCoonsPatch ).
-
Gordons surface
-
The generalization of 'Coons patch' to also include inner curves as well as their corresponding cross tangent curve (createGordonSurface ).
-
Hahns surface
-
The generalization of 'Coons patch' to cover input of 3 to 6 boundary curves, and possibly their corresponding cross tangent curve. The number of surfaces created equals the number of boundary curves. For the case of 4 boundary curves Coons patch is usually a better hole-filling strategy ( HahnsSurface ).
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.
You can find templated arrays and optimised vectors.
The module contain some objects that are much used in computational geometry, like
-
Compile-time computation of factorials
-
A general, nonlinear function minimizer in an arbitrary number of variables. This can be useful in a great number of different settings!
Generated on Mon Jun 11 14:48:18 2007 for GoTools Core Library by
1.5.1