# geometry-core

## Classes

Name | Description |
---|---|

AbstractNewtonIterator | base class for Newton iterations in various dimensions. |

AlternatingCCTreeBuilder | Context structure for building an AlternatingConvexClipTreeNode from a polygon. |

AlternatingCCTreeNode | An AlternatingConvexClipTreeNode is a node in a tree structure in which |

AlternatingCCTreeNodeCurveClipper | |

AnalyticRoots | AnalyticRoots has static methods for solving quadratic, cubic, and quartic equations. |

Angle | Carries the numeric value of an angle. |

AngleSweep | An AngleSweep is a pair of angles at start and end of an interval. |

AnnotatedLineString3d | An AnnotatedLineString3d is a linestring with additional data attached to each point |

Arc3d | Circular or elliptic arc. |

AuxChannel | Represents a single PolyfaceAuxData channel. |

AuxChannelData | Represents the AuxChannel data at a single input value. |

BagOfCurves | * A `BagOfCurves` object is a collection of `AnyCurve` objects. |

Bezier1dNd | Implements a multidimensional bezier curve of fixed order. |

BezierCoffs | * BezierCoffs is an abstract base class for one-dimensional (u to f(u)) Bezier polynomials. |

BezierCurve3d | 3d Bezier curve class. |

BezierCurve3dH | 3d curve with homogeneous weights. |

BezierCurveBase | Base class for CurvePrimitve (necessarily 3D) with _polygon. |

BezierPolynomialAlgebra | Static methods to operate on univariate beizer polynomials, with coefficients in simple Float64Array or as components of blocked arrays. |

BilinearPatch | * A Bilinear patch is defined by its 4 corner points. |

Box | |

BoxTopology | |

BSpline1dNd | Bspline knots and poles for 1d-to-Nd. |

BSpline2dNd | Bspline knots and poles for 2d-to-Nd. |

BSplineCurve3d | A BSplineCurve3d is a bspline curve whose poles are Point3d. |

BSplineCurve3dBase | Base class for BSplineCurve3d and BSplineCurve3dH. |

BSplineCurve3dH | Weighted (Homogeneous) BSplineCurve in 3d |

BSplineSurface3d | BSplineSurface3d is a parametric surface in xyz space. |

BSplineSurface3dH | BsplinceCurve in xyzw homogeneous space |

ClipPlane | A ClipPlane is a single plane represented as |

ClipPrimitive | Base class for clipping implementations that use |

ClipShape | A clipping volume defined by a shape (an array of 3d points using only x and y dimensions). |

ClipUtilities | Static class whose various methods are functions for clipping geometry. |

ClipVector | Class holding an array structure of shapes defined by clip plane sets |

ClusterableArray | |

Complex | |

Cone | A cone with axis along the z axis of a (possibly skewed) local coordinate system. |

Constant | Commonly used constant values. |

ConstructCurveBetweenCurves | Context for constructing a curve that is interpolated between two other curves. |

ConvexClipPlaneSet | A ConvexClipPlaneSet is a collection of ClipPlanes, often used for bounding regions of space. |

ConvexPolygon2d | |

CoordinateXYZ | A Coordinate is a persistable Point3d |

CurveChain | Shared base class for use by both open and closed paths. |

CurveChainWithDistanceIndex | `CurveChainWithDistanceIndex` is a CurvePrimitive whose fractional parameterization is proportional to true |

CurveCollection | * A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures: |

CurveCurve | |

CurveLocationDetail | CurveLocationDetail carries point and paramter data about a point evaluated on a curve. |

CurveLocationDetailArrayPair | Data bundle for a pair of arrays of CurveLocationDetail structures such as produced by CurveCurve,IntersectXY and |

CurveLocationDetailPair | A pair of CurveLocationDetail. |

CurvePrimitive | A curve primitive is bounded |

CylindricalQuery | Context for computing geometry range around an axis. |

DeepCompare | Comparison utilities |

Degree2PowerPolynomial | |

Degree3PowerPolynomial | |

Degree4PowerPolynomial | |

FacetFaceData | Data for a face in a polyface containing facets. |

FrameBuilder | Helper class to accumulate points and vectors until there is enough data to define a coordinate system. |

Geometry | |

GeometryHandler | |

GeometryQuery | Queries to be supported by Curve, Surface, and Solid objects |

GraphMerge | |

GrowableBlockedArray | Array of contiguous doubles, indexed by block number and index within block. |

GrowableFloat64Array | A `GrowableFloat64Array` is Float64Array accompanied by a count of how many of the array's entries are considered in use. |

GrowableXYArray | Use a Float64Array to pack xyz coordinates. |

GrowableXYZArray | Use a Float64Array to pack xyz coordinates. |

HalfEdge | * A HalfEdge is "one side of an edge" in a structure of faces, edges and vertices. |

HalfEdgeGraph | A HalfEdgeGraph has: |

HalfEdgeGraphSearch | |

HalfEdgeMaskValidation | static methods to inpsect mask consistency properties in HalfEdgeGraph. |

HalfEdgePointerInspector | HalfEdgePointerInspector has methods to check HalfEdge objects for pointer errors. |

IndexedEdgeMatcher | An IndexedEdgeMatcher carres an array (`edges` ) of edges start & end indices for sorting and subsequent analyses (such as testing for closed mesh) |

IndexedPolyface | |

IndexedPolyfaceVisitor | |

IndexedXYCollection | abstract base class for access to XYZ data with indexed reference. |

IndexedXYZCollection | abstract base class for access to XYZ data with indexed reference. |

KnotVector | Array of non-decreasing numbers acting as a knot array for bsplines. |

LinearSweep | A LinearSweep is |

LineSegment3d | A LineSegment3d is: |

LineString3d | * A LineString3d (sometimes called a PolyLine) is a sequence of xyz coordinates that are to be joined by line segments. |

Loop | A `Loop` is a curve chain that is the boundary of a closed (planar) loop. |

Map4d | Map4 carries two Matrix4d which are inverses of each other. |

Matrix3d | A Matrix3d is a 3x3 matrix. |

Matrix4d | * A Matrix4d is a matrix with 4 rows and 4 columns. |

Merger | |

MomentData | A MomentData structrue carries data used in calculation of moments of inertia. |

Newton1dUnbounded | |

Newton1dUnboundedApproximateDerivative | Newton iteration for a univariate function, using approximate derivatives. |

Newton2dUnboundedWithDerivative | Implement evaluation steps for newton iteration in 2 dimensions. |

NewtonEvaluatorRRtoRRD | object to evaluate a 2-parameter newton function (with derivatives!!). |

NewtonEvaluatorRtoR | object to evaluate a newton function (without derivative). |

NewtonEvaluatorRtoRD | object to evaluate a newton function. |

NullGeometryHandler | `NullGeometryHandler` is a base class for dispatching various geometry types to |

NumberArray | |

Order2Bezier | Bezier polynomial specialized to order 2 (2 coefficients, straight line function) |

Order3Bezier | Bezier polynomial specialized to order 3 (3 coefficients, paraboloa function) |

Order4Bezier | Bezier polynomial specialized to order 4 (4 coefficients, cubic function) |

Order5Bezier | Bezier polynomial specialized to order 5 (5 coefficients, quartic function) |

OrderedRotationAngles | OrderedRotationAngles represents a non-trivial rotation using three simple axis rotation angles, and an order in which to apply them. |

PackedPointsWithIndex | Data carrier class for |

ParityRegion | * A `ParityRegion` is a collection of `Loop` objects. |

PascalCoefficients | PascalCoeffients class has static methods which return rows of the PascalTriangle. |

Path | * A `Path` object is a collection of curves that join head-to-tail to form a path. |

Plane3dByOriginAndUnitNormal | A plane defined by |

Plane3dByOriginAndVectors | A Point3dVector3dVector3d is an origin and a pair of vectors. |

PlaneByOriginAndVectors4d | A Plane4dByOriginAndVectors is a 4d origin and pair of 4d "vectors" defining a 4d plane. |

PlaneSetParamsCache | Cache structure that holds a ClipPlaneSet and various parameters for adding new ClipPlanes to the set. |

Point2d | |

Point2dArray | |

Point2dArrayCarrier | Helper object to access members of a Point2d[] in geometric calculations. |

Point3d | 3D point with x,y,z properties |

Point3dArray | |

Point3dArrayCarrier | Helper object to access members of a Point3d[] in geometric calculations. |

Point4d | 4 Dimensional point (x,y,z,w) used in perspective calculations. |

Point4dArray | |

PointString3d | A PointString3d is an array of points. |

Polyface | A Polyface is n abstract mesh structure (of unspecified implementation) that provides a PolyfaceVisitor |

PolyfaceAuxData | The `PolyfaceAuxData` structure contains one or more analytical data channels for each vertex of a `Polyface` . |

PolyfaceBuilder | * Simple construction for strongly typed GeometryQuery objects: |

PolyfaceData | PolyfaceData carries data arrays for point, normal, param, color and their indices. |

PolyfaceQuery | PolyfaceQuery is a static class whose methods implement queries on a polyface or polyface visitor provided as a parameter to each mtehod. |

PolygonOps | Static class for operations that treat an array of points as a polygon (with area!) |

PowerPolynomial | |

Quadrature | Support class for quadrature -- approximate integrals by summing weighted function values. |

Range1d | |

Range1dArray | A Range1d array is a set of intervals, such as occur when a line is clipped to a (nonconvex) polygon |

Range2d | |

Range3d | |

RangeBase | |

Ray2d | |

Ray3d | A Ray3d contains |

RecurseToCurvesGeometryHandler | Implement GeometryHandler methods, with all curve collection methods recursing to children. |

RecursiveCurveProcessor | base class for detailed traversal of curve artifacts. |

RecursiveCurveProcessorWithStack | base class for detailed traversal of curve artifacts, maintaining a stack that shows complete path to each artifact. |

RotationalSweep | |

RuledSweep | |

Sample | |

Segment1d | * A Segment1d is an interval of an axis named x. |

SmallSystem | |

SolidPrimitive | Base class for SolidPrimitve variants. |

SortableEdge | * For boundary sorting, an edge is a (packed!) Float64Array. |

Sphere | A Sphere is |

SphereImplicit | evaluation methods for an implicit sphere `x*x + y*y + z*z - r*r = 0` . |

StrokeCountChain | class `StrokeCountChain` contains: |

StrokeCountMap | data carrier interface for per-primitive stroke counts and distances used by PolyfaceBuilder. |

StrokeCountMapMultipassVisitor | abstract methods for callbacks during sweeps of collections of StrokeCount Structures. |

StrokeCountMapVisitorApplyMaxCount | * pass 1: determine max numStroke |

StrokeCountMapVisitorApplyMaxCurveLength | * pass 1: determine max curveLength among maps presented. |

StrokeCountSection | class `StrokeCountSection` \ |

StrokeOptions | tolerance blob for various stroking methods. |

SweepContour | Sweepable contour with Transform for local to world interaction. |

TorusImplicit | |

TorusPipe | the stored form of the torus pipe is oriented for positive volume: |

Transform | A transform is an origin and a Matrix3d. |

TransitionConditionalProperties | A transition spiral is a curve defined by its curvature, with the curvature function symmetric about midpoint. |

TransitionSpiral3d | |

Triangulator | |

TriDiagonalSystem | |

TrigPolynomial | |

UnionOfConvexClipPlaneSets | A collection of ConvexClipPlaneSets. |

UnionRegion | * A `UnionRegion` is a collection of other planar region types -- `Loop` and `ParityRegion` . |

UnivariateBezier | * The UnivariateBezier class is a univariate bezier polynomial with no particular order. |

UVSurfaceOps | UVSurfaceOps is a class containing static methods operating on UVSurface objects. |

Vector2d | 3D vector with x,y properties |

Vector3d | 3D vector with x,y,z properties |

Vector3dArray | |

XY | Minimal object containing x,y and operations that are meaningful without change in both point and vector. |

XYZ | Minimal object containing x,y,z and operations that are meaningful without change in both point and vector. |

YawPitchRollAngles | Three angles that determine the orientation of an object in space. |

## Enumerations

Name | Description |
---|---|

AuxChannelDataType | The data types of AuxChannel. |

AxisIndex | |

AxisOrder | Enumeration of the 6 possible orderings of XYZ axis order |

AxisScaleSelect | Enumeration among choice for how a coordinate transformation should incorporate scaling. |

BSplineWrapMode | false ==> no wrap possible |

ClipMask | Bit mask type for easily keeping track of defined vs undefined values and which parts of a clipping shape |

ClipPlaneContainment | Enumerated type for describing where geometry lies with respect to clipping planes. |

ClipStatus | Enumerated type for describing what must yet be done to clip a piece of geometry. |

CurveIntervalRole | An enumeration of special conditions being described by a CurveLocationDetail. |

CurveSearchStatus | Return code for CurvePrimitive method `moveSignedDistanceFromFraction` |

HalfEdgeMask | |

InverseMatrixState | A Matrix3d is tagged indicating one of the following states: |

StandardViewIndex | |

UVSelect | UVSelect is an integer indicating uDirection (0) or vDirection (1) in a bspline surface parameterization. |

WeightStyle |

## Global Functions

Name | Description |
---|---|

compareRange1dLexicalLowHigh | Checks low's first, then high's |

quotientDerivative2 |

## Interfaces

Name | Description |
---|---|

BeJSONFunctions | |

BSplineSurface3dQuery | Interface for methods supported by both regular (xyz) and weighted (xyzw) bspline surfaces. |

Clipper | An object containing clipping planes that can be used to clip geometry. |

IsNullCheck | |

IStrokeHandler | IStrokeHandler is an interface with methods to receive data about curves being stroked. |

PackedPointGrid | interface for points returned from getPointGrid, with annotation of physical and weighting dimensions. |

PlaneAltitudeEvaluator | Interface so various plane representations can be used by algorithms that just want altitude evaluations. |

PolyfaceVisitor | A PolyfaceVisitor manages data while walking through facets. |

TrigValues | |

UVSurface | Interface with methods for mapping (u,v) fractional coordinates to surface xyz and derivatives. |

UVSurfaceIsoParametricDistance | Interface for queries of distance-along in u and v directions |

WritableLowAndHighXY | |

WritableLowAndHighXYZ | |

WritableXAndY | |

WritableXYAndZ | |

WriteableHasZ | |

YawPitchRollProps | The properties that define YawPitchRollAngles. |

## Namespaces

Name | Description |
---|---|

IModelJson |

## Type Aliases

Name | Description |
---|---|

AngleProps | The Properties for a JSON representation of an Angle. |

AngleSweepProps | The Properties for a JSON representation of an AngleSweep. |

AnnounceCurvePrimitive | |

AnnounceNumberNumber | |

AnnounceNumberNumberCurvePrimitive | Type for callback function which announces a pair of numbers, such as a fractional interval, along with a containing CurvePrimitive. |

AnyCurve | |

AnyRegion | |

BlockComparisonFunction | |

CurvePrimitiveMutator | type for a function argument taking 2 curves and returning another curve or failing with undefined. |

GraphNodeFunction | |

HalfEdgeAndMaskToBooleanFunction | |

HalfEdgeToBooleanFunction | |

HasZ | |

LowAndHighXY | |

LowAndHighXYZ | |

Matrix3dProps | |

Matrix4dProps | |

NodeFunction | |

NodeToNumberFunction | |

OptionalGrowableFloat64Array | |

Point4dProps | |

Range1dProps | |

Range2dProps | |

Range3dProps | |

SortableEdgeCluster | |

TransformProps | |

XAndY | |

XYAndZ | |

XYProps | |

XYZProps |

Last Updated: 19 February, 2019