@itwin/core-geometry 4.7.0-dev.8 → 4.8.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/Constant.js.map +1 -1
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/bspline/KnotVector.js.map +1 -1
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/OffsetOptions.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.d.ts +15 -13
- package/lib/cjs/geometry3d/Angle.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Angle.js +24 -38
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/MomentData.js.map +1 -1
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BandedSystem.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Complex.js.map +1 -1
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
- package/lib/cjs/numerics/PolarData.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/numerics/Quadrature.js.map +1 -1
- package/lib/cjs/numerics/Range1dArray.js.map +1 -1
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/cjs/numerics/UnionFind.js.map +1 -1
- package/lib/cjs/numerics/UsageSums.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/BoxTopology.js.map +1 -1
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +46 -13
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +78 -24
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/Polyface.d.ts +5 -0
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +70 -64
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +95 -83
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.d.ts +19 -12
- package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
- package/lib/cjs/solid/TorusPipe.js +27 -15
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
- package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Constant.js.map +1 -1
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/bspline/KnotVector.js.map +1 -1
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/OffsetOptions.js.map +1 -1
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/esm/geometry3d/Angle.d.ts +15 -13
- package/lib/esm/geometry3d/Angle.d.ts.map +1 -1
- package/lib/esm/geometry3d/Angle.js +24 -38
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/MomentData.js.map +1 -1
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BandedSystem.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Complex.js.map +1 -1
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
- package/lib/esm/numerics/PolarData.js.map +1 -1
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/numerics/Quadrature.js.map +1 -1
- package/lib/esm/numerics/Range1dArray.js.map +1 -1
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/esm/numerics/UnionFind.js.map +1 -1
- package/lib/esm/numerics/UsageSums.js.map +1 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/BoxTopology.js.map +1 -1
- package/lib/esm/polyface/FacetFaceData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +46 -13
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js +78 -24
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/Polyface.d.ts +5 -0
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +70 -64
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +95 -83
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeLengthData.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SolidPrimitive.js.map +1 -1
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.d.ts +19 -12
- package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
- package/lib/esm/solid/TorusPipe.js +27 -15
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/SignedDataSummary.js.map +1 -1
- package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +3 -3
|
@@ -159,6 +159,18 @@ export declare enum DuplicateFacetClusterSelector {
|
|
|
159
159
|
/** Retain one from any cluster with an odd number of faces. */
|
|
160
160
|
SelectOneByParity = 3
|
|
161
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Announce the points on a drape panel.
|
|
164
|
+
* * The first two points in the array are always along the draped line segment.
|
|
165
|
+
* * The last two are always on the facet.
|
|
166
|
+
* * If there are 4 points, those two pairs are distinct, i.e. both segment points are to the same side of the facet.
|
|
167
|
+
* * If there are 3 points, those two pairs share an on-facet point.
|
|
168
|
+
* * The panel is ordered so the outward normal is to the right of the draped segment.
|
|
169
|
+
* @param indexAOnFacet index (in points) of the point that is the first facet point for moving forward along the linestring.
|
|
170
|
+
* @param indexBOnFacet index (in points) of the point that is the second facet point for moving forward along the linestring.
|
|
171
|
+
* @public
|
|
172
|
+
*/
|
|
173
|
+
export type AnnounceDrapePanel = (linestring: GrowableXYZArray, segmentIndex: number, polyface: Polyface, facetIndex: number, points: Point3d[], indexAOnFacet: number, indexBOnFacet: number) => any;
|
|
162
174
|
/**
|
|
163
175
|
* PolyfaceQuery is a static class whose methods implement queries on a `Polyface` or `PolyfaceVisitor` provided as a
|
|
164
176
|
* parameter to each method.
|
|
@@ -220,41 +232,39 @@ export declare class PolyfaceQuery {
|
|
|
220
232
|
*/
|
|
221
233
|
static areFacetsConvex(source: Polyface | PolyfaceVisitor): boolean;
|
|
222
234
|
/**
|
|
223
|
-
*
|
|
224
|
-
* *
|
|
225
|
-
*
|
|
226
|
-
* * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
|
|
227
|
-
* * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
|
|
228
|
-
* component, such as a pyramid with no underside.
|
|
229
|
-
* * It is not a correct test if there are multiple, disjoint components.
|
|
230
|
-
* * Take the above-mentioned pyramid with no underside.
|
|
231
|
-
* * Within the same mesh, have a second pyramid placed to the side, still facing upward.
|
|
232
|
-
* * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
|
|
235
|
+
* Compute a number summarizing the dihedral angles in the mesh.
|
|
236
|
+
* * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
|
|
237
|
+
* product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
|
|
233
238
|
* @param source mesh.
|
|
234
239
|
* @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
|
|
235
|
-
*
|
|
240
|
+
* See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
|
|
241
|
+
* connected components.
|
|
242
|
+
* * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
|
|
243
|
+
* * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
|
|
244
|
+
* has outward normals.
|
|
245
|
+
* * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
|
|
246
|
+
* has inward normals.
|
|
247
|
+
* * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
|
|
248
|
+
* be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
|
|
249
|
+
* `ignoreBoundaries` is false) adjacent to exactly one facet.
|
|
236
250
|
*/
|
|
237
|
-
static isConvexByDihedralAngleCount(source: Polyface, ignoreBoundaries?: boolean): boolean;
|
|
238
|
-
/**
|
|
239
|
-
* Compute a number summarizing the dihedral angles in the mesh.
|
|
240
|
-
* * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
|
|
241
|
-
* product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
|
|
242
|
-
* @param source mesh.
|
|
243
|
-
* @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
|
|
244
|
-
* See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
|
|
245
|
-
* connected components.
|
|
246
|
-
* * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
|
|
247
|
-
* * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
|
|
248
|
-
* has outward normals.
|
|
249
|
-
* * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
|
|
250
|
-
* has inward normals.
|
|
251
|
-
* * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
|
|
252
|
-
* be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
|
|
253
|
-
* `ignoreBoundaries` is false) adjacent to exactly one facet.
|
|
254
|
-
*/
|
|
255
251
|
static dihedralAngleSummary(source: Polyface, ignoreBoundaries?: boolean): number;
|
|
256
|
-
/**
|
|
257
|
-
|
|
252
|
+
/**
|
|
253
|
+
* Test for convex volume by dihedral angle tests on all edges.
|
|
254
|
+
* * This tests if all dihedral angles of the mesh are positive.
|
|
255
|
+
* * In a closed solid, this is a strong test for overall mesh convexity with outward facing normals.
|
|
256
|
+
* * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
|
|
257
|
+
* * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
|
|
258
|
+
* component, such as a pyramid with no underside.
|
|
259
|
+
* * It is not a correct test if there are multiple, disjoint components.
|
|
260
|
+
* * Take the above-mentioned pyramid with no underside.
|
|
261
|
+
* * Within the same mesh, have a second pyramid placed to the side, still facing upward.
|
|
262
|
+
* * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
|
|
263
|
+
* @param source mesh.
|
|
264
|
+
* @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
|
|
265
|
+
* @returns true if all dihedral angles of the mesh are positive.
|
|
266
|
+
*/
|
|
267
|
+
static isConvexByDihedralAngleCount(source: Polyface, ignoreBoundaries?: boolean): boolean;
|
|
258
268
|
/**
|
|
259
269
|
* Test edges pairing in `source` mesh.
|
|
260
270
|
* * For `allowSimpleBoundaries === false` true return means this is a closed 2-manifold surface.
|
|
@@ -264,6 +274,19 @@ export declare class PolyfaceQuery {
|
|
|
264
274
|
* * Any edge with 2 adjacent facets in the same direction triggers a `false` return.
|
|
265
275
|
*/
|
|
266
276
|
static isPolyfaceManifold(source: Polyface, allowSimpleBoundaries?: boolean): boolean;
|
|
277
|
+
/** Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume. */
|
|
278
|
+
static isPolyfaceClosedByEdgePairing(source: Polyface): boolean;
|
|
279
|
+
/**
|
|
280
|
+
* Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume.
|
|
281
|
+
* If not, extract the boundary edges as lines.
|
|
282
|
+
* @param source polyface or visitor.
|
|
283
|
+
* @param announceEdge function to be called with each boundary edge. The announcement is start and end points,
|
|
284
|
+
* start and end indices, and facet index.
|
|
285
|
+
* @param includeTypical true to announce typical boundary edges with a single adjacent facet.
|
|
286
|
+
* @param includeMismatch true to announce edges with more than 2 adjacent facets.
|
|
287
|
+
* @param includeNull true to announce edges with identical start and end vertex indices.
|
|
288
|
+
*/
|
|
289
|
+
static announceBoundaryEdges(source: Polyface | PolyfaceVisitor | undefined, announceEdge: (pointA: Point3d, pointB: Point3d, indexA: number, indexB: number, facetIndex: number) => void, includeTypical?: boolean, includeMismatch?: boolean, includeNull?: boolean): void;
|
|
267
290
|
/**
|
|
268
291
|
* Construct a CurveCollection containing boundary edges.
|
|
269
292
|
* * Each edge is a LineSegment3d.
|
|
@@ -282,17 +305,6 @@ export declare class PolyfaceQuery {
|
|
|
282
305
|
* @param includeNull true to include edges with identical start and end vertex indices.
|
|
283
306
|
*/
|
|
284
307
|
static collectBoundaryEdges(source: Polyface | PolyfaceVisitor, includeTypical?: boolean, includeMismatch?: boolean, includeNull?: boolean): AnyChain | undefined;
|
|
285
|
-
/**
|
|
286
|
-
* Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume.
|
|
287
|
-
* If not, extract the boundary edges as lines.
|
|
288
|
-
* @param source polyface or visitor.
|
|
289
|
-
* @param announceEdge function to be called with each boundary edge. The announcement is start and end points,
|
|
290
|
-
* start and end indices, and facet index.
|
|
291
|
-
* @param includeTypical true to announce typical boundary edges with a single adjacent facet.
|
|
292
|
-
* @param includeMismatch true to announce edges with more than 2 adjacent facets.
|
|
293
|
-
* @param includeNull true to announce edges with identical start and end vertex indices.
|
|
294
|
-
*/
|
|
295
|
-
static announceBoundaryEdges(source: Polyface | PolyfaceVisitor | undefined, announceEdge: (pointA: Point3d, pointB: Point3d, indexA: number, indexB: number, facetIndex: number) => void, includeTypical?: boolean, includeMismatch?: boolean, includeNull?: boolean): void;
|
|
296
308
|
/**
|
|
297
309
|
* Load all half edges from a mesh to an IndexedEdgeMatcher.
|
|
298
310
|
* @param polyface a mesh or a visitor assumed to have numWrap === 1.
|
|
@@ -413,9 +425,15 @@ export declare class PolyfaceQuery {
|
|
|
413
425
|
static cloneFiltered(source: Polyface | PolyfaceVisitor, filter: (visitor: PolyfaceVisitor) => boolean): IndexedPolyface;
|
|
414
426
|
/** Clone the facets with in-facet dangling edges removed. */
|
|
415
427
|
static cloneWithDanglingEdgesRemoved(source: Polyface | PolyfaceVisitor): IndexedPolyface;
|
|
416
|
-
/**
|
|
428
|
+
/**
|
|
429
|
+
* Return the point count of the `source`.
|
|
430
|
+
* * If `source` is a visitor, this is an upper bound on the number of addressed mesh vertices.
|
|
431
|
+
*/
|
|
417
432
|
static visitorClientPointCount(source: Polyface | PolyfaceVisitor): number;
|
|
418
|
-
/**
|
|
433
|
+
/**
|
|
434
|
+
* Return the facet count of the `source`.
|
|
435
|
+
* * If `source` is a visitor, this is the number of facets it can visit.
|
|
436
|
+
*/
|
|
419
437
|
static visitorClientFacetCount(source: Polyface | PolyfaceVisitor): number;
|
|
420
438
|
/**
|
|
421
439
|
* Partition the facet set into connected components such that two adjacent facets are in the same component if and
|
|
@@ -513,24 +531,24 @@ export declare class PolyfaceQuery {
|
|
|
513
531
|
*/
|
|
514
532
|
private static compareFacetIndexAndVertexIndices;
|
|
515
533
|
/**
|
|
516
|
-
*
|
|
517
|
-
* @param polyface the polyface.
|
|
518
|
-
* @param includeSingletons if true, non-duplicated facets are included in the output.
|
|
534
|
+
* Announce facet duplicates.
|
|
519
535
|
* @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
|
|
520
536
|
* indices of a cluster of facets with the same vertex indices.
|
|
521
537
|
*/
|
|
522
|
-
static
|
|
538
|
+
static announceDuplicateFacetIndices(polyface: Polyface, announceCluster: (clusterFacetIndices: number[]) => void): void;
|
|
523
539
|
/**
|
|
524
|
-
*
|
|
540
|
+
* Collect facet duplicates.
|
|
541
|
+
* @param polyface the polyface.
|
|
542
|
+
* @param includeSingletons if true, non-duplicated facets are included in the output.
|
|
525
543
|
* @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
|
|
526
544
|
* indices of a cluster of facets with the same vertex indices.
|
|
527
545
|
*/
|
|
528
|
-
static
|
|
546
|
+
static collectDuplicateFacetIndices(polyface: Polyface, includeSingletons?: boolean): number[][];
|
|
529
547
|
/**
|
|
530
|
-
* Return a new facet set
|
|
548
|
+
* Return a new facet set from the source facets, specifying how to copy duplicate facets.
|
|
531
549
|
* @param source the polyface.
|
|
532
550
|
* @param includeSingletons true to copy facets that only appear once
|
|
533
|
-
* @param clusterSelector indicates whether
|
|
551
|
+
* @param clusterSelector indicates whether to copy 0, 1, or all facets in each cluster of duplicate facets.
|
|
534
552
|
*/
|
|
535
553
|
static cloneByFacetDuplication(source: Polyface, includeSingletons: boolean, clusterSelector: DuplicateFacetClusterSelector): Polyface;
|
|
536
554
|
/** Clone the facets, removing points that are simply within colinear edges. */
|
|
@@ -643,16 +661,4 @@ export declare class PolyfaceQuery {
|
|
|
643
661
|
*/
|
|
644
662
|
static intersectRay3d(visitor: Polyface | PolyfaceVisitor, ray: Ray3d, options?: FacetIntersectOptions): FacetLocationDetail | undefined;
|
|
645
663
|
}
|
|
646
|
-
/**
|
|
647
|
-
* Announce the points on a drape panel.
|
|
648
|
-
* * The first two points in the array are always along the draped line segment.
|
|
649
|
-
* * The last two are always on the facet.
|
|
650
|
-
* * If there are 4 points, those two pairs are distinct, i.e. both segment points are to the same side of the facet.
|
|
651
|
-
* * If there are 3 points, those two pairs share an on-facet point.
|
|
652
|
-
* * The panel is ordered so the outward normal is to the right of the draped segment.
|
|
653
|
-
* @param indexAOnFacet index (in points) of the point that is the first facet point for moving forward along the linestring.
|
|
654
|
-
* @param indexBOnFacet index (in points) of the point that is the second facet point for moving forward along the linestring.
|
|
655
|
-
* @public
|
|
656
|
-
*/
|
|
657
|
-
export type AnnounceDrapePanel = (linestring: GrowableXYZArray, segmentIndex: number, polyface: Polyface, facetIndex: number, points: Point3d[], indexAOnFacet: number, indexBOnFacet: number) => any;
|
|
658
664
|
//# sourceMappingURL=PolyfaceQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolyfaceQuery.d.ts","sourceRoot":"","sources":["../../../src/polyface/PolyfaceQuery.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PolyfaceQuery.d.ts","sourceRoot":"","sources":["../../../src/polyface/PolyfaceQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -349,40 +349,22 @@ export class PolyfaceQuery {
|
|
|
349
349
|
return true;
|
|
350
350
|
}
|
|
351
351
|
/**
|
|
352
|
-
*
|
|
353
|
-
* *
|
|
354
|
-
*
|
|
355
|
-
* * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
|
|
356
|
-
* * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
|
|
357
|
-
* component, such as a pyramid with no underside.
|
|
358
|
-
* * It is not a correct test if there are multiple, disjoint components.
|
|
359
|
-
* * Take the above-mentioned pyramid with no underside.
|
|
360
|
-
* * Within the same mesh, have a second pyramid placed to the side, still facing upward.
|
|
361
|
-
* * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
|
|
352
|
+
* Compute a number summarizing the dihedral angles in the mesh.
|
|
353
|
+
* * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
|
|
354
|
+
* product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
|
|
362
355
|
* @param source mesh.
|
|
363
356
|
* @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
|
|
364
|
-
*
|
|
357
|
+
* See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
|
|
358
|
+
* connected components.
|
|
359
|
+
* * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
|
|
360
|
+
* * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
|
|
361
|
+
* has outward normals.
|
|
362
|
+
* * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
|
|
363
|
+
* has inward normals.
|
|
364
|
+
* * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
|
|
365
|
+
* be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
|
|
366
|
+
* `ignoreBoundaries` is false) adjacent to exactly one facet.
|
|
365
367
|
*/
|
|
366
|
-
static isConvexByDihedralAngleCount(source, ignoreBoundaries = false) {
|
|
367
|
-
return this.dihedralAngleSummary(source, ignoreBoundaries) > 0;
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Compute a number summarizing the dihedral angles in the mesh.
|
|
371
|
-
* * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
|
|
372
|
-
* product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
|
|
373
|
-
* @param source mesh.
|
|
374
|
-
* @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
|
|
375
|
-
* See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
|
|
376
|
-
* connected components.
|
|
377
|
-
* * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
|
|
378
|
-
* * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
|
|
379
|
-
* has outward normals.
|
|
380
|
-
* * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
|
|
381
|
-
* has inward normals.
|
|
382
|
-
* * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
|
|
383
|
-
* be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
|
|
384
|
-
* `ignoreBoundaries` is false) adjacent to exactly one facet.
|
|
385
|
-
*/
|
|
386
368
|
static dihedralAngleSummary(source, ignoreBoundaries = false) {
|
|
387
369
|
// more info can be found at geometry/internaldocs/Polyface.md
|
|
388
370
|
const edges = new IndexedEdgeMatcher();
|
|
@@ -438,9 +420,23 @@ export class PolyfaceQuery {
|
|
|
438
420
|
return 0;
|
|
439
421
|
return -2;
|
|
440
422
|
}
|
|
441
|
-
/**
|
|
442
|
-
|
|
443
|
-
|
|
423
|
+
/**
|
|
424
|
+
* Test for convex volume by dihedral angle tests on all edges.
|
|
425
|
+
* * This tests if all dihedral angles of the mesh are positive.
|
|
426
|
+
* * In a closed solid, this is a strong test for overall mesh convexity with outward facing normals.
|
|
427
|
+
* * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
|
|
428
|
+
* * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
|
|
429
|
+
* component, such as a pyramid with no underside.
|
|
430
|
+
* * It is not a correct test if there are multiple, disjoint components.
|
|
431
|
+
* * Take the above-mentioned pyramid with no underside.
|
|
432
|
+
* * Within the same mesh, have a second pyramid placed to the side, still facing upward.
|
|
433
|
+
* * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
|
|
434
|
+
* @param source mesh.
|
|
435
|
+
* @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
|
|
436
|
+
* @returns true if all dihedral angles of the mesh are positive.
|
|
437
|
+
*/
|
|
438
|
+
static isConvexByDihedralAngleCount(source, ignoreBoundaries = false) {
|
|
439
|
+
return this.dihedralAngleSummary(source, ignoreBoundaries) > 0;
|
|
444
440
|
}
|
|
445
441
|
/**
|
|
446
442
|
* Test edges pairing in `source` mesh.
|
|
@@ -464,36 +460,9 @@ export class PolyfaceQuery {
|
|
|
464
460
|
edges.sortAndCollectClusters(undefined, allowSimpleBoundaries ? undefined : badClusters, undefined, badClusters);
|
|
465
461
|
return badClusters.length === 0;
|
|
466
462
|
}
|
|
467
|
-
/**
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
* @param source polyface or visitor.
|
|
471
|
-
* @param includeTypical true to in include typical boundary edges with a single adjacent facet.
|
|
472
|
-
* @param includeMismatch true to include edges with more than 2 adjacent facets.
|
|
473
|
-
* @param includeNull true to include edges with identical start and end vertex indices.
|
|
474
|
-
*/
|
|
475
|
-
static boundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
|
|
476
|
-
const result = new BagOfCurves();
|
|
477
|
-
const announceEdge = (pointA, pointB, _indexA, _indexB, _readIndex) => {
|
|
478
|
-
result.tryAddChild(LineSegment3d.create(pointA, pointB));
|
|
479
|
-
};
|
|
480
|
-
PolyfaceQuery.announceBoundaryEdges(source, announceEdge, includeTypical, includeMismatch, includeNull);
|
|
481
|
-
if (result.children.length === 0)
|
|
482
|
-
return undefined;
|
|
483
|
-
return result;
|
|
484
|
-
}
|
|
485
|
-
/**
|
|
486
|
-
* Collect boundary edges.
|
|
487
|
-
* * Return the edges as the simplest collection of chains of line segments.
|
|
488
|
-
* @param source polyface or visitor.
|
|
489
|
-
* @param includeTypical true to in include typical boundary edges with a single adjacent facet.
|
|
490
|
-
* @param includeMismatch true to include edges with more than 2 adjacent facets.
|
|
491
|
-
* @param includeNull true to include edges with identical start and end vertex indices.
|
|
492
|
-
*/
|
|
493
|
-
static collectBoundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
|
|
494
|
-
const collector = new MultiChainCollector(Geometry.smallMetricDistance, Geometry.smallMetricDistance);
|
|
495
|
-
PolyfaceQuery.announceBoundaryEdges(source, (ptA, ptB) => collector.captureCurve(LineSegment3d.create(ptA, ptB)), includeTypical, includeMismatch, includeNull);
|
|
496
|
-
return collector.grabResult(true);
|
|
463
|
+
/** Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume. */
|
|
464
|
+
static isPolyfaceClosedByEdgePairing(source) {
|
|
465
|
+
return this.isPolyfaceManifold(source, false);
|
|
497
466
|
}
|
|
498
467
|
/**
|
|
499
468
|
* Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume.
|
|
@@ -544,6 +513,37 @@ export class PolyfaceQuery {
|
|
|
544
513
|
}
|
|
545
514
|
}
|
|
546
515
|
}
|
|
516
|
+
/**
|
|
517
|
+
* Construct a CurveCollection containing boundary edges.
|
|
518
|
+
* * Each edge is a LineSegment3d.
|
|
519
|
+
* @param source polyface or visitor.
|
|
520
|
+
* @param includeTypical true to in include typical boundary edges with a single adjacent facet.
|
|
521
|
+
* @param includeMismatch true to include edges with more than 2 adjacent facets.
|
|
522
|
+
* @param includeNull true to include edges with identical start and end vertex indices.
|
|
523
|
+
*/
|
|
524
|
+
static boundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
|
|
525
|
+
const result = new BagOfCurves();
|
|
526
|
+
const announceEdge = (pointA, pointB, _indexA, _indexB, _readIndex) => {
|
|
527
|
+
result.tryAddChild(LineSegment3d.create(pointA, pointB));
|
|
528
|
+
};
|
|
529
|
+
PolyfaceQuery.announceBoundaryEdges(source, announceEdge, includeTypical, includeMismatch, includeNull);
|
|
530
|
+
if (result.children.length === 0)
|
|
531
|
+
return undefined;
|
|
532
|
+
return result;
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Collect boundary edges.
|
|
536
|
+
* * Return the edges as the simplest collection of chains of line segments.
|
|
537
|
+
* @param source polyface or visitor.
|
|
538
|
+
* @param includeTypical true to in include typical boundary edges with a single adjacent facet.
|
|
539
|
+
* @param includeMismatch true to include edges with more than 2 adjacent facets.
|
|
540
|
+
* @param includeNull true to include edges with identical start and end vertex indices.
|
|
541
|
+
*/
|
|
542
|
+
static collectBoundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
|
|
543
|
+
const collector = new MultiChainCollector(Geometry.smallMetricDistance, Geometry.smallMetricDistance);
|
|
544
|
+
PolyfaceQuery.announceBoundaryEdges(source, (ptA, ptB) => collector.captureCurve(LineSegment3d.create(ptA, ptB)), includeTypical, includeMismatch, includeNull);
|
|
545
|
+
return collector.grabResult(true);
|
|
546
|
+
}
|
|
547
547
|
/**
|
|
548
548
|
* Load all half edges from a mesh to an IndexedEdgeMatcher.
|
|
549
549
|
* @param polyface a mesh or a visitor assumed to have numWrap === 1.
|
|
@@ -989,13 +989,17 @@ export class PolyfaceQuery {
|
|
|
989
989
|
}
|
|
990
990
|
return builder.claimPolyface(true);
|
|
991
991
|
}
|
|
992
|
-
/**
|
|
992
|
+
/**
|
|
993
|
+
* Return the point count of the `source`.
|
|
994
|
+
* * If `source` is a visitor, this is an upper bound on the number of addressed mesh vertices.
|
|
995
|
+
*/
|
|
993
996
|
static visitorClientPointCount(source) {
|
|
994
997
|
if (source instanceof Polyface)
|
|
995
998
|
return source.data.point.length;
|
|
996
999
|
const polyface = source.clientPolyface();
|
|
997
1000
|
if (polyface !== undefined)
|
|
998
1001
|
return polyface.data.point.length;
|
|
1002
|
+
const saveReadIndex = source.currentReadIndex();
|
|
999
1003
|
source.reset();
|
|
1000
1004
|
let maxIndex = -1;
|
|
1001
1005
|
while (source.moveToNextFacet()) {
|
|
@@ -1003,22 +1007,30 @@ export class PolyfaceQuery {
|
|
|
1003
1007
|
if (pointIndex > maxIndex)
|
|
1004
1008
|
maxIndex = pointIndex;
|
|
1005
1009
|
}
|
|
1010
|
+
source.moveToReadIndex(saveReadIndex);
|
|
1006
1011
|
return maxIndex + 1;
|
|
1007
1012
|
}
|
|
1008
|
-
/**
|
|
1013
|
+
/**
|
|
1014
|
+
* Return the facet count of the `source`.
|
|
1015
|
+
* * If `source` is a visitor, this is the number of facets it can visit.
|
|
1016
|
+
*/
|
|
1009
1017
|
static visitorClientFacetCount(source) {
|
|
1010
1018
|
if (source instanceof Polyface) {
|
|
1011
1019
|
if (source.facetCount !== undefined)
|
|
1012
1020
|
return source.facetCount;
|
|
1013
1021
|
source = source.createVisitor(0);
|
|
1014
1022
|
}
|
|
1023
|
+
if (source.getVisitableFacetCount)
|
|
1024
|
+
return source.getVisitableFacetCount();
|
|
1015
1025
|
const polyface = source.clientPolyface();
|
|
1016
1026
|
if (polyface !== undefined && polyface.facetCount !== undefined)
|
|
1017
1027
|
return polyface.facetCount;
|
|
1028
|
+
const saveReadIndex = source.currentReadIndex();
|
|
1018
1029
|
let facetCount = 0;
|
|
1019
1030
|
source.reset();
|
|
1020
1031
|
while (source.moveToNextFacet())
|
|
1021
1032
|
++facetCount;
|
|
1033
|
+
source.moveToReadIndex(saveReadIndex);
|
|
1022
1034
|
return facetCount;
|
|
1023
1035
|
}
|
|
1024
1036
|
/**
|
|
@@ -1323,21 +1335,6 @@ export class PolyfaceQuery {
|
|
|
1323
1335
|
}
|
|
1324
1336
|
return 0;
|
|
1325
1337
|
}
|
|
1326
|
-
/**
|
|
1327
|
-
* Collect facet duplicates.
|
|
1328
|
-
* @param polyface the polyface.
|
|
1329
|
-
* @param includeSingletons if true, non-duplicated facets are included in the output.
|
|
1330
|
-
* @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
|
|
1331
|
-
* indices of a cluster of facets with the same vertex indices.
|
|
1332
|
-
*/
|
|
1333
|
-
static collectDuplicateFacetIndices(polyface, includeSingletons = false) {
|
|
1334
|
-
const result = [];
|
|
1335
|
-
this.announceDuplicateFacetIndices(polyface, (clusterFacetIndices) => {
|
|
1336
|
-
if (includeSingletons || clusterFacetIndices.length > 1)
|
|
1337
|
-
result.push(clusterFacetIndices.slice());
|
|
1338
|
-
});
|
|
1339
|
-
return result;
|
|
1340
|
-
}
|
|
1341
1338
|
/**
|
|
1342
1339
|
* Announce facet duplicates.
|
|
1343
1340
|
* @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
|
|
@@ -1386,10 +1383,25 @@ export class PolyfaceQuery {
|
|
|
1386
1383
|
}
|
|
1387
1384
|
}
|
|
1388
1385
|
/**
|
|
1389
|
-
*
|
|
1386
|
+
* Collect facet duplicates.
|
|
1387
|
+
* @param polyface the polyface.
|
|
1388
|
+
* @param includeSingletons if true, non-duplicated facets are included in the output.
|
|
1389
|
+
* @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
|
|
1390
|
+
* indices of a cluster of facets with the same vertex indices.
|
|
1391
|
+
*/
|
|
1392
|
+
static collectDuplicateFacetIndices(polyface, includeSingletons = false) {
|
|
1393
|
+
const result = [];
|
|
1394
|
+
this.announceDuplicateFacetIndices(polyface, (clusterFacetIndices) => {
|
|
1395
|
+
if (includeSingletons || clusterFacetIndices.length > 1)
|
|
1396
|
+
result.push(clusterFacetIndices.slice());
|
|
1397
|
+
});
|
|
1398
|
+
return result;
|
|
1399
|
+
}
|
|
1400
|
+
/**
|
|
1401
|
+
* Return a new facet set from the source facets, specifying how to copy duplicate facets.
|
|
1390
1402
|
* @param source the polyface.
|
|
1391
1403
|
* @param includeSingletons true to copy facets that only appear once
|
|
1392
|
-
* @param clusterSelector indicates whether
|
|
1404
|
+
* @param clusterSelector indicates whether to copy 0, 1, or all facets in each cluster of duplicate facets.
|
|
1393
1405
|
*/
|
|
1394
1406
|
static cloneByFacetDuplication(source, includeSingletons, clusterSelector) {
|
|
1395
1407
|
const builder = PolyfaceBuilder.create();
|