GSNLib Functionality ## Product Overview

This Geometry Library (GSNLib) is a component of the Solid Modeling Library, SMLib.

GSNLib is a suite of object-oriented software modules which provide global and local numerical algorithms using Advanced NURBS curves and surfaces. GSNLib provides algorithms for intersection, inversion, min/max distance, closest point, tessellation, geometric properties, measurement, curve length, surface area, etc. A more complete summary of GSNLib native functionality is found in the Functionality Summary section below. We have designed GSNLib to be sufficiently robust for demanding geometric modeling applications, efficient enough for performance intensive graphics applications, and easy to use from a programming point of view

## Functionality Summary

#### Curve (IwCurve) -see Figure 5 and Figure 6.

• point and derivative evaluation
• evaluation of geometric properties
• 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
• closure, periodicity and degeneracy testing
• 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

#### Composite Curve( IwCompositeCurve)

• Creation of composite curves from an unordered set of curves
• Offset of a composite curve with filleting or extension and trimming - See Figure 13
• Simultaneous offset of multiple composite curve 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 a circle segment, ellipse segment line segment, degenerate curve
• creation of mirror curve
• editing the end points of a B-Spline
• extraction of analytical information for lines and arcs
• offseting of smooth curves

#### Curve/Point - See Figure 1.

• 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 - See Figure 2.

• 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

#### 3D Curve/Curve Intersection- See Figure 3.

• handles coincidence, tangency, near tangency, and grazing conditions
• projected curve/curve intersection
• self-intersection detection is also provided - See Figure 4.

#### 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

#### B-Spline Surface( IwBSplineSurface )

• construction using STEP format or  NLib data structures
• continuity calculation
• query
• creation of planar section curves - See Figure 14.
• creation of parallel projection curves - See Figure 15.

#### Surface/Point  See Figure 7 and Figure 8.

• 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 See Figure 9.

• 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 directed minimization - collision detection - find first contact point moving along a 3D vector

#### Curve/Surface Intersection See Figure 10.

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

#### Surface/SurfaceSee Figure 11. 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

#### Dropping CurvesSee Figure 12.

• 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

#### Container classes

• IwMapPtrToPtr - pointer to pointer map
• IwTArray - template array class

#### Geometric utility classes

• IwVector2d - two-dimensional vector
• IwVector3d - three-dimensional vector
• IwAxis2Placement - represents a local coordinate system or transformation
• IwMatrix - N-dimensional matrix used to solve linear equations
• IwPolynomial - polynomial equation representation
• IwPseud oBox - non-axis aligned bounding box
• IwPolarBox - polar coordinate bounding box
• IwExtent1d - one-dimensional interval
• IwExtent2d - two-dimensional bounding box
• IwExtent3d - three-dimensional bounding box
• IwExtentNd - N-dimensional bounding box
• IwPeriodicExtent1d - 1-dimensional periodic extent

#### Numerical utility classes

• IwIntegrator - provides numerical integration
• IwLocalSolve1d - provides one-dimensional Newton based local solver algorithm
• IwLocalSolveNd - provides N-dimensional Newton based local solver algorithm
• IwGlobalSolver - provides global solver algorithms

#### STEP Analytical Classes

The following objects have been implemented along with supporting methods for creation and interrogation.

• IwLine, IwEllipse, IwCircle, IwHyperbola, IwParabola
• IwPlane, IwCylinder, IwCone, IwSphere, IwTorus, IwSurfOfRevolution, IwSurfOfExtrusion

#### Misc. classes

• IwCurveCache - Bezier curve decomposition based curve cache
• IwSurfaceCache - Bezier surface decomposition based surface cache
• IwCacheMgr - cache manager
• IwMemBlockMgr - fixed sized memory allocation manager
• IwHermiteCurve - provides utility representation of a Hermite curve
• IwIsoCurve - provides utility representation of an iso-parametric curve on a surface

#### Advanced Surface/Surface Intersection -see Figure 16:

• Extension of basic surface/surface intersection found in GSLib.
• Adds the ability to extract intersection curves along surface tangencies - surface normals are parallel along the intersection curve - see Figure 22.
• Adds the ability to process curves where singularities occur - point where surface normal are parallel and intersection curves pass through the point - see Figure 23.
• 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 - see Figure 24.
• Fast detection of interior closed intersection loops - see Figure 25.
• Enhances the performance of the basic intersector.

#### Surface Curve Tracing Abstract Class(IwSurfaceTracer):

• Provides a Object-Oriented Framework which should enable the fast implementation of additional curve extraction utilities through subclassing and implementation of virtual methods.

#### Sectioning of a Surface with an Infinite Plane(IwSurfaceSection) - see Figure 26:

• Implementation in context of the Curve Tracing Framework.
• Able to detect curves where surface is tangent to the plane.
• Able to detect singularity points (points where 4 curves come to a point) - see Figure 27.
• Able to detect tangent points (point where surface touches plane at a single point) - see Figure 27.

#### Surface Silhouette Curve Creation(IwSurfaceSilhouette) - see Figure 17:

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

#### Curve Projection on C0 Surfaces (IwSurfaceDropCurve):

• Provides for the creation of UV trim curves from 3D curves.
• Surfaces may have discontinuities of the tangent plane (C0 continuity).
• Requires that the 3D curve lie on or very close to the surface

## Sample Figures

Figure 1: Curve/Point Solver

• 1st Image - Minimization of a point and curve. Finds the closest point between a curve and a point. Note that some points have multiple closest points because of curve symmetry.
• 2nd Image - Normalization of point and curve. Finds position on a curve where vector from a point to a curve is perpendicular to the curve's tangent vector.
• 3rd Image - Maximization of point and curve. Finds the farthest point between a curve and a point.
• 4th Image - At Distance between of point and curve. Finds the position on a curve at a given distance from a point. Figure 2: Curve/Curve Solver

• 1st and 2nd Image: Minimization and maximization of two symmetric nurbs. Note that multiple answers result when more than one minimum or maximum points fall within the user specified tolerance.
• 3rd Image: Normalization between two curves finds all points where the vector between two points is perpendicular to the tangent vectors of the curves at those points.
• 4th Image: At Distance between two curves finds corresponding points on two curves which are at a given distance and the angle between the tangent vectors are equivalent. Figure 3: Curve/Curve Intersection - produces either single points or coincident segments (3rd Image). Figure 4: Curve self-intersection - finds points where the curve crosses itself. Figure 5: Curve Properties and Analysis

• 1st Image: Intersection of a curve with an infinite plane.
• 2nd Image: 3D Silhouette Computation (perspective - blue, parallel projection - red).
• 3rd Image: Points on curve where tangent is parallel to a given vector.
• 4th Image: Inflection points of a curve - points with zero curvature. Figure 6: Curve Properties and Analysis continued

• 1st Image: Minimum (red) and maximum (blue) first derivative magnitudes.
• 2nd Image: Minimum (red) and maximum (blue) radius of curvature.
• 3rd Image: Find first derivative (blue) and radius of curvature(red) of given magnitude.
• 4th Image: Find points on curve where first derivative is perpendicular to a given axis (blue - X axis, red - Y axis).
• 5th Image: Find points on a curve where first derivative is perpendicular to any axis. Figure 7: Surface/Point Solver -
minimization (closest point) between a point and a surface. Figure 8: Surface/Point Solver - normalization of a point and a surface. Figure 9: Surface/Curve Solver

Minimization (red) and maximization (blue) of the distance between a curve and a surface. Figure 10: Curve/Surface Intersection Figure 11: Surface/Surface Solver

minimization (red) and maximization of the distance between two surfaces. Figure 12: Dropping Curves:

Produce a 2D parameter space image of a 3D curve. Figure 13: Offseting/Insetting Composite Curves:

Shown are linear extension and corner filleting. Figure 14: Creation of Planar Section Curves: Figure 15: Creation of Curves by Parallel Projection: Figure 16: Surface/Surface Intersection with curve knots displayed. Figure 17: Surface Silhouette Curve Extraction. Figure 22: Surface/Surface Intersection with Tangent Surfaces Figure 23: Surface/Surface Intersection with Singularity Points. Figure 24: Surface/Surface Intersection

which produces a zero length curve. Figure 25: Surface/Surface Intersection

which produces multiple intersection loops. Figure 26: Surface Sectioning with a Plane. Figure 27: Surface Sectioning with a Plane Figure 29: Surface Silhouette Curve Extraction. ## Legal Stuff

All of the software and documentation received with this release is copyrighted by Solid Modeling Solutions, Inc. You may not distribute source code or documentation for this software outside of the company and the site which owns the license. The standard license agreement allows you to freely distribute object code in any application which does not contain a programmatic interface. All software and documentation is considered proprietary information and the intellectual property of Solid Modeling Solutions, Inc. This document contains trade secret information which is deemed proprietary.