This
Geometry Library (GSNLib) is a component of the Solid
Modeling Library, SMLib.
GSNLib is a
suite of objectoriented 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
 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.
BSpline
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 BSpline
 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
 selfintersection 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
BSpline
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.
 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/Surface See 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
Curves See 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  twodimensional
vector
 IwVector3d  threedimensional
vector
 IwAxis2Placement  represents a
local coordinate system or transformation
 IwMatrix  Ndimensional matrix used
to solve linear equations
 IwPolynomial  polynomial equation
representation
 IwPseud oBox  nonaxis aligned
bounding box
 IwPolarBox  polar coordinate
bounding box
 IwExtent1d  onedimensional
interval
 IwExtent2d  twodimensional
bounding box
 IwExtent3d  threedimensional
bounding box
 IwExtentNd  Ndimensional bounding
box
 IwPeriodicExtent1d  1dimensional periodic
extent
Numerical
utility classes
 IwIntegrator  provides numerical
integration
 IwLocalSolve1d  provides
onedimensional Newton based local solver
algorithm
 IwLocalSolveNd  provides
Ndimensional 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 isoparametric 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 ObjectOriented 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 isoparametric
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
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
selfintersection  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.
Back to
Top
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.
Back to
Top
Figure 13: Offseting/Insetting
Composite Curves:
Shown are
linear extension and corner filleting.
Figure 14: Creation of Planar
Section Curves:
Back to
Top
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.
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.
Copyright © 19982010 Solid Modeling Solutions
All rights reserved.
Information in this document is subject to change without notice.
