OUR PRODUCTS...

SMLib™

TSNLib™

GSNLib™

NLib™

VSLib™

SDLib™

PolyMLib™

Data Translators

SOURCE CODE ADVANTAGE
SUPPORT ADVANTAGE
MANUAL
TESTIMONIES

REQUEST A QUOTE

NEWSLETTERS:

DECEMBER 2013
New Releases in 2013


NEWSLETTER ARCHIVE

GSNLib™ - The General Surface Library

The General Surface Library (GSNLib™) is a C++, object-oriented, software toolkit that provides a set of objects and corresponding methods to create, edit, query, and analyze NURBS curve and surface representations. All of NLib™, the basic NURBS geometry kernel, is contained in GSNLib™. Representations include points, vectors, curves, and surfaces. Trimmed surfaces and solids are included in TSNLib™ and SMLib™. The geometry representations supported by GSNLib™ are commonly used in the development of 2D and 3D applications in CAD, Simulation, Graphics, Web Development, Animation, Game Development, Medical Modeling, Optics and more.

Key Features

C++ Interface - Source code, C++ interface to all of NLib including class representations for lines, curves, composite curves, and surfaces.

Basics - Creation, modification, evaluation, analysis, and intersection of curves and surfaces.

Offset - Curve and surface offset

2D and 3D - Dropping and lifting curves onto surfaces.

Performance and Reliability - Structures and algorithms for superior reliability and/or performance.

Intersection - Classification operations performed to user specified tolerances.

Solvers - Minimization/ Maximization/Normalization solvers from point/curve/surface to point/curve/surface.

Memory - Various memory management options including stack based, heap based, and pool based.

Error Management - A unified error management system.


Summary of Functions

Curve (IwCurve):

• Constructors allow input of either a PDES STEP compatible NURBS data or a pointer to an NLib "CURVE" data structure.
• Point and derivative evaluation.
• Evaluation of geometric properties.
Offset curve.

• Bounding box calculation.
• Creation of a mirror curve.
• Creation of a curve by projection to a plane.
• Transformation with optional scaling.
• High precision curve length computation.
• Test for closure, periodicity and degeneracy.
• Tessellation using both chord height and angular tolerances.
• Find intersections with a plane.
• Find inflection points.
Find minimum/maximum magnitude of 1st derivative and radius of curvature.

• Find 1st derivative or radius of curvature of a given magnitude.
• Find points where tangent is parallel to X, Y, and/or Z axis.
• Find points where tangent is parallel to a given vector.
• Find silhouette points with either parallel or perspective projection.
• Various analysis of curve properties.

Composite Curve (IwCompositeCurve):

• Creation of composite curves from an unordered set of curves.
Offset of a composite curve with filleting or extension and trimming.

• Simultaneous offset of multiple loops (i.e. face with holes).
• Creation of a single NURBS curve from a composite.

B-Spline Curve (IwBSplineCurve):

• Construction/editing/query using STEP format or NLib data structures.
• Continuity calculation, removal of extra knots, conversion to 2D.
• Creation by joining connected curve segments.
• Creation of circle, ellipse, line segment, degenerate curve.
• Creation of mirror curve.
• Editing the end points.
• Extraction of analytical information for lines and arcs.
• Offsetting.

Surface (IwSurface):

• Point and derivative evaluation, evaluation of geometric properties.
• Normal evaluation, evaluation of a normal section.
• High precision surface area computation.
• Dropping 3D vectors into parameter space.
• Closed and periodic testing, singularity testing, validation.
• Transformation, mirror.
• Creation of silhouette curves.

B-Spline Surface (IwBSplineSurface):

• Construction using STEP format or GeomWare's Nlib data structures.
• Continuity calculation.
• Query of canonical data.
Creation of planar section curves.

Creation of parallel projection curves.

Curve/Curve Intersection:

• Handles coincidence, tangency, near tangency, and grazing conditions.
• Projected curve/curve intersection.
Detection of self intersection.

Curve/Surface Intersection:

• Handles coincidence, tangency, near tangency, and grazing conditions.

Advanced Surface/Surface Intersection (IwSurface::GlobalSurfaceIntersect):

• Global intersection which finds all intersection curves and points.
• Ability to extract intersection curves along surface tangencies - surface normals are parallel along the intersection curve.
• Adds the ability to process curves where singularities occur - point where surface normal are parallel and intersection curves pass through the point.
• Adds the ability to produce zero length or NULL curves - point where surfaces touch at a single point but do not intersect near that point.
• Detection of self intersection.

Dropping Curves:

• Create the 2D parameter space curve(s) corresponding to a 3D curve which lies on or near a surface.
• Restricted to surfaces with at least C1 continuity.
• Advanced dropping which allows C0 continuity surfaces.

Curve/Point - Local and global versions:

• Minimization - find point(s) on curve closest to the point.
• Maximization - find point(s) on curve farthest from the point.
• Normalization - find point(s) on curve where tangent is perpendicular to vector to the point.
• At-distance - find point on curve at given distance from point.
• Intersection - find parametric value(s) on curve corresponding to the point.
• Projected minimization and maximization - as projected to a plane.
• Directed minimization and maximization - along a vector as projected to a plane.

Curve/Curve - Local and global versions:

• Minimization - find points on the two curves where the distance between them is minimal.
• Maximization - find points on the two curves where the distance between them is maximal.
• Normalization - find points on the curves where the tangents are perpendicular to the vector between the curves.
• At distance - find points on the two curves which have a given distance between them and have the same angle to the vector between them.
• Projected solvers - intersection, minimization, maximization, directed minimization, signed directed minimization, angle to plane, angle between, signed pivot angle between.
• 3D directed minimization - collision detection - find first contact point moving along a 3D vector.

Surface/Point - Local and global version of the following:

Minimization
- find point(s) on surface closest to point.
• Maximization - find point(s) on surface farthest from the point.
Normalization
- find point(s) on surface where normal is parallel to vector to point.
• Intersection - find parametric value(s) on surface corresponding to the point.
• 3D directed minimization - collision detection - find first contact point moving along a 3D vector.

Surface/Curve - Local and global version of the following:

• Minimization - finds where distance between curve and surface is minimal.
• Maximization - finds where distance between curve and surface is maximal.
• Normalization - finds where vector between entities is parallel to surface normal and perpendicular to the curve tangent.
• 3D intersection - find parametric value(s) on surface corresponding to the pointor.

Surface/Surface - Local and global version of the following:

• Minimization - find where distance between surfaces is minimal.
• Maximization - find where distance between surfaces is maximal.
• Normalization - finds where vector between surfaces is parallel to surface normals.
• 3D directed minimization - collision detection - find first contact point moving along a 3D vector.

Surface Silhouette Curve Creation (IwSurfaceSilhouette):

• Implementation in context of the Curve Tracing Framework.
• Able to detect all silhouette curves on a surface.
• Able to detect silhouettes which correspond to iso-parametric curves.
• Able to detect silhouettes which pass through the poles of the surface.

Surface Curve Tracing Abstract Class (IwSurfaceTracer):

• Provides an object-oriented framework which enables implementation of additional curve extraction utilities through subclassing and implementation of virtual methods.


Performance and Reliability

GSNLib utilizes extensible, object oriented structure design, tolerance based, numerical algorithms, and a proprietary caching algorithm to maximize performance without compromising reliability. The user can control the size vs. performance tradeoff by adjusting the cache size of the surface or curve. The cache maintains a tree-based Bezier decomposition of the curve or surface. Caching the decomposition greatly improves performance avoiding unnecessary calculations.


Intersection, Classification, and Tolerances

Key to the robustness of GSNLib's curve and surface solvers and intersectors is the ability for the algorithms to handle special geometric situations by taking into account a user specified tolerance. GSNLib has made a concentrated effort to handle at least the following situations:

Coincidence - where a desired solution corresponds to a range of values as opposed to a single value.
Tangency - where two objects touch at a single point but do not cross over each other.
Proximal - where two objects are within the proximity (less than the user specified tolerance) of each other but do not actually intersect.
Grazing - where two objects intersect at two points which are very close to each other.
Ambiguous - where more than one valid solution exists to a problem which typically has only a single solution.


GSNLib Objects:

GSNLib is a curve and surface library of tools. Understanding the class/object heirarchy utilized to represent geometric information is essential to effectively use GSNLib.

Curve classes: IwCurve, IwBSplineCurve, IwCompositeCurve, IwConic, IwHermiteCurve, IwIsoCurve, IwOffsetCurve, IwProjectedCurve, IwLine, IwEllipse, IwCircle, IwHyperbola, IwParabola, IwCrvOnSurf.
Surface classes: IwSurface, IwBSplineSurface, IwPlane, IwCylinder, IwCone, IwSphere, IwTorus, IwCutterSurface, IwSurfOfRevolution, IwSurfOfExtrusion, IwCurveBoundedSurface, IwOffsetSurface, IwSTEPSurface.
Geometric Utility Classes: IwVector2d, IwVector3d, IwAxis2Placement (a local coordinate system reference frame), IwMatrix, IwPolynomial, IwPseudoBox (non-axis aligned bounding box), IwPolarBox, IwExtent1d, IwExtent2d, IwExtent3d, IwExtentNd, IwPeriodicExtent1d.
Numerical Utility Classes: IwIntegrator, IwLocalSolve1d, IwLocalSolveNd, IwGlobalSolver, IwCurveCache, IwSurfaceCache, IwCacheMgr, IwMemBlockMgr.
Container Classes: IwTArray, IwMapPtrToPtr, IwSolutionArray.
Misc Classes: IwPointSet, IwSurfaceDropCurve, IwSurfaceSilhouette, IwAttribute, IwAssertArray.


Back To Top