|
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, efficientenough 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.
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.
- 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 - 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
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.
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 of SMLib is
copyrighted by either Solid Modeling Solutions,
IntegrityWare or
GeomWare
Inc(s). 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., IntegrityWare, Inc., and GeomWare Inc.
This document contains trade secret
information which these companies deem
proprietary.
Copyright © 1998-2002 Solid Modeling Solutions,
IntegrityWare, Inc. & GeomWare Inc. All rights
reserved.
Information in this document is subject to change without
notice.
|