"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BentleyGeometryFlatBuffer = void 0;
/** @packageDocumentation
 * @module Utility
 */
// REMARK:
// The docs-group-description comments are followed by empty classes with names corresponding to the doc-group.
// Normally (in committed code) these are commented out.
// The comments have distinctive strings so that simple search and replace can make the "real".
// This is useful when working on the documentation:  When the empty classes are present, VSCode will format the doc comments
// for and display them when the mouse hovers over the class name.
/**
 * @docs-package-description
 * The core-geometry package contains classes for working with geometry:  points, vectors, curves, surfaces, and analytic solids
 */
/**
 * @docs-group-description CartesianGeometry
 * Points, Vectors, Planes, and Transformations for x,y,z geometry.
 * * Fundamental cartesian geometry objects:
 *   * Point2d, Point3d -- points with x,y,z coordinates
 *   * Vector2d, Vector3d -- vectors with x,y,z coordinates
 *   * Matrix3d -- 3x3 matrix
 *   * * commonly used for pure rotations
 *   * * scale and skew entries are also allowed.
 *   * Transform -- an origin and axes.
 *   * Range1d, Range2d, Range3d -- subsets of 1d, 2d, and 3d space bounded by low and high values.
 *   * Ray3d -- a ray defined by origin and direction vector
 *   * Plane3d -- an abstract base class extended by Plane3dByOriginAndNormal, Plane3dByOriginAndUnitNormal, Point4d, and ClipPlane
 *   * Plane3dByOriginAndUnitNormal -- a plane defined by an origin and a single vector which is perpendicular to the plane
 *   * plane3dByOriginAndVectors -- a plane defined by an origin and two vectors in the plane.
 * * Angles
 *   * Angle -- a strongly typed angle object whose method names make it clear whether input and outputs are degrees or radians.
 *   * AngleSweep -- an angular interval
 *   * LatitudeLongitudeNumber -- carrier for position and altitude on sphere or ellipsoid
 *   * YawPitchAndRollAngles -- 3 angles that define a rotated coordinate system.
 * * Utility classes
 *   * FrameBuilder -- construction of coordinate frames from mixed data sources.
 *   * ClipPlane -- a single plane
 *   * ConvexClipPlaneSet -- an array of planes bounding a convex volume
 *   * ClipPlaneSet -- an array of ConvexClipPlaneSet, defining the union of their volumes
 *   * BilinearPatch -- twisted quadrilateral defined by 4 points
 *   * BarycentricTriangle -- triangle defined by 3 points.
 *   * Constant -- various numeric values exported as readonly constants
 */
// doc:export class CartesianGeometryDoc { }
/**
 * @docs-group-description ArraysAndInterfaces
 * These classes support array operations and inheritance-based algorithms.
 * * Arrays
 *   * GrowableArray -- A carrier for a Float64Array, with methods that hide reallocation of the underlying array as contents are added.
 *   * Point2dArray, Point3dArray, Point4dArray, Vector3dArray -- miscellaneous operations on arrays of 2d and 3d points.
 * * Interfaces
 *   * GeometryHandler -- a double-dispatch protocol used for efficient implementation of algorithms that work on many geometry types.
 *
 */
// doc:export class ArraysAndInterfacesDoc { }
/**
 * @docs-group-description Bspline
 * A bspline curve or surface is used for curved freeform geometry defined by controls points (sometimes called poles).
 * * BSplineCurve --  a curve defined by control points (which are not on the curve)
 * * InterpolationCurve -- a curve defined by passthrough points, with "good" visual properties
 * * BSplineSurfaceXYZ -- a surface with XYZ
 * * BsplineSurfaceXYZW -- a surface with weighted (rational) XYZ coordinates
 * * KnotVector -- vector of breakpoints in bspline definitions.
 */
// doc:export class BsplineDoc { }
/**
 * @docs-group-description Curve
 * Curves in the GeometryQuery hierarchy: LineSegment3d, LineString3d, Arc3d, TransitionSpiral3d
 * * CurvePrimitive -- base class for parametric curves
 *   * LineSegment3d -- a (bounded) portion of an unbounded line
 *   * Arc3d -- a circular or elliptic arc
 *   * LineString3d -- a sequence of points joined by line segments
 *   * TransitionSpiral -- controlled transition between curvatures
 * * Support classes
 * * PointString3d -- a sequence of isolated points
 * * StrokeOptions -- tolerances to describe stroking accuracy
 * * RecursiveCurveProcessor, RecursiveCurveProcessorWithStack -- algorithmic support for trees with CurvePrimitives at the leaf level.
 */
// doc:export class CurveDoc { }
/**
 * @docs-group-description Numerics
 * The Numerics classes have geometric and numeric methods used during large algorithms in other classes.
 */
// doc:export class NumericsDoc { }
/**
 * @docs-group-description Polyface
 * A Polyface is a mesh structure with arrays of points that are shared among multiple incident facets.
 */
// doc:export class PolyfaceDoc { }
/**
 * @docs-group-description Serialization
 * These classes are related to serialization of geometry classes.
 * * IModelJson.Reader, IModelJson.Writer -- Conversion of in-memory geometry objects to json objects for persistence and transmission.
 */
// doc:export class SerializationDoc { }
/**
 * @docs-group-description Solid
 * Analytic Solids in the GeometryQuery hierarchy: Box, Sphere, Cone, TorusPipe, LinearSweep, RotationalSweep, RuledSweep
 * * Box -- a box solid.  This is usually rectangular on all faces, but can in one directly like a view frustum
 * * Sphere -- a sphere
 * * Cone -- a cone or cylinder
 * * TorusPipe -- a pipe elbow
 * * LinearSweep -- a linear sweep of a base contour
 * * RotationalSweep -- a rotational sweep of a base contour
 * * RuledSweep -- two or more similarly structured contours joined by linear rule lines.
 */
// doc:export class SolidDOc { }
/**
 * @docs-group-description Topology
 * The Topology classes provide adjacency structures used in triangulations.
 */
// doc:export class TopologyDoc { }
/**
 * @docs-group-description RangeSearch
 * Support classes for searching collections of ranges.
 */
__exportStar(require("./geometry3d/Angle"), exports);
__exportStar(require("./geometry3d/AngleSweep"), exports);
__exportStar(require("./geometry3d/LongitudeLatitudeAltitude"), exports);
__exportStar(require("./geometry3d/BarycentricTriangle"), exports);
__exportStar(require("./geometry3d/BilinearPatch"), exports);
__exportStar(require("./geometry3d/Ellipsoid"), exports);
__exportStar(require("./geometry3d/FrameBuilder"), exports);
__exportStar(require("./geometry3d/FrustumAnimation"), exports);
__exportStar(require("./geometry3d/GeometryHandler"), exports);
__exportStar(require("./geometry3d/GrowableBlockedArray"), exports);
__exportStar(require("./geometry3d/GrowableFloat64Array"), exports);
__exportStar(require("./geometry3d/GrowableXYArray"), exports);
__exportStar(require("./geometry3d/GrowableXYZArray"), exports);
__exportStar(require("./geometry3d/IndexedCollectionInterval"), exports);
__exportStar(require("./geometry3d/IndexedXYCollection"), exports);
__exportStar(require("./geometry3d/IndexedXYZCollection"), exports);
__exportStar(require("./geometry3d/Matrix3d"), exports);
__exportStar(require("./geometry3d/OrderedRotationAngles"), exports);
__exportStar(require("./geometry3d/Plane3d"), exports);
__exportStar(require("./geometry3d/Plane3dByOriginAndUnitNormal"), exports);
__exportStar(require("./geometry3d/Plane3dByOriginAndVectors"), exports);
__exportStar(require("./geometry3d/Point2dArrayCarrier"), exports);
__exportStar(require("./geometry3d/Point2dVector2d"), exports);
__exportStar(require("./geometry3d/Point3dVector3d"), exports);
__exportStar(require("./geometry3d/PointHelpers"), exports);
__exportStar(require("./geometry3d/Point3dArrayCarrier"), exports);
__exportStar(require("./geometry3d/PolylineOps"), exports);
__exportStar(require("./geometry3d/PolygonOps"), exports);
__exportStar(require("./geometry3d/Range"), exports);
__exportStar(require("./geometry3d/Ray2d"), exports);
__exportStar(require("./geometry3d/Ray3d"), exports);
__exportStar(require("./geometry3d/ReusableObjectCache"), exports);
__exportStar(require("./geometry3d/Segment1d"), exports);
__exportStar(require("./geometry3d/Transform"), exports);
__exportStar(require("./geometry3d/UVSurfaceOps"), exports);
__exportStar(require("./geometry3d/XYZProps"), exports);
__exportStar(require("./geometry3d/YawPitchRollAngles"), exports);
__exportStar(require("./Geometry"), exports);
__exportStar(require("./Constant"), exports);
__exportStar(require("./clipping/BooleanClipFactory"), exports);
__exportStar(require("./clipping/ClipPlane"), exports);
__exportStar(require("./clipping/ConvexClipPlaneSet"), exports);
__exportStar(require("./clipping/UnionOfConvexClipPlaneSets"), exports);
__exportStar(require("./clipping/ClipPrimitive"), exports);
__exportStar(require("./clipping/ClipVector"), exports);
__exportStar(require("./clipping/ClipUtils"), exports);
__exportStar(require("./numerics/ConvexPolygon2d"), exports);
__exportStar(require("./geometry4d/PlaneByOriginAndVectors4d"), exports);
__exportStar(require("./geometry4d/Point4d"), exports);
__exportStar(require("./geometry4d/Matrix4d"), exports);
__exportStar(require("./geometry4d/Map4d"), exports);
__exportStar(require("./geometry4d/MomentData"), exports);
__exportStar(require("./numerics/BezierPolynomials"), exports);
__exportStar(require("./numerics/ClusterableArray"), exports);
__exportStar(require("./numerics/Complex"), exports);
__exportStar(require("./numerics/ConvexPolygon2d"), exports);
__exportStar(require("./numerics/PascalCoefficients"), exports);
__exportStar(require("./numerics/Quadrature"), exports);
__exportStar(require("./numerics/Range1dArray"), exports);
__exportStar(require("./numerics/SmallSystem"), exports);
__exportStar(require("./numerics/TriDiagonalSystem"), exports);
__exportStar(require("./curve/Arc3d"), exports);
__exportStar(require("./curve/ConstructCurveBetweenCurves"), exports);
__exportStar(require("./curve/CoordinateXYZ"), exports);
__exportStar(require("./curve/CurveTypes"), exports);
__exportStar(require("./curve/CurveChainWithDistanceIndex"), exports);
__exportStar(require("./curve/CurveExtendMode"), exports);
__exportStar(require("./curve/CurveCollection"), exports);
__exportStar(require("./curve/CurveCurve"), exports);
__exportStar(require("./curve/CurveLocationDetail"), exports);
__exportStar(require("./curve/CurveFactory"), exports);
__exportStar(require("./curve/CurveOps"), exports);
__exportStar(require("./curve/CurvePrimitive"), exports);
__exportStar(require("./curve/CurveProcessor"), exports);
__exportStar(require("./curve/GeometryQuery"), exports);
__exportStar(require("./curve/LineSegment3d"), exports);
__exportStar(require("./curve/LineString3d"), exports);
__exportStar(require("./curve/Loop"), exports);
__exportStar(require("./curve/OffsetOptions"), exports);
__exportStar(require("./curve/ParityRegion"), exports);
__exportStar(require("./curve/Path"), exports);
__exportStar(require("./curve/RegionMomentsXY"), exports);
__exportStar(require("./curve/RegionOps"), exports);
__exportStar(require("./curve/PointString3d"), exports);
__exportStar(require("./curve/ProxyCurve"), exports);
__exportStar(require("./curve/StrokeOptions"), exports);
__exportStar(require("./curve/spiral/TransitionSpiral3d"), exports);
__exportStar(require("./curve/spiral/IntegratedSpiral3d"), exports);
__exportStar(require("./curve/spiral/DirectSpiral3d"), exports);
__exportStar(require("./curve/UnionRegion"), exports);
__exportStar(require("./curve/Query/StrokeCountMap"), exports);
__exportStar(require("./solid/Box"), exports);
__exportStar(require("./solid/Cone"), exports);
__exportStar(require("./solid/LinearSweep"), exports);
__exportStar(require("./solid/RotationalSweep"), exports);
__exportStar(require("./solid/RuledSweep"), exports);
__exportStar(require("./solid/SolidPrimitive"), exports);
__exportStar(require("./solid/Sphere"), exports);
__exportStar(require("./solid/SweepContour"), exports);
__exportStar(require("./solid/TorusPipe"), exports);
__exportStar(require("./bspline/AkimaCurve3d"), exports);
__exportStar(require("./bspline/Bezier1dNd"), exports);
__exportStar(require("./bspline/BezierCurveBase"), exports);
__exportStar(require("./bspline/BezierCurve3d"), exports);
__exportStar(require("./bspline/BezierCurve3dH"), exports);
__exportStar(require("./bspline/BSplineCurve"), exports);
__exportStar(require("./bspline/BSplineCurveOps"), exports);
__exportStar(require("./bspline/BSpline1dNd"), exports);
__exportStar(require("./bspline/BSplineCurve3dH"), exports);
__exportStar(require("./bspline/BSplineSurface"), exports);
__exportStar(require("./bspline/InterpolationCurve3d"), exports);
__exportStar(require("./bspline/KnotVector"), exports);
__exportStar(require("./polyface/AuxData"), exports);
__exportStar(require("./polyface/BoxTopology"), exports);
__exportStar(require("./polyface/FacetFaceData"), exports);
__exportStar(require("./polyface/Polyface"), exports);
__exportStar(require("./polyface/FacetLocationDetail"), exports);
__exportStar(require("./polyface/IndexedEdgeMatcher"), exports);
__exportStar(require("./polyface/IndexedPolyfaceVisitor"), exports);
__exportStar(require("./polyface/IndexedPolyfaceWalker"), exports);
__exportStar(require("./polyface/multiclip/GriddedRaggedRange2dSet"), exports);
__exportStar(require("./polyface/multiclip/GriddedRaggedRange2dSetWithOverflow"), exports);
__exportStar(require("./polyface/PolyfaceBuilder"), exports);
__exportStar(require("./polyface/PolyfaceData"), exports);
__exportStar(require("./polyface/PolyfaceQuery"), exports);
__exportStar(require("./polyface/PolyfaceClip"), exports);
__exportStar(require("./polyface/RangeTree/Point3dArrayRangeTreeContext"), exports);
__exportStar(require("./polyface/RangeTree/LineString3dRangeTreeContext"), exports);
__exportStar(require("./polyface/RangeTree/PolyfaceRangeTreeContext"), exports);
__exportStar(require("./polyface/TaggedNumericData"), exports);
__exportStar(require("./topology/SpaceTriangulation"), exports);
__exportStar(require("./serialization/IModelJsonSchema"), exports);
__exportStar(require("./serialization/DeepCompare"), exports);
__exportStar(require("./serialization/GeometrySamples"), exports);
__exportStar(require("./serialization/SerializationHelpers"), exports);
var BentleyGeometryFlatBuffer_1 = require("./serialization/BentleyGeometryFlatBuffer");
Object.defineProperty(exports, "BentleyGeometryFlatBuffer", { enumerable: true, get: function () { return BentleyGeometryFlatBuffer_1.BentleyGeometryFlatBuffer; } });
//# sourceMappingURL=core-geometry.js.map