Module Creators - SINTEF-Geometry/GoTools GitHub Wiki

Geometry Construction

The combination of SISL and GoTools provide a lot of methods for geometry construction. They partly overlap. The GoTools functionality is outlined here. More details can be found in the appropriate classes and namespaces. The SISL geometry construction methods are described in the SISL manual.

The classes for parametric curves, surfaces and volumes in GoTools do not contain construction facilites. They are solely for operating on these entites. The construction is performed in separate classes.

Curve Construction

Construction of elementary curves are being done by their definition or they are read from an IGES file. The curve construction methods in GoTools are concerned with spline curves. The methods are split between two sub modules in gotools-core, namely geometry and creators. The relevant classes are

  • HermiteInterpolator The class is placed in geometry. Interpolates a set of points where each point is associated a tangent vector. The points must be parameterized. This is a local curve construction method.
  • SplineInterpolator A set of methods to interpolate a set of points. Some methods accept tangent vectors associated to some points. The points must be parameterized. The class gives the possibility to set particular conditions in the endpoints of the curve. This is a global method for curve construction.
  • SplineApproximator Approximation in the least squares sense. Parameterized points and a spline space must be given. This class and the two proceeding ones inherite the same class, Interpolator, and share parts of the interface.
  • ApproxCurve Make a curve approximating a set of points with a given accuracy. The points must be parameterized and it is possible to give an initial spline space. The method iteratively applies the method in the class SmoothCurve. This class and the following ones lie in the sub module creators.
  • SmoothCurve Approximate a set of parameterized data points with a spline curve using a least squares approximation with a smoothing term. The spline space must be given. The method can also be used to perform smoothing on a given curve.
  • AdaptCurve Approximates an evaluator based curve with a given accuracy. The method is based on least squares approxation with a smoothing term and spline space refinement.
  • ApproxCrvToSeqs Approximate a set of curve sequences by a set of B-spline curves within a given accuracy. The curves are represented in the same spline space.
  • HermiteAppC Approximate an evaluator based curve represented by a sub class of the class EvalCurve, by a spline curve. An hermite method is used, thus a $C^1$ continuous curve will be generated. The existing evaluator based curves are
    1. ProjectCurve: A curve in the parameter domain of a surface is represented as the projection of a 3D curve into the parameter domain of a given surface. The output curve lies in the parameter domain of the surface.
    2. Given data describing a surface-surface intersection curve of type ProjectIntersectionCurve, the curve lying given offset distances from the two surface involved in the intersection and parameterized similar to the intersection curve is represented. This construction can be used to create a rolling ball blend.
    3. Given two approximations of the same intersection curves, reapproximate the intersection curve of type SpaceIntCrv.
    4. Given a curve in the parameter domain of type LiftCurve of a surface, the geometry space curve is evaluated.
    5. Represent a offset curve of type CrossTangentOffset from a given space curve. The direction of the offset is given as an expression of corresponding curves.
    6. An offset curve of type CrossTanOffDist to a given curve in the direction of a cross tangent curve constructed as a blend between tangent curves.
    7. A parameter curve of type EvalParamCurve is of any type that is to be approximated by a spline curve.
  • HermiteAppS Approximate an evaluator based curve set represented by a subclass of the class EvalCurveSet. A number of curves defined in the same spline space are generated. One concrete evaluator based curve set exists currently:
    1. Given a surface, a curve in geometry space and a corresponding cross tangent curve, the parameter curve (ProjectCurveAndCrossTan) representing the projection of the geometry curve into the surface and the corresponding projection of the cross tangent in the parameter domain is represented.
    2. Given an intersection curve (IntCrvEvaluator) represented as two CurveOnSurface instances, reapproximate this intersection curve along with the two parameter domain curves representing this curve.
    3. Improve the accuracy of an existing trimming curve (TrimCurve).
    4. Given an intersection curve between two surfaces, offset these surfaces given distances and create the intersection curve (SmoothTransition) between the offset surfaces and corresponding cross tangent curves that will give a smooth transition between the offset surfaces.

Surface Construction

Similar to the curve construction methods, these methods are placed in the sub modules geometry and creators.

  • SweepSurfaceCreator The class lies in geometry. The class contains two methods; sweep a curve along another curve to create a surface and rotational sweep.
  • ApproxSurf This class and the following lie in creators. A set of parameterized scattered data are approximated by a spline surface. The boundary curves to the surface can be defined a priori. The spline space must be given. The method iteratively applies the method in SmoothSurface and performs parameter iteration. It may also refine the spline space.
  • SmoothSurf Approximate a set of parameterized scattered data points using a least squares approach with a smoothing term. The spline space must be given. The method can also be used to smooth a given surface.
  • LoftSurfaceCreator constructs a surface by interpolating a number of non-rational spline curves.
  • CoonsPatchGen Construct a surface interpolating 4 boundary curves. The curves may be attached cross tangent curves. To achieve interpolation, the boundary conditions must be consistent.
  • HahnsSurfaceGen Fill an $n$-sided hole with $n$ surfaces. $n=3$, $5$ or $6$.