Classes
Class  Description  

AdjacentIntervalDifferenceEquationNewtonRaphsonSolver 
Generic logic for multivariate NewtonRaphson iteration to solve a set of nonlinear
equations. The caller provides an object that can be called to evaluate a function
of two adjacent unknowns. The solver iterates to find a sequence of unknowns that
make adjacent function values match.
The solver asks a callersupplied object for function values and (optionally) derivative values.


Bezier 
static methods to do bezier polynomial calculations on coefficient arrays.


Bspline 
Static methods for manipulating bspline arrays.


BsplineFit 
Static methods for manipulating bspline arrays.


Comparator 
Class to perform toleranced equality tests among various geometric types.
The class carries 3 categories of tolerances: Coordinate, Unit, and Angle.
Each tolerance categore has an absolute part and a relative part.


ConvexHull 
Convex hull calculation


DClothoid2d 
normalized spiral with linear variation of curvature.


DPoint3dArray 
Utility methods for arrays of DPoint3d acting as isolated points (i.e. not linestrings or polygons)


DPoint3dLineString 
Utility methods for arrays of DPoint3d acting as linestrings.


DPoint3dPolygon 
DPoint3dPolygon contains static methods which treat IList of DPoint3d as a polygon (i.e. enclosing area)


DSpiral2d 
Abstract base class for virtuals that implement spiral curve variants.
The base class implements some methods directly, and has others abstract.
A spiral is governed by its start bearing, start curvature, end bearing,
and end curvature, and a type code which controls how bearing and curvature
vary as a function of distance along the curve.
The curve position, measured from a local origin at the start of the curve,
is an integral of the spiral functions:
x(t1) = x(0) + integral [0..L] dt Math.Cos(Q(t)) y(t1) = y(0) + integral [0..L] dt Math.Sin(Q(t))
Taking derivatives, the bearing angle of the curve is exactly Q(t), and
the curvature is exactly K(t)=dQ/dt.
For any the base interval, the curve LENGTH is the angle change divided by the average curvature.
An newly constructed spiral has no defined bearing or curvature.A spiral becomes useful when a setup function  SetBearingCurvatureBearingCurvature or SetBearingCurvatureLengthCurvature 
is called.The setup functions each take 4 of the 5 values (length, start bearing, end bearing, start curvature, end curvature) and compute the 5th.


DSpiral2d..::..SpiralAccumulator 
Query functions used while integrating a spiral


DSpiral2d..::..SpiralPositionAccumulator 
Accumulator for simple x,y vector integrations.


DSpiral2d..::..TransformedSpiralLengthAccumulator 
Specialized derived class to integrate length after transform
Length is accumulated into the x component of the result vector.


DSpiral2d..::..TransformedSpiralPositionAccumulator 
Accumulator for simple x,y vector integrations.


DSpiral3d 
Wrapper class for a DSpiral2d placed into 3D with an arbitrary transform and an
active interval.
There are two levels of fractionalization:
Base interval fractions. The base interval has fractions 0 and 1 at the
points where bearing and curvature are applied.
Active interval fraction. The endpoints of the active interval are specified as baseFractions.
An activeIntervalFraction maps is 0 to 1 within that interval.


Geometry 
static class for geometric services.


Sort 
Simple sorting utilities


TriDiagonalSystem 
Data management for building and solving a tridiagonal linear system with n rows.
Internal data arrays hold left, main and right diagonals of the matrix.
Internal data arays for two vectors named X and B.
The matrix part is tagged for one of 3 states:
RawMatrix  initialization and data entry. The 3 diagonals contain the entries of A "as expected"
FactorOK  The arrays of diagonals in A have been factored into L*U, where
L is lower diagonal with 1 on diagonal,
U is upper diagonal.
Completion of factorization implies all diagonal entries are nonzero.
FactorFailed  L and U are as left in midst of factorization. Not good  A is not recovrable.
Caller can explicitly request transtion from RawMatrix to FactorOK by calling Factor (), and
(except for numerical roundoff error) reverse this with DeFactor ().
Simple use pattern is to install values in A and B, then call FactorAndBackSubstitute, and extract the solution X.
It is also possible to set up A and X and multiply AX to form B. The AX product can be formed
from either the RawMatrix or FactorOK state.


XmlFormatter 
Static methods for converting Bentley.Geometry types to and from Xml fragments.
For each type, the method ContentStringOf (T value) returns "just the content"
for that type. This can be wrapped in the xml tag du jour.

Structures
Structure  Description  

Angle 
Value class for an angle, addressed via read/write properties Radians and Degrees.


DEllipse3d 
Elliptic arc represented by center, vectors to points at 0 and 90 degrees in parameter space,
start angle, and sweep angle.


DMap4d 
A DMap4d is a pair of perspective transforms (DMatrix4d) which are inverses of each other.


DMatrix2d 
3x3 matrix for linear transformation of xyz vectors.


DMatrix3d 
3x3 matrix for linear transformation of xyz vectors.


DMatrix4d 
Value class for a 4x4 matrix as used in perspective transformations.


DPlacementZX 
Value class for an orthogonal coordinate frame described by Z and X vectors.


DPlane3d 
plane represented by origin and normal vector


DPoint2d 
x,y coordinates of a point.


DPoint2dDouble 
DPoint2d with double tag.


DPoint3d 
x,y,z coordinates of a point.


DPoint3dDouble 
DPoint3d with double tag.


DPoint4d 
A DPoint4d has four components named x,y,z,w.
At appropriate times this is interpretted as a "point", "vector",
"plane", and "quaternion".


DQuaternion 
Value class for a quaternion.
Summary of properties:


DRange1d 
Value class for the range of values delimited by a lower and upper limit.
The two limits are designated Low and High, and are always sorted.
A DRange1d initializes into a null state with no contained interval.


DRange2d 
Axisaligned range box represented by two diagonally opposite corners.


DRange3d 
Axisaligned range box represented by two diagonally opposite corners.


DRay3d 
Ray represented by a origin and direction. The direction vector is NOT required to be normalized.


DSegment1d 
Interval of the real line, containing points {x=a+s*(b1)} for any s in {[0..1]}
The limits are NOT expected to be sorted. {a>b} is a valid interval whose "start" is higher than its "end".


DSegment3d 
Line segment represented by start and end points.


DTransform2d 
affine transform as a 2x3 matrix


DTransform3d 
affine transform as a 3x4 matrix


DVector2d 
x,y components of a vector.


DVector3d 
x,y,z components of a vector.


EllipticIntegrals 
Axis and quadrant logic for ellipse arc length integrations.


EulerAngles 
package of 3 angles used as Euler constructions in orientations


GaussianQuadrature 
Services for weighted integration with Gauss rules


GeoPoint 
integer x,y,z coordinates of a point.


GeoPoint2d 
integer x,y coordinates of a point.


MinMaxIndexedPoint 
Carrier structure for a pair of tuples carrying (double, int, DPoint3d), with one tuple recording a min value of the double and the other a max value.
In default constructor state, numCall is zero and all others are meaningless.


Point2d 
integer x,y coordinates of a point.


Point3d 
integer x,y,z coordinates of a point.


Polynomials 
Assorted utilities for manipulating polynomials


Polynomials..::..Power 
Utilities for polynomials in power basis form


Polynomials..::..Trig 
Utilities for polynomials related to trig functions


Roots 
Analytic root finders for cubic and quartic equations.


YPRAngles 
package of 3 angles used as yaw, pitch, roll in orientations

Interfaces
Interface  Description  

AdjacentIntervalDifferenceEquationNewtonRaphsonSolver..::..IntervalFunctionEvaluator 
Interface for query functions to evaluate the objective function between two adjacent variable values.


IScalarFunction 
interface with a generic function with a double as input and a double as output.


IWeightedAccumulator 
Callback functions for integration driver.

Enumerations
Enumeration  Description  

ParameterExtensionCode 
Enumeration of choices for extending start and end of curves.


ToleranceMode 
Enumeration to select from 'Coordinate' or 'Unit' tolerances
