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
HermiteInterpolatorThe 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.SplineInterpolatorA 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.SplineApproximatorApproximation 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.ApproxCurveMake 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.SmoothCurveApproximate 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.AdaptCurveApproximates an evaluator based curve with a given accuracy. The method is based on least squares approxation with a smoothing term and spline space refinement.ApproxCrvToSeqsApproximate 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.HermiteAppCApproximate an evaluator based curve represented by a sub class of the classEvalCurve, by a spline curve. An hermite method is used, thus a $C^1$ continuous curve will be generated. The existing evaluator based curves areProjectCurve: 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.- 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. - Given two approximations of the same intersection curves, reapproximate the intersection curve of type
SpaceIntCrv. - Given a curve in the parameter domain of type
LiftCurveof a surface, the geometry space curve is evaluated. - Represent a offset curve of type
CrossTangentOffsetfrom a given space curve. The direction of the offset is given as an expression of corresponding curves. - An offset curve of type
CrossTanOffDistto a given curve in the direction of a cross tangent curve constructed as a blend between tangent curves. - A parameter curve of type
EvalParamCurveis of any type that is to be approximated by a spline curve.
HermiteAppSApproximate an evaluator based curve set represented by a subclass of the classEvalCurveSet. A number of curves defined in the same spline space are generated. One concrete evaluator based curve set exists currently:- 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. - Given an intersection curve (
IntCrvEvaluator) represented as twoCurveOnSurfaceinstances, reapproximate this intersection curve along with the two parameter domain curves representing this curve. - Improve the accuracy of an existing trimming curve (
TrimCurve). - 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.
- Given a surface, a curve in geometry space and a corresponding cross tangent curve, the parameter curve (
Surface Construction
Similar to the curve construction methods, these methods are placed in the sub modules geometry and creators.
SweepSurfaceCreatorThe class lies in geometry. The class contains two methods; sweep a curve along another curve to create a surface and rotational sweep.ApproxSurfThis 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.SmoothSurfApproximate 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.LoftSurfaceCreatorconstructs a surface by interpolating a number of non-rational spline curves.CoonsPatchGenConstruct a surface interpolating 4 boundary curves. The curves may be attached cross tangent curves. To achieve interpolation, the boundary conditions must be consistent.HahnsSurfaceGenFill an $n$-sided hole with $n$ surfaces. $n=3$, $5$ or $6$.