Classes

  Class Description
Public class AdjacentIntervalDifferenceEquationNewtonRaphsonSolver
Generic logic for multivariate Newton-Raphson 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 caller-supplied object for function values and (optionally) derivative values.
Public class Bezier
static methods to do bezier polynomial calculations on coefficient arrays.
Public class Bspline
Static methods for manipulating bspline arrays.
Public class BsplineFit
Static methods for manipulating bspline arrays.
Public class 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.
Public class ConvexHull
Convex hull calculation
Public class DClothoid2d
normalized spiral with linear variation of curvature.
Public class DPoint3dArray
Utility methods for arrays of DPoint3d acting as isolated points (i.e. not linestrings or polygons)
Public class DPoint3dLineString
Utility methods for arrays of DPoint3d acting as linestrings.
Public class DPoint3dPolygon
DPoint3dPolygon contains static methods which treat IList of DPoint3d as a polygon (i.e. enclosing area)
Public class 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.
Public class DSpiral2d..::..SpiralAccumulator
Query functions used while integrating a spiral
Public class DSpiral2d..::..SpiralPositionAccumulator
Accumulator for simple x,y vector integrations.
Public class DSpiral2d..::..TransformedSpiralLengthAccumulator
Specialized derived class to integrate length after transform Length is accumulated into the x component of the result vector.
Public class DSpiral2d..::..TransformedSpiralPositionAccumulator
Accumulator for simple x,y vector integrations.
Public class 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.
Public class Geometry
static class for geometric services.
Public class Sort
Simple sorting utilities
Public class 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.
Public class 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
Public structure Angle
Value class for an angle, addressed via read/write properties Radians and Degrees.
Public structure DEllipse3d
Elliptic arc represented by center, vectors to points at 0 and 90 degrees in parameter space, start angle, and sweep angle.
Public structure DMap4d
A DMap4d is a pair of perspective transforms (DMatrix4d) which are inverses of each other.
Public structure DMatrix2d
3x3 matrix for linear transformation of xyz vectors.
Public structure DMatrix3d
3x3 matrix for linear transformation of xyz vectors.
Public structure DMatrix4d
Value class for a 4x4 matrix as used in perspective transformations.
Public structure DPlacementZX
Value class for an orthogonal coordinate frame described by Z and X vectors.
Public structure DPlane3d
plane represented by origin and normal vector
Public structure DPoint2d
x,y coordinates of a point.
Public structure DPoint2dDouble
DPoint2d with double tag.
Public structure DPoint3d
x,y,z coordinates of a point.
Public structure DPoint3dDouble
DPoint3d with double tag.
Public structure DPoint4d
A DPoint4d has four components named x,y,z,w. At appropriate times this is interpretted as a "point", "vector", "plane", and "quaternion".
Public structure DQuaternion
Value class for a quaternion.

Summary of properties:

  • components X,Y,Z,W are read/write properties
  • Vector is a read/write property, copying from/to X,Y,Z
  • NormalizedAxis is a read-only property. It returns the normalized Vector.
  • Angle is a read-only property
  • Magnitude is the square root of the sum of squares of all 4 components.
  • AsDMatrix3d is the 3x3 matrix form

Public structure 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.
Public structure DRange2d
Axis-aligned range box represented by two diagonally opposite corners.
Public structure DRange3d
Axis-aligned range box represented by two diagonally opposite corners.
Public structure DRay3d
Ray represented by a origin and direction. The direction vector is NOT required to be normalized.
Public structure DSegment1d
Interval of the real line, containing points {x=a+s*(b-1)} 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".
Public structure DSegment3d
Line segment represented by start and end points.
Public structure DTransform2d
affine transform as a 2x3 matrix
Public structure DTransform3d
affine transform as a 3x4 matrix
Public structure DVector2d
x,y components of a vector.
Public structure DVector3d
x,y,z components of a vector.
Public structure EllipticIntegrals
Axis and quadrant logic for ellipse arc length integrations.
Public structure EulerAngles
package of 3 angles used as Euler constructions in orientations
Public structure GaussianQuadrature
Services for weighted integration with Gauss rules
Public structure GeoPoint
integer x,y,z coordinates of a point.
Public structure GeoPoint2d
integer x,y coordinates of a point.
Public structure 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.
Public structure Point2d
integer x,y coordinates of a point.
Public structure Point3d
integer x,y,z coordinates of a point.
Public structure Polynomials
Assorted utilities for manipulating polynomials
Public structure Polynomials..::..Power
Utilities for polynomials in power basis form
Public structure Polynomials..::..Trig
Utilities for polynomials related to trig functions
Public structure Roots
Analytic root finders for cubic and quartic equations.
Public structure YPRAngles
package of 3 angles used as yaw, pitch, roll in orientations

Interfaces

  Interface Description
Public interface AdjacentIntervalDifferenceEquationNewtonRaphsonSolver..::..IntervalFunctionEvaluator
Interface for query functions to evaluate the objective function between two adjacent variable values.
Public interface IScalarFunction
interface with a generic function with a double as input and a double as output.
Public interface IWeightedAccumulator
Callback functions for integration driver.

Enumerations

  Enumeration Description
Public enumeration ParameterExtensionCode
Enumeration of choices for extending start and end of curves.
Public enumeration ToleranceMode
Enumeration to select from 'Coordinate' or 'Unit' tolerances