@itwin/core-geometry 5.1.2 → 5.1.3-experimental.1
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/AnnounceTangentStrokeHandler.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/EllipticalArcApproximationContext.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/TransferWithSplitArcs.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.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/SmallSystem.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.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js.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.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.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/AnnounceTangentStrokeHandler.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/EllipticalArcApproximationContext.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/TransferWithSplitArcs.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.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/SmallSystem.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.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.js.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.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.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeometrySamples.js","sourceRoot":"","sources":["../../../src/serialization/GeometrySamples.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Serialization\n */\nimport { BezierCurve3d } from \"../bspline/BezierCurve3d\";\nimport { BezierCurve3dH } from \"../bspline/BezierCurve3dH\";\nimport { BSplineCurve3d, BSplineCurve3dBase } from \"../bspline/BSplineCurve\";\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\nimport { BSplineSurface3d, BSplineSurface3dH, UVSelect, WeightStyle } from \"../bspline/BSplineSurface\";\nimport { InterpolationCurve3d, InterpolationCurve3dOptions } from \"../bspline/InterpolationCurve3d\";\nimport { BSplineWrapMode, KnotVector } from \"../bspline/KnotVector\";\nimport { ClipPlane } from \"../clipping/ClipPlane\";\nimport { ConvexClipPlaneSet } from \"../clipping/ConvexClipPlaneSet\";\nimport { UnionOfConvexClipPlaneSets } from \"../clipping/UnionOfConvexClipPlaneSets\";\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { CoordinateXYZ } from \"../curve/CoordinateXYZ\";\nimport { CurveChainWithDistanceIndex } from \"../curve/CurveChainWithDistanceIndex\";\nimport { BagOfCurves } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { ParityRegion } from \"../curve/ParityRegion\";\nimport { Path } from \"../curve/Path\";\nimport { PointString3d } from \"../curve/PointString3d\";\nimport { DirectSpiral3d } from \"../curve/spiral/DirectSpiral3d\";\nimport { IntegratedSpiral3d } from \"../curve/spiral/IntegratedSpiral3d\";\nimport { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\nimport { UnionRegion } from \"../curve/UnionRegion\";\nimport { AxisOrder, Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { AngleSweep } from \"../geometry3d/AngleSweep\";\nimport { UVSurface } from \"../geometry3d/GeometryHandler\";\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\nimport { Matrix3d } from \"../geometry3d/Matrix3d\";\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Point2d, Vector2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range1d, Range2d, Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Segment1d } from \"../geometry3d/Segment1d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { XYAndZ } from \"../geometry3d/XYZProps\";\nimport { Map4d } from \"../geometry4d/Map4d\";\nimport { Matrix4d } from \"../geometry4d/Matrix4d\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { AuxChannel, AuxChannelData, AuxChannelDataType, PolyfaceAuxData } from \"../polyface/AuxData\";\nimport { IndexedPolyface } from \"../polyface/Polyface\";\nimport { PolyfaceBuilder } from \"../polyface/PolyfaceBuilder\";\nimport { PolyfaceData } from \"../polyface/PolyfaceData\";\nimport { Box } from \"../solid/Box\";\nimport { Cone } from \"../solid/Cone\";\nimport { LinearSweep } from \"../solid/LinearSweep\";\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\nimport { RuledSweep } from \"../solid/RuledSweep\";\nimport { SolidPrimitive } from \"../solid/SolidPrimitive\";\nimport { Sphere } from \"../solid/Sphere\";\nimport { TorusPipe } from \"../solid/TorusPipe\";\n\n/**\n * Function to be called to obtain function value at (i,n), for\n * * n fixed over many calls\n * * n may be assumed 1 or greater (so fraction = i/n is safe)\n * * i varies from 0 to n\n * @alpha\n */\nexport type SteppedIndexFunction = (i: number, n: number) => number;\n/**\n * Static methods to create functions of type SteppedIndexFunction\n * * Convention: constant value is optional last argument, with default value 0\n * @alpha\n */\nexport class SteppedIndexFunctionFactory {\n /** Returns a callable function that returns a constant value. */\n public static createConstant(value: number = 0): SteppedIndexFunction {\n return (_i: number, _n: number) => value;\n }\n /**\n * Return a function that steps linearly\n * * f(i,n) = y0 + (i/n) * a\n */\n public static createLinear(a: number, f0: number = 0): SteppedIndexFunction {\n return (i: number, n: number) => (f0 + a * (i / n));\n }\n /**\n * Return a function that steps with cosine of angles in sweep\n * * f(i,n) = y0 + amplitude * cos(i/n)\n */\n public static createCosine(amplitude: number, sweep: AngleSweep = AngleSweep.create360(), f0: number = 0): SteppedIndexFunction {\n return (i: number, n: number) => (f0 + amplitude * Math.cos(sweep.fractionToRadians(i / n)));\n }\n /**\n * Return a function that steps with cosine of angles in sweep.\n * * f(i,n) = y0 + amplitude * sin(i/n)\n */\n public static createSine(amplitude: number, sweep: AngleSweep = AngleSweep.create360(), f0: number = 0): SteppedIndexFunction {\n return (i: number, n: number) => (f0 + amplitude * Math.sin(sweep.fractionToRadians(i / n)));\n }\n}\n// cspell:word Franke bivariate\n/**\n * Implement Franke's function, a smooth bivariate real-valued function with interesting features over [0,1]x[0,1].\n * * This surface is commonly used to test interpolation algorithms. See https://www.sfu.ca/~ssurjano/franke2d.html\n * @internal\n */\nclass FrankeSurface implements UVSurface {\n public scales: number[] | undefined;\n public constructor(scales: number[] | undefined) {\n this.scales = scales;\n }\n private exp0(u: number, v: number): number {\n return Math.exp(-0.25 * (u * u + v * v) + u + v - 2);\n }\n private exp1(u: number, v: number): number {\n return Math.exp(-(((u + 1) * (u + 1)) / 49 + 0.1 * (v + 1)));\n }\n private exp2(u: number, v: number): number {\n return Math.exp(-0.25 * ((u - 7) * (u - 7) + (v - 3) * (v - 3)));\n }\n private exp3(u: number, v: number): number {\n return Math.exp(-((u - 4) * (u - 4) + (v - 7) * (v - 7)));\n }\n private f(u: number, v: number): number {\n const f0 = 0.75 * this.exp0(u, v);\n const f1 = 0.75 * this.exp1(u, v);\n const f2 = 0.5 * this.exp2(u, v);\n const f3 = -0.2 * this.exp3(u, v);\n if (this.scales !== undefined) {\n const numScale = this.scales.length;\n let f = 0;\n if (numScale >= 1)\n f += this.scales[0] * f0;\n if (numScale >= 2)\n f += this.scales[1] * f1;\n if (numScale >= 3)\n f += this.scales[2] * f2;\n if (numScale >= 4)\n f += this.scales[3] * f3;\n return f;\n } else\n return f0 + f1 + f2 + f3;\n }\n private du(u: number, v: number): number {\n const du0 = -3.375 * (u - 2) * this.exp0(u, v);\n const du1 = -(27 / 98) * (u + 1) * this.exp1(u, v);\n const du2 = -2.25 * (u - 7) * this.exp2(u, v);\n const du3 = 3.6 * (u - 4) * this.exp3(u, v);\n return du0 + du1 + du2 + du3;\n }\n private dv(u: number, v: number): number {\n const dv0 = -3.375 * (v - 2) * this.exp0(u, v);\n const dv1 = -0.675 * this.exp1(u, v);\n const dv2 = -2.25 * (v - 3) * this.exp2(u, v);\n const dv3 = 3.6 * (v - 7) * this.exp3(u, v);\n return dv0 + dv1 + dv2 + dv3;\n }\n public uvFractionToPoint(uFraction: number, vFraction: number, result?: Point3d): Point3d {\n const u = 9 * uFraction;\n const v = 9 * vFraction;\n return Point3d.create(uFraction, vFraction, this.f(u, v), result);\n }\n public uvFractionToPointAndTangents(uFraction: number, vFraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const u = 9 * uFraction;\n const v = 9 * vFraction;\n return Plane3dByOriginAndVectors.createOriginAndVectorsXYZ(uFraction, vFraction, this.f(u, v), 1, 0, this.du(u, v), 0, 1, this.dv(u, v), result);\n }\n}\n/**\n * `Sample` has static methods to create a variety of geometry samples useful in testing.\n * @alpha\n */\nexport class Sample {\n /** Array with assorted Point2d samples */\n public static readonly point2d: Point2d[] = [\n Point2d.create(0, 0),\n Point2d.create(1, 0),\n Point2d.create(0, 1),\n Point2d.create(2, 3)];\n /** Array with assorted Point3d samples */\n public static readonly point3d: Point3d[] = [\n Point3d.create(0, 0, 0),\n Point3d.create(1, 0, 0),\n Point3d.create(0, 1, 0),\n Point3d.create(0, 1, 0),\n Point3d.create(0, 0, 1),\n Point3d.create(2, 3, 0),\n Point3d.create(0, 2, 5),\n Point3d.create(-3, 0, 5),\n Point3d.create(4, 3, -2)];\n /**\n * Return an array of Point3d, with x,y,z all stepping through a range of values.\n * x varies fastest, then y then z\n */\n public static createPoint3dLattice(low: number, step: number, high: number): Point3d[] {\n const points = [];\n for (let z = low; z <= high; z += step)\n for (let y = low; y <= high; y += step)\n for (let x = low; x <= high; x += step)\n points.push(Point3d.create(x, y, z));\n return points;\n }\n /**\n * Return an array of Point2d, with x,y all stepping through a range of values.\n * x varies fastest, then y\n */\n public static createPoint2dLattice(low: number, step: number, high: number): Point2d[] {\n const points = [];\n for (let y = low; y <= high; y += step)\n for (let x = low; x <= high; x += step)\n points.push(Point2d.create(x, y));\n return points;\n }\n /** Array with assorted Point4d samples */\n public static readonly point4d: Point4d[] = [\n Point4d.create(0, 0, 0, 1),\n Point4d.create(1, 0, 0, 1),\n Point4d.create(0, 1, 0, 1),\n Point4d.create(0, 1, 0, 1),\n Point4d.create(0, 0, 1, 1),\n Point4d.create(2, 3, 0, 1),\n Point4d.create(0, 2, 5, 1),\n Point4d.create(-3, 0, 5, 1),\n Point4d.create(-3, 0, 5, 0.3),\n Point4d.create(-3, 0, 5, -0.2),\n Point4d.create(4, 3, -2, 1)];\n /** Array with assorted nonzero vector samples. */\n public static createNonZeroVectors(): Vector3d[] {\n return [\n Vector3d.create(1, 0, 0),\n Vector3d.create(0, 1, 0),\n Vector3d.create(0, 0, 1),\n Vector3d.create(-1, 0, 0),\n Vector3d.create(0, -1, 0),\n Vector3d.create(0, 0, -1),\n Vector3d.createPolar(1.0, Angle.createDegrees(20)),\n Vector3d.createSpherical(1.0, Angle.createDegrees(20), Angle.createDegrees(10)),\n Vector3d.createPolar(2.0, Angle.createDegrees(20)),\n Vector3d.createSpherical(2.0, Angle.createDegrees(20), Angle.createDegrees(10)),\n Vector3d.create(2, 3, 0),\n ];\n }\n /** Array with assorted nonzero Vector2d samples */\n public static readonly vector2d: Vector2d[] = [\n Vector2d.create(1, 0),\n Vector2d.create(0, 1),\n Vector2d.create(0, 0),\n Vector2d.create(-1, 0),\n Vector2d.create(0, -1),\n Vector2d.create(0, 0),\n Vector2d.createPolar(1.0, Angle.createDegrees(20)),\n Vector2d.createPolar(2.0, Angle.createDegrees(20)),\n Vector2d.create(2, 3),\n ];\n /** Return an array with assorted Range3d samples */\n public static createRange3ds(): Range3d[] {\n return [\n Range3d.createXYZXYZ(0, 0, 0, 1, 1, 1),\n Range3d.createXYZ(1, 2, 3),\n Range3d.createXYZXYZ(-2, -3, 1, 200, 301, 8),\n ];\n }\n /** Create 5 points of a (axis aligned) rectangle with corners (x0,y0) and (x0+ax, y0 + ay) */\n public static createRectangleXY(x0: number, y0: number, ax: number, ay: number, z: number = 0): Point3d[] {\n return [\n Point3d.create(x0, y0, z),\n Point3d.create(x0 + ax, y0, z),\n Point3d.create(x0 + ax, y0 + ay, z),\n Point3d.create(x0, y0 + ay, z),\n Point3d.create(x0, y0, z),\n ];\n }\n /** Create 5 points of a (axis aligned) rectangle with corners (cx-ax,cy-ay) and (cx+ax,cy+ay) */\n public static createCenteredRectangleXY(cx: number, cy: number, ax: number, ay: number, z: number = 0): Point3d[] {\n return this.createRectangleXY(cx - ax, cy - ay, 2 * ax, 2 * ay, z);\n }\n /**\n * Access the last point in the array. push another shifted by dx,dy,dz.\n * * No push if all are 0.\n * * If array is empty, push a leading 000\n */\n public static pushMove(data: Point3d[], dx: number, dy: number, dz: number = 0.0) {\n if (data.length === 0)\n data.push(Point3d.create(0, 0, 0));\n const back = data[data.length - 1];\n if (dx !== 0 || dy !== 0 || dz !== 0)\n data.push(Point3d.create(back.x + dx, back.y + dy, back.z + dz));\n }\n /** Return an array with numPoints on the unit circle (counting closure) */\n public static createUnitCircle(numPoints: number): Point3d[] {\n const points: Point3d[] = [];\n const dTheta = Geometry.safeDivideFraction(Math.PI * 2, numPoints - 1, 0.0);\n for (let i = 0; i + 1 < numPoints; i++) {\n const theta = i * dTheta;\n points.push(Point3d.create(Math.cos(theta), Math.sin(theta), 0.0));\n }\n points.push(points[0].clone());\n return points;\n }\n /**\n * Create points for an L shaped polygon\n * * lower left at x0,y0.\n * * ax,ay are larger side lengths (lower left to corners along x and y directions)\n * * bx,by are smaller side lengths (inner corner to points along x and y directions)\n */\n public static createLShapedPolygon(x0: number, y0: number, ax: number, ay: number, bx: number, by: number, z: number = 0): Point3d[] {\n return [\n Point3d.create(x0, y0, z),\n Point3d.create(x0 + ax, y0, z),\n Point3d.create(x0 + ax, y0 + by),\n Point3d.create(x0 + bx, y0 + by),\n Point3d.create(x0 + bx, y0 + ay, z),\n Point3d.create(x0, y0 + ay, z),\n Point3d.create(x0, y0, z),\n ];\n }\n /** Create assorted clip planes. */\n public static createClipPlanes(): ClipPlane[] {\n const plane0 = ClipPlane.createNormalAndDistance(Vector3d.create(1, 0, 0), 2.0)!;\n const plane1 = plane0.cloneNegated();\n const plane2 = plane1.clone();\n plane2.setFlags(true, true);\n return [\n plane0, plane1, plane2,\n ClipPlane.createNormalAndDistance(Vector3d.create(3, 4, 0), 2.0)!,\n ClipPlane.createEdgeXY(Point3d.create(1, 0, 0), Point3d.create(24, 32, 0))!,\n ];\n }\n /**\n * * A first-quadrant unit square\n * * Two squares -- first and fourth quadrant unit squares\n * * Three squares -- first, second and fourth quadrant unit squares\n */\n public static createClipPlaneSets(): UnionOfConvexClipPlaneSets[] {\n const result = [];\n const quadrant1 = ConvexClipPlaneSet.createXYBox(0, 0, 1, 1);\n result.push(UnionOfConvexClipPlaneSets.createConvexSets([quadrant1.clone()]));\n const quadrant2 = ConvexClipPlaneSet.createXYBox(-1, 0, 0, 1);\n const quadrant4 = ConvexClipPlaneSet.createXYBox(0, -1, 1, 0);\n result.push(\n UnionOfConvexClipPlaneSets.createConvexSets([\n quadrant1.clone(),\n quadrant4.clone(),\n ]),\n );\n result.push(\n UnionOfConvexClipPlaneSets.createConvexSets([\n quadrant1.clone(),\n quadrant2.clone(),\n quadrant4.clone(),\n ]),\n );\n return result;\n }\n /**\n * Create (unweighted) bspline curves.\n * order varies from 2 to 5\n */\n public static createBsplineCurves(includeMultipleKnots: boolean = false): BSplineCurve3d[] {\n const result: BSplineCurve3d[] = [];\n const yScale = 0.1;\n for (const order of [2, 3, 4, 5]) {\n const points = [];\n for (const x of [0, 1, 2, 3, 4, 5, 7]) {\n points.push(Point3d.create(x, yScale * (1 + x * x), 0.0));\n }\n const curve = BSplineCurve3d.createUniformKnots(points, order) as BSplineCurve3d;\n result.push(curve);\n }\n if (includeMultipleKnots) {\n const interiorKnotCandidates = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8];\n for (const order of [3, 4]) {\n const numPoints = 8;\n const points = [];\n for (let i = 0; i < numPoints; i++)\n points.push(Point3d.create(i, i * i, 0));\n const knots = [];\n for (let i = 0; i < order - 1; i++)\n knots.push(0);\n const numInteriorNeeded = numPoints - order;\n for (let i = 0; i < numInteriorNeeded; i++)\n knots.push(interiorKnotCandidates[i]);\n const lastKnot = knots[knots.length - 1] + 1;\n for (let i = 0; i < order - 1; i++)\n knots.push(lastKnot);\n const curve = BSplineCurve3d.create(points, knots, order);\n if (curve)\n result.push(curve);\n }\n }\n return result;\n }\n /**\n * Create weighted bspline curves.\n * order varies from 2 to 5\n */\n public static createBspline3dHCurves(): BSplineCurve3dH[] {\n const result: BSplineCurve3dH[] = [];\n const yScale = 0.1;\n for (const weightVariation of [0, 0.125]) {\n for (const order of [2, 3, 4, 5]) {\n const points = [];\n for (const x of [0, 1, 2, 3, 4, 5, 7]) {\n points.push(Point4d.create(x, yScale * (1 + x * x), 0.0, 1.0 + weightVariation * Math.sin(x * Math.PI * 0.25)));\n }\n const curve = BSplineCurve3dH.createUniformKnots(points, order) as BSplineCurve3dH;\n result.push(curve);\n }\n }\n return result;\n }\n /** Create various orders of non-rational B-spline curves with helical poles. */\n public static createBsplineCurveHelices(\n radius: number, height: number, numTurns: number, numSamplesPerTurn: number,\n ): BSplineCurve3d[] {\n const pts: Point3d[] = [];\n const zDelta = (height / numTurns) / numSamplesPerTurn;\n const aDelta = 2 * Math.PI / numSamplesPerTurn;\n for (let iTurn = 0; iTurn < numTurns; ++iTurn) {\n for (let iSample = 0; iSample < numSamplesPerTurn; iSample++) {\n pts.push(\n Point3d.create(radius * Math.cos(iSample * aDelta), radius * Math.sin(iSample * aDelta), pts.length * zDelta),\n );\n }\n }\n const result: BSplineCurve3d[] = [];\n for (const order of [2, 3, 4, 9, 16, 25]) {\n if (order > pts.length)\n continue;\n const curve = BSplineCurve3d.createUniformKnots(pts, order);\n if (curve !== undefined)\n result.push(curve);\n }\n return result;\n }\n /** Create weighted bsplines for circular arcs. */\n public static createBspline3dHArcs(): BSplineCurve3dH[] {\n const result: BSplineCurve3dH[] = [];\n const halfRadians = Angle.degreesToRadians(60.0);\n const c = Math.cos(halfRadians);\n const s = Math.sin(halfRadians);\n // const sec = 1.0 / c;\n // const t = s / c;\n const points = [\n Point4d.create(1, 0, 0, 1),\n Point4d.create(c, s, 0, c),\n Point4d.create(-c, s, 0, 1),\n Point4d.create(-1, 0, 0, c),\n Point4d.create(-c, -s, 0, 1),\n Point4d.create(c, -s, 0, c),\n Point4d.create(1, 0, 0, 1),\n ];\n const knots = [0, 0, 1, 1, 2, 2, 3, 3];\n const curve = BSplineCurve3dH.create(points, knots, 3) as BSplineCurve3dH;\n result.push(curve);\n return result;\n }\n /**\n * Return array [x,y,z,w] bspline control points for an arc in 90 degree bspline spans.\n * @param points array of [x,y,z,w]\n * @param center center of arc\n * @param axes matrix with 0 and 90 degree axes\n * @param radius0 radius multiplier for x direction.\n * @param radius90 radius multiplier for y direction.\n * @param applyWeightsToXYZ\n */\n public static createBsplineArc90SectionToXYZWArrays(\n center: Point3d,\n axes: Matrix3d,\n radius0: number,\n radius90: number,\n applyWeightsToXYZ: boolean,\n ): number[][] {\n const a = Math.sqrt(0.5);\n const xyz = Point3d.create();\n Matrix3d.xyzPlusMatrixTimesCoordinates(center, axes, radius0, 0.0, 0, xyz);\n const controlPoints = [];\n controlPoints.push([xyz.x, xyz.y, xyz.z, 1.0]);\n const cornerTrig = [1, 1, -1, -1, 1];\n const axisTrig = [1, 0, -1, 0, 1];\n for (let i = 0; i < 4; i++) {\n Matrix3d.xyzPlusMatrixTimesCoordinates(\n center, axes, radius0 * cornerTrig[i + 1], radius90 * cornerTrig[i], 0, xyz,\n );\n controlPoints.push([xyz.x, xyz.y, xyz.z, a]);\n Matrix3d.xyzPlusMatrixTimesCoordinates(\n center, axes, radius0 * axisTrig[i + 1], radius90 * axisTrig[i], 0, xyz,\n );\n controlPoints.push([xyz.x, xyz.y, xyz.z, 1.0]);\n }\n if (applyWeightsToXYZ) {\n for (const xyzw of controlPoints) {\n const b = xyzw[3];\n xyzw[0] *= b;\n xyzw[1] *= b;\n xyzw[2] *= b;\n }\n }\n return controlPoints;\n }\n /**\n * Create both unweighted and weighted bspline curves.\n * (This is the combined results from createBsplineCurves and createBspline3dHCurves)\n */\n public static createMixedBsplineCurves(): BSplineCurve3dBase[] {\n const arrayA = Sample.createBsplineCurves();\n const arrayB = Sample.createBspline3dHCurves();\n const result = [];\n for (const a of arrayA) result.push(a);\n for (const b of arrayB) result.push(b);\n return result;\n }\n /** Create a plane from origin and normal coordinates -- default to 001 normal if needed. */\n public static createPlane(x: number, y: number, z: number, u: number, v: number, w: number): Plane3dByOriginAndUnitNormal {\n const point = Point3d.create(x, y, z);\n const vector = Vector3d.create(u, v, w).normalize();\n if (vector) {\n const plane = Plane3dByOriginAndUnitNormal.create(point, vector);\n if (plane)\n return plane;\n }\n return Sample.createPlane(x, y, z, u, v, 1);\n }\n /** Create ray from (x,y,z) and direction components. (Normalize the direction) */\n public static createRay(x: number, y: number, z: number, u: number, v: number, w: number): Ray3d {\n return Ray3d.create(\n Point3d.create(x, y, z),\n Vector3d.create(u, v, w).normalize() as Vector3d,\n );\n }\n /** Assorted Plane3dBYOriginAndUnitNormal */\n public static readonly plane3dByOriginAndUnitNormal: Plane3dByOriginAndUnitNormal[] = [\n Plane3dByOriginAndUnitNormal.createXYPlane(),\n Plane3dByOriginAndUnitNormal.createYZPlane(),\n Plane3dByOriginAndUnitNormal.createZXPlane(),\n Sample.createPlane(0, 0, 0, 3, 0, 1),\n Sample.createPlane(1, 2, 3, 2, 4, -1),\n ];\n\n /** Assorted Ray3d, not all unit direction vectors. */\n public static readonly ray3d: Ray3d[] = [\n Sample.createRay(0, 0, 0, 1, 0, 0),\n Sample.createRay(0, 0, 0, 0, 1, 0),\n Sample.createRay(0, 0, 0, 0, 0, 1),\n Sample.createRay(0, 0, 0, 1, 2, 0),\n Sample.createRay(1, 2, 3, 4, 2, -1),\n ];\n /** Assorted angles. All principal directions, some others included. */\n public static readonly angle: Angle[] = [\n Angle.createDegrees(0),\n Angle.createDegrees(90),\n Angle.createDegrees(180),\n Angle.createDegrees(-90),\n Angle.createDegrees(30),\n Angle.createDegrees(-105),\n ];\n /** Assorted angle sweeps */\n public static readonly angleSweep: AngleSweep[] = [\n AngleSweep.createStartEndDegrees(0, 90),\n AngleSweep.createStartEndDegrees(0, 180),\n AngleSweep.createStartEndDegrees(-90, 0),\n AngleSweep.createStartEndDegrees(0, -90),\n AngleSweep.createStartEndDegrees(0, 30),\n AngleSweep.createStartEndDegrees(45, 110),\n ];\n /** Assorted line segments */\n public static readonly lineSegment3d: LineSegment3d[] = [\n LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(1, 0, 0)),\n LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(0, 1, 0)),\n LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(0, 0, 1)),\n LineSegment3d.create(Point3d.create(1, 2, 3), Point3d.create(-2, -3, 0.5)),\n ];\n /** Assorted lines strings */\n public static createLineStrings(): LineString3d[] {\n return [\n LineString3d.createPoints([\n Point3d.create(0, 0, 0),\n Point3d.create(1, 0, 0),\n ]),\n LineString3d.createPoints([\n Point3d.create(0, 0, 0),\n Point3d.create(1, 0, 0),\n Point3d.create(1, 1, 0),\n ]),\n LineString3d.createPoints([\n Point3d.create(0, 0, 0),\n Point3d.create(1, 0, 0),\n Point3d.create(1, 1, 0),\n Point3d.create(2, 2, 0),\n ]),\n ];\n }\n /** Assorted Range1d: single point, null, simple forward, simple reverse */\n public static readonly range1d: Range1d[] = [\n Range1d.createX(1),\n Range1d.createNull(),\n Range1d.createXX(1, 2),\n Range1d.createXX(2, 1),\n ];\n /** Assorted range2d: single point, null, 2 point with various creation orders. */\n public static readonly range2d: Range2d[] = [\n Range2d.createXY(1, 2),\n Range2d.createNull(),\n Range2d.createXYXY(1, 2, 0, 3),\n Range2d.createXYXY(1, 2, 3, 4),\n ];\n /** Assorted range2d: single point, null, 2 point with various creation orders. */\n public static readonly range3d: Range3d[] = [\n Range3d.createXYZ(1, 2, 3),\n Range3d.createNull(),\n Range3d.createXYZXYZ(1, 2, 0, 3, 4, 7),\n Range3d.createXYZXYZ(1, 2, 3, -2, -4, -1),\n ];\n /**\n * Assorted Matrix3d:\n * * identity\n * * rotation around x\n * * rotation around general vector\n * * uniform scale\n * * nonuniform scale (including negative scales!)\n */\n public static createMatrix3dArray(): Matrix3d[] {\n return [\n Matrix3d.createIdentity(),\n Matrix3d.createRotationAroundVector(\n Vector3d.create(1, 0, 0), Angle.createDegrees(10),\n ) as Matrix3d,\n Matrix3d.createRotationAroundVector(\n Vector3d.create(1, -2, 5), Angle.createDegrees(-6.0),\n ) as Matrix3d,\n Matrix3d.createRotationAroundVector(\n Vector3d.create(1, 2, 3), Angle.createDegrees(49.0),\n ) as Matrix3d,\n Matrix3d.createUniformScale(2.0),\n Matrix3d.createScale(1, 1, -1),\n Matrix3d.createScale(2, 3, 4),\n ];\n }\n /** Assorted invertible transforms. */\n public static createInvertibleTransforms(): Transform[] {\n return [\n Transform.createIdentity(),\n Transform.createTranslationXYZ(1, 2, 0),\n Transform.createTranslationXYZ(1, 2, 3),\n Transform.createFixedPointAndMatrix(\n Point3d.create(4, 1, -2),\n Matrix3d.createUniformScale(2.0),\n ),\n Transform.createFixedPointAndMatrix(\n Point3d.create(4, 1, -2),\n Matrix3d.createRotationAroundVector(\n Vector3d.create(1, 2, 3), Angle.createRadians(10),\n ) as Matrix3d,\n ),\n ];\n }\n /**\n * Return an array of Matrix3d with various skew and scale. This includes at least:\n * * identity\n * * 3 distinct diagonals.\n * * The distinct diagonal base with smaller value added to other 6 spots in succession.\n * * the distinct diagonals with all others also smaller non-zeros.\n */\n public static createScaleSkewMatrix3d(): Matrix3d[] {\n return [\n Matrix3d.createRowValues(\n 1, 0, 0,\n 0, 1, 0,\n 0, 0, 1,\n ),\n Matrix3d.createRowValues(\n 5, 0, 0,\n 0, 6, 0,\n 0, 0, 7,\n ),\n Matrix3d.createRowValues(\n 5, 2, 0,\n 0, 6, 0,\n 0, 0, 7,\n ),\n Matrix3d.createRowValues(\n 5, 0, 2,\n 0, 6, 0,\n 0, 0, 7,\n ),\n Matrix3d.createRowValues(\n 5, 0, 0,\n 1, 6, 0,\n 0, 0, 7,\n ),\n Matrix3d.createRowValues(\n 5, 0, 0,\n 0, 6, 1,\n 0, 0, 7,\n ),\n Matrix3d.createRowValues(\n 5, 0, 0,\n 0, 6, 0,\n 1, 0, 7,\n ),\n Matrix3d.createRowValues(\n 5, 0, 0,\n 0, 6, 0,\n 0, 1, 7,\n ),\n Matrix3d.createRowValues(\n 5, 2, 3,\n 2, 6, 1,\n -1, 2, 7,\n ),\n ];\n }\n /**\n * Return an array of singular Matrix3d. This includes at least:\n * * all zeros\n * * one non-zero column\n * * two independent columns, third is zero\n * * two independent columns, third is sum of those\n * * two independent columns, third is copy of one\n */\n public static createSingularMatrix3d(): Matrix3d[] {\n const vectorU = Vector3d.create(2, 3, 6);\n const vectorV = Vector3d.create(-1, 5, 2);\n const vectorUPlusV = vectorU.plus(vectorV);\n const vector0 = Vector3d.createZero();\n return [\n Matrix3d.createZero(),\n // one non-zero column\n Matrix3d.createColumns(vectorU, vector0, vector0),\n Matrix3d.createColumns(vector0, vectorU, vector0),\n Matrix3d.createColumns(vector0, vector0, vectorU),\n // two independent non-zero columns with one zero column\n Matrix3d.createColumns(vectorU, vectorV, vector0),\n Matrix3d.createColumns(vector0, vectorU, vectorV),\n Matrix3d.createColumns(vectorU, vector0, vectorV),\n // two independent columns with one dependent column\n Matrix3d.createColumns(vectorU, vectorV, vectorUPlusV),\n Matrix3d.createColumns(vectorU, vectorUPlusV, vectorV),\n Matrix3d.createColumns(vectorUPlusV, vectorU, vectorV),\n // two independent with columns with one duplicate column\n Matrix3d.createColumns(vectorU, vectorU, vectorV),\n Matrix3d.createColumns(vectorU, vectorV, vectorU),\n Matrix3d.createColumns(vectorV, vectorU, vectorU),\n ];\n }\n /**\n * Return an array of rigid transforms. This includes (at least)\n * * Identity\n * * translation with identity matrix\n * * rotation around origin and arbitrary vector\n * * rotation around space point and arbitrary vector\n * * use given refDistance is crude distance of translation and distance to fixed point.\n */\n public static createRigidTransforms(distanceScale: number = 4.0): Transform[] {\n const distanceScale3 = distanceScale / 3.0;\n const distanceScale4 = distanceScale / 4.0;\n return [\n Transform.createIdentity(),\n Transform.createTranslationXYZ(\n distanceScale3 * 1,\n distanceScale3 * 2,\n distanceScale3 * 3,\n ),\n Transform.createFixedPointAndMatrix(\n Point3d.create(0, 0, 0),\n Matrix3d.createRotationAroundVector(\n Vector3d.unitY(), Angle.createDegrees(10)) as Matrix3d,\n ),\n Transform.createFixedPointAndMatrix(\n Point3d.create(distanceScale4 * 4, distanceScale4 * 1, -distanceScale4 * 2),\n Matrix3d.createRotationAroundVector(\n Vector3d.create(1, 2, 3), Angle.createDegrees(10)) as Matrix3d,\n ),\n Transform.createFixedPointAndMatrix(\n Point3d.create(distanceScale4 * 4, distanceScale4 * 1, -distanceScale4 * 2),\n Matrix3d.createRotationAroundVector(\n Vector3d.create(-2, 1, 4), Angle.createDegrees(35)) as Matrix3d,\n ),\n ];\n }\n /** Return a single rigid transform with all terms nonzero. */\n public static createMessyRigidTransform(fixedPoint?: Point3d): Transform {\n return Transform.createFixedPointAndMatrix(\n fixedPoint ? fixedPoint : Point3d.create(1, 2, 3),\n Matrix3d.createRotationAroundVector(Vector3d.create(0.3, -0.2, 1.2), Angle.createDegrees(15.7))!);\n }\n /**\n * Return various rigid matrices:\n * * identity\n * * small rotations around x, y, z\n * * small rotation around (1,2,3)\n */\n public static createRigidAxes(): Matrix3d[] {\n return [\n Matrix3d.createIdentity(),\n Matrix3d.createRotationAroundVector(\n Vector3d.unitX(), Angle.createDegrees(10),\n ) as Matrix3d,\n Matrix3d.createRotationAroundVector(\n Vector3d.unitY(), Angle.createDegrees(10),\n ) as Matrix3d,\n Matrix3d.createRotationAroundVector(\n Vector3d.unitZ(), Angle.createDegrees(10),\n ) as Matrix3d,\n Matrix3d.createRotationAroundVector(\n Vector3d.create(1, 2, 3), Angle.createDegrees(10),\n ) as Matrix3d,\n ];\n }\n /**\n * Return various Matrix4d\n * * Simple promotion of each Sample.createInvertibleTransforms ()\n * * optional nasty [1,2,3,4...15] row order\n * @param includeIrregular if true, include [1,2,..15] row major\n */ // promote each transform[] to a Matrix4d.\n public static createMatrix4ds(includeIrregular: boolean = false): Matrix4d[] {\n const result = [];\n let transform;\n for (transform of Sample.createInvertibleTransforms())\n result.push(Matrix4d.createTransform(transform));\n if (includeIrregular) {\n result.push(\n Matrix4d.createRowValues(\n 1, 2, 3, 4,\n 5, 6, 7, 8,\n 9, 10, 11, 12,\n 13, 14, 15, 16,\n ),\n );\n }\n return result;\n }\n /** Create full Map4d for each `Sample.createInvertibleTransforms()` */\n public static createMap4ds(): Map4d[] {\n const result = [];\n let transform;\n for (transform of Sample.createInvertibleTransforms()) {\n const inverse = transform.inverse();\n if (inverse) {\n const map = Map4d.createTransform(transform, inverse);\n if (map)\n result.push(map);\n }\n }\n return result;\n }\n /** Assorted simple `Path` objects. */\n public static createSimplePaths(withGaps: boolean = false): Path[] {\n const point0 = Point3d.create(0, 0, 0);\n const point1 = Point3d.create(10, 0, 0);\n\n const p1 = [\n point1, Point3d.create(0, 10, 0),\n Point3d.create(6, 10, 0),\n Point3d.create(6, 10, 0),\n Point3d.create(0, 10, 0),\n ];\n const segment1 = LineSegment3d.create(point0, point1);\n const vectorU = Vector3d.unitX(3);\n const vectorV = Vector3d.unitY(3);\n const arc2 = Arc3d.create(point1.minus(vectorU), vectorU, vectorV, AngleSweep.createStartEndDegrees(0, 90));\n const simplePaths = [\n Path.create(segment1),\n Path.create(segment1, arc2),\n Path.create(\n LineSegment3d.create(point0, point1),\n LineString3d.create(p1)),\n Sample.createCappedArcPath(4, 0, 180),\n ];\n if (withGaps)\n simplePaths.push(\n Path.create(\n LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(10, 0, 0)),\n LineSegment3d.create(Point3d.create(10, 10, 0), Point3d.create(5, 0, 0)),\n ),\n );\n return simplePaths;\n }\n /**\n * Assorted `Path` with lines and arcs.\n * Specifically useful for offset tests.\n */\n public static createLineArcPaths(): Path[] {\n const paths = [];\n const x1 = 10.0;\n const y2 = 5.0;\n const y3 = 10.0;\n for (const y0 of [0, -1, 1]) {\n for (const x2 of [15, 11, 20, 9, 7]) {\n\n const point0 = Point3d.create(0, y0, 0);\n const point1 = Point3d.create(x1, 0, 0);\n const point2 = Point3d.create(x2, y2, 0);\n const point3 = Point3d.create(x1, y3, 0);\n const point4 = Point3d.create(0, y3 + y0, 0);\n const path0 = Path.create();\n path0.tryAddChild(LineString3d.create(point0, point1, point2, point3, point4));\n paths.push(path0);\n const path1 = Path.create();\n path1.tryAddChild(LineSegment3d.create(point0, point1));\n path1.tryAddChild(Arc3d.createCircularStartMiddleEnd(point1, Point3d.create(x2, y2, 0), point3));\n path1.tryAddChild(LineSegment3d.create(point3, point4));\n paths.push(path1);\n }\n }\n return paths;\n }\n /** Assorted `PointString3d` objects. */\n public static createSimplePointStrings(): PointString3d[] {\n const p1 = [\n [Point3d.create(0, 10, 0)],\n [Point3d.create(6, 10, 0)],\n [Point3d.create(6, 10, 0), [Point3d.create(6, 10, 0)]],\n ];\n const simplePaths = [\n PointString3d.create(Point3d.create(1, 2, 0)),\n PointString3d.create(Point3d.create(0, 0, 0), Point3d.create(10, 0, 0)),\n PointString3d.create(Point3d.create(10, 0, 0), Point3d.create(10, 5, 0)),\n PointString3d.create(p1),\n ];\n return simplePaths;\n }\n /** Assorted `Loop` objects */\n public static createSimpleLoops(): Loop[] {\n const point0 = Point3d.create(0, 0, 0);\n const point1 = Point3d.create(10, 0, 0);\n const point2 = Point3d.create(10, 5, 0);\n const point3 = Point3d.create(0, 5, 0);\n const result = [\n // rectangle with single linestring\n Loop.create(LineString3d.create(point0, point1, point2, point3, point0)),\n // unit circle\n Loop.create(Arc3d.createUnitCircle()),\n // rectangle, but with individual line segments\n Loop.create(\n LineSegment3d.create(point0, point1),\n LineSegment3d.create(point1, point2),\n LineSegment3d.create(point2, point3),\n LineSegment3d.create(point3, point0),\n ),\n // Semicircle\n Sample.createCappedArcLoop(4, -90, 90),\n ];\n return result;\n }\n /**\n * Create a square wave along x direction\n * @param dx0 distance along x axis at y=0\n * @param dy vertical rise\n * @param dx1 distance along x axis at y=dy\n * @param numPhase number of phases of the jump.\n * @param dyReturn y value for return to origin. If 0, the wave ends at y=0 after then final \"down\" with one extra horizontal dx0\n * If nonzero, rise to that y value, return to x=0, and return down to origin.\n */\n public static createSquareWave(origin: Point3d, dx0: number, dy: number, dx1: number, numPhase: number, dyReturn: number): Point3d[] {\n const result = [origin.clone()];\n for (let i = 0; i < numPhase; i++) {\n this.pushMove(result, dx0, 0);\n this.pushMove(result, 0, dy);\n this.pushMove(result, dx1, 0);\n this.pushMove(result, 0, -dy);\n }\n this.pushMove(result, dx0, 0);\n if (dyReturn !== 0.0) {\n this.pushMove(result, 0, dyReturn);\n result.push(Point3d.create(origin.x, origin.y + dyReturn));\n result.push(result[0].clone());\n }\n return result;\n }\n /**\n * Create multiple interpolated points between two points\n * @param point0 start point (at fraction0)\n * @param point1 end point (at fraction1)\n * @param numPoints total number of points. This is force to at least 2.\n * @param result optional existing array to receive points.\n * @param index0 optional index of first point. Default is 0.\n * @param index1 optional index of final point. Default is numPoints\n */\n public static createInterpolatedPoints(point0: Point3d, point1: Point3d, numPoints: number, result?: Point3d[], index0?: number, index1?: number): Point3d[] {\n if (numPoints < 2)\n numPoints = 2;\n if (result === undefined)\n result = [];\n if (index0 === undefined)\n index0 = 0;\n if (index1 === undefined)\n index1 = numPoints;\n for (let i = index0; i <= index1; i++) {\n result.push(point0.interpolate(i / numPoints, point1));\n }\n return result;\n }\n /**\n * Append numPhase teeth. Each tooth starts with dxLow dwell at initial y, then sloped rise, then dwell at top, then sloped fall\n * * If no points are present, start with 000. (this happens in pushMove) Otherwise start from final point.\n * * return points array reference.\n * @param points point array to receive points\n * @param dxLow starting step along x direction\n * @param riseX width of rising and falling parts\n * @param riseY height of rise\n * @param dxHigh width at top\n * @param numPhase number of phases.\n */\n public static appendSawTooth(points: Point3d[], dxLow: number, riseX: number, riseY: number, dxHigh: number, numPhase: number): Point3d[] {\n for (let i = 0; i < numPhase; i++) {\n this.pushMove(points, dxLow, 0, 0);\n this.pushMove(points, riseX, riseY, 0);\n this.pushMove(points, dxHigh, 0, 0);\n this.pushMove(points, riseX, -riseY, 0);\n }\n return points;\n }\n /** Append sawtooth with x distances successively scaled by xFactor */\n public static appendVariableSawTooth(points: Point3d[], dxLow: number, riseX: number, riseY: number, dxHigh: number, numPhase: number, xFactor: number): Point3d[] {\n let factor = 1.0;\n for (let i = 0; i < numPhase; i++) {\n this.appendSawTooth(points, factor * dxLow, factor * riseX, riseY, factor * dxHigh, 1);\n factor *= xFactor;\n }\n return points;\n }\n /**\n * Create a pair of sawtooth patterns, one (nominally) outbound and up, the other inbound and down.\n * * return phase count adjusted to end at start x\n * * enter return dx values as lengths -- sign will be negated in construction.\n * @param origin start of entire path.\n * @param dxLow low outbound dwell\n * @param riseX x part of outbound rise and fall\n * @param riseY y part of outbound rise and fall\n * @param dxHigh high outbound dwell\n * @param numPhaseOutbound number of phases outbound. Final phase followed by dxLow dwell.\n * @param dyFinal rise after final dwell.\n * @param dxLowReturn dwell at return high\n * @param riseXReturn rise x part of return\n * @param riseYReturn rise y part of return\n * @param dxHighReturn dwell at return high\n */\n public static createBidirectionalSawtooth(origin: Point3d, dxLow: number, riseX: number, riseY: number, dxHigh: number, numPhaseOutbound: number,\n dyFinal: number,\n dxLowReturn: number, riseXReturn: number, riseYReturn: number, dxHighReturn: number): Point3d[] {\n const data = [origin.clone()];\n const x0 = data[0].x;\n this.appendSawTooth(data, dxLow, riseX, riseY, dxHigh, numPhaseOutbound);\n this.pushMove(data, dxLow, 0, 0);\n this.pushMove(data, 0, dyFinal);\n const x1 = data[data.length - 1].x;\n const returnPhase = Math.abs(dxLowReturn + 2 * riseXReturn + dxHighReturn);\n const totalDX = Math.abs(x1 - x0);\n const numReturnPhase = Math.floor(Math.abs(totalDX / returnPhase));\n this.appendSawTooth(data, -dxLowReturn, -riseXReturn, riseYReturn, -dxHighReturn, numReturnPhase);\n const x2 = data[data.length - 1].x;\n this.pushMove(data, x0 - x2, 0, 0);\n data.push(data[0].clone());\n return data;\n }\n /**\n * Append to a linestring, taking steps along given vector directions\n * If the linestring is empty, a 000 point is added.\n * @param linestring LineString3d to receive points.\n * @param numPhase number of phases of the sawtooth\n * @param vectors any number of vector steps.\n */\n public static appendPhases(linestring: LineString3d, numPhase: number, ...vectors: Vector3d[]): void {\n const tailPoint = linestring.endPoint(); // and this defaults to 000 . ..\n if (linestring.numPoints() === 0)\n linestring.addPoint(tailPoint);\n\n for (let i = 0; i < numPhase; i++) {\n for (const v of vectors) {\n tailPoint.addInPlace(v);\n linestring.addPoint(tailPoint);\n }\n }\n }\n /**\n * Assorted regions with arc boundaries\n * * full circle\n * * with varying sweep:\n * * partial arc with single chord closure\n * * partial arc with 2-edge closure via center\n */\n public static createArcRegions(): Loop[] {\n const result = [];\n const center = Point3d.create(0, 0, 0);\n for (const sweep of [\n AngleSweep.createStartEndDegrees(0, 360),\n AngleSweep.createStartEndDegrees(-20, 20),\n AngleSweep.createStartEndDegrees(0, 90),\n AngleSweep.createStartEndDegrees(0, 180),\n ]) {\n const arc0 = Arc3d.createXY(Point3d.create(0, 0), 2.0, sweep);\n if (arc0.sweep.isFullCircle) {\n result.push(Loop.create(arc0));\n } else {\n const chord = LineSegment3d.create(arc0.endPoint(), arc0.startPoint());\n result.push(Loop.create(arc0, chord));\n result.push(Loop.create(arc0, LineString3d.create(arc0.endPoint(), center, arc0.startPoint())));\n }\n }\n return result;\n }\n /**\n * Assorted loops in xy plane:\n * * unit square\n * * rectangle\n * * L shape\n */\n public static createSimpleXYPointLoops(): Point3d[][] {\n const result = [];\n result.push(Sample.createRectangleXY(0, 0, 1, 1));\n result.push(Sample.createRectangleXY(0, 0, 4, 3));\n result.push(Sample.createLShapedPolygon(0, 0, 5, 4, 1, 2));\n return result;\n }\n /** Assorted `ParityRegion` objects */\n public static createSimpleParityRegions(includeBCurves: boolean = false): ParityRegion[] {\n const pointC = Point3d.create(-5, 0, 0);\n const point0 = Point3d.create(0, 0, 0);\n const point1 = Point3d.create(4, 2, 0);\n const point2 = Point3d.create(6, 4, 0);\n const point3 = Point3d.create(5, 5, 0);\n const point4 = Point3d.create(8, 3, 0);\n const reverseSweep = AngleSweep.createStartEndDegrees(0, -360);\n const ax = 10.0;\n const ay = 8.0;\n const bx = -3.0;\n const by = 2.0;\n const r2 = 0.5;\n const r2A = 2.5;\n const pointA = point0.plusXYZ(ax, 0, 0);\n const pointB = pointA.plusXYZ(0, ay, 0);\n const pointC1 = point0.plusXYZ(0, ay);\n const result = [\n ParityRegion.create(\n Loop.create(\n LineString3d.create(point0, pointA, pointB),\n Arc3d.createCircularStartMiddleEnd(pointB, pointC1, point0),\n ),\n Loop.create(LineString3d.createRectangleXY(point1, bx, by)),\n ),\n ParityRegion.create(\n Loop.create(Arc3d.createXY(pointC, 2.0)),\n Loop.create(Arc3d.createXY(pointC, 1.0, reverseSweep)),\n ),\n ParityRegion.create(\n Loop.create(LineString3d.createRectangleXY(point0, ax, ay)),\n Loop.create(LineString3d.createRectangleXY(point1, bx, by)),\n ),\n ParityRegion.create(\n Loop.create(LineString3d.createRectangleXY(point0, ax, ay)),\n Loop.create(LineString3d.createRectangleXY(point1, bx, by)),\n Loop.create(Arc3d.createXY(point2, r2, reverseSweep)),\n ),\n ParityRegion.create(\n Loop.create(LineString3d.createRectangleXY(point0, ax, ay)),\n Loop.create(LineString3d.createRectangleXY(point1, bx, by)),\n Loop.create(Arc3d.createXY(point2, r2, reverseSweep)),\n Loop.create(LineString3d.createRectangleXY(point3, bx, by)),\n ),\n ParityRegion.create(\n Loop.create(\n LineString3d.create(point0, pointA, pointB),\n Arc3d.createCircularStartMiddleEnd(pointB, pointC1, point0),\n ),\n Loop.create(LineString3d.createRectangleXY(point1, bx, by)),\n Loop.create(Arc3d.create(point4, Vector3d.create(-r2, 0), Vector3d.create(0, r2A))),\n Loop.create(LineString3d.createRectangleXY(point3, bx, by)),\n ),\n ];\n if (includeBCurves) {\n const ey = 1.0;\n result.push(\n ParityRegion.create(\n Loop.create(\n LineSegment3d.create(point0, pointA),\n BSplineCurve3d.createUniformKnots(\n [\n pointA,\n Point3d.create(ax + 1, ey),\n Point3d.create(ax + 1, 2 * ey),\n Point3d.create(ax + 2, 3 * ey),\n Point3d.create(ax + 1, 4 * ey),\n pointB,\n ],\n 3)!,\n Arc3d.createCircularStartMiddleEnd(pointB, pointC1, point0),\n ),\n ),\n );\n }\n return result;\n }\n /** Union region. */\n public static createSimpleUnions(): UnionRegion[] {\n const parityRegions = Sample.createSimpleParityRegions();\n const parityRange = parityRegions[0].range();\n const ax = 3.0;\n const ay = 1.0;\n const bx = 4.0;\n const by = 2.0;\n const result = [\n UnionRegion.create(\n Loop.create(LineString3d.createRectangleXY(Point3d.create(0, 0, 0), ax, ay)),\n Loop.create(LineString3d.createRectangleXY(Point3d.create(0, 2 * ay, 0), bx, by)),\n ),\n UnionRegion.create(\n Loop.create(\n LineString3d.create(\n Sample.createRectangleXY(\n parityRange.low.x,\n parityRange.high.y + 0.5,\n parityRange.xLength(),\n parityRange.yLength(),\n ),\n ),\n ),\n parityRegions[0],\n ),\n ];\n return result;\n }\n /** Assorted unstructured curve sets. */\n public static createBagOfCurves(): BagOfCurves[] {\n const parityRegions = Sample.createSimpleParityRegions();\n const loops = Sample.createSimpleLoops();\n const result = [\n BagOfCurves.create(loops[0], parityRegions[0], LineSegment3d.createXYXY(0, 1, 4, 2, 1)),\n // a bag with just an arc\n BagOfCurves.create(Arc3d.createUnitCircle()),\n // a bag with just a line segment\n BagOfCurves.create(LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(1, 1, 0))),\n // a bag with just a linestring\n BagOfCurves.create(LineString3d.create(Point3d.create(0, 0, 0), Point3d.create(1, 1, 0), Point3d.create(2, 1, 0))),\n ];\n return result;\n }\n /**\n * Assorted smooth curve primitives:\n * * line segments\n * * arcs\n */\n public static createSmoothCurvePrimitives(size: number = 1.0): CurvePrimitive[] {\n const alpha = 0.1;\n const beta = 0.3;\n return [\n LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(size, 0, 0)),\n LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(size, size, 0)),\n Arc3d.create(\n Point3d.create(0, 0, 0),\n Vector3d.create(size, 0, 0),\n Vector3d.create(0, size, 0),\n AngleSweep.createStartEndDegrees(0, 90),\n ),\n Arc3d.create(\n Point3d.create(0, 0, 0),\n Vector3d.create(size, 0, 0),\n Vector3d.create(0, size, 0),\n AngleSweep.createStartEndDegrees(-40, 270),\n ),\n Arc3d.create(\n Point3d.create(0, 0, 0),\n Vector3d.create(size, alpha * size, 0),\n Vector3d.create(-alpha * beta * size, beta * size, 0),\n AngleSweep.createStartEndDegrees(-40, 270),\n ),\n ];\n }\n /** Assorted small polyface grids, possibly expanded by gridMultiplier */\n public static createSimpleIndexedPolyfaces(gridMultiplier: number): IndexedPolyface[] {\n const meshes = [\n Sample.createTriangularUnitGridPolyface(\n Point3d.create(),\n Vector3d.unitX(),\n Vector3d.unitY(),\n gridMultiplier * 3, 2 * gridMultiplier, false, false, false),\n Sample.createTriangularUnitGridPolyface(\n Point3d.create(),\n Vector3d.unitX(),\n Vector3d.unitY(),\n 3 * gridMultiplier, 2 * gridMultiplier, true, false, false),\n Sample.createTriangularUnitGridPolyface(\n Point3d.create(),\n Vector3d.unitX(),\n Vector3d.unitY(),\n 3 * gridMultiplier, 2 * gridMultiplier, false, true, false),\n Sample.createTriangularUnitGridPolyface(\n Point3d.create(),\n Vector3d.unitX(),\n Vector3d.unitY(),\n 3 * gridMultiplier, 2 * gridMultiplier, false, false, true),\n Sample.createTriangularUnitGridPolyface(\n Point3d.create(),\n Vector3d.unitX(),\n Vector3d.unitY(),\n 3 * gridMultiplier, 2 * gridMultiplier, true, true, true),\n ];\n for (const m of meshes)\n m.expectedClosure = 1;\n return meshes;\n }\n /**\n * Build a mesh that is a (possibly skewed) grid in a plane.\n * @param origin \"lower left\" coordinate\n * @param vectorX step in \"X\" direction\n * @param vectorY step in \"Y\" direction\n * @param numXVertices number of vertices in X direction\n * @param numYVertices number of vertices in y direction\n * @param createParams true to create parameters, with parameter value `(i,j)` for point at (0 based) vertex in x,y directions\n * @param createNormals true to create a (single) normal indexed from all facets\n * @param createColors true to create a single color on each quad. (shared between its triangles)\n * @note edgeVisible is false only on the diagonals\n */\n public static createTriangularUnitGridPolyface(\n origin: Point3d, vectorX: Vector3d, vectorY: Vector3d,\n numXVertices: number, numYVertices: number, createParams: boolean = false, createNormals: boolean = false,\n createColors: boolean = false, triangulate: boolean = true,\n ): IndexedPolyface {\n const mesh = IndexedPolyface.create(createNormals, createParams, createColors);\n const normal = vectorX.crossProduct(vectorY);\n if (createNormals) {\n normal.normalizeInPlace();\n mesh.addNormalXYZ(normal.x, normal.y, normal.z); // use XYZ to help coverage count!!\n }\n // Push to coordinate arrays\n for (let j = 0; j < numYVertices; j++) {\n for (let i = 0; i < numXVertices; i++) {\n mesh.addPoint(origin.plus2Scaled(vectorX, i, vectorY, j));\n if (createParams)\n mesh.addParamUV(i, j);\n }\n }\n let color = 0xFF5CE51A; // arbitrary color so colorIndex is different from color.\n const colorDiff = 0x12345;\n // Push elements to index array (vertices are calculated using i and j positioning for each point)\n let thisColorIndex = 0;\n for (let j = 0; j + 1 < numYVertices; j++) {\n for (let i = 0; i + 1 < numXVertices; i++) {\n const vertex00 = numXVertices * j + i;\n const vertex10 = vertex00 + 1;\n const vertex01 = vertex00 + numXVertices;\n const vertex11 = vertex01 + 1;\n if (triangulate) {\n // Push lower triangle\n mesh.addPointIndex(vertex00, true);\n mesh.addPointIndex(vertex10, true);\n mesh.addPointIndex(vertex11, false);\n // make color === faceIndex\n if (createColors) {\n thisColorIndex = mesh.addColor(color += colorDiff);\n mesh.addColorIndex(thisColorIndex);\n mesh.addColorIndex(thisColorIndex);\n mesh.addColorIndex(thisColorIndex);\n }\n // param indexing matches points . .\n if (createParams) {\n mesh.addParamIndex(vertex00);\n mesh.addParamIndex(vertex10);\n mesh.addParamIndex(vertex11);\n }\n if (createNormals) {\n mesh.addNormalIndex(0);\n mesh.addNormalIndex(0);\n mesh.addNormalIndex(0);\n }\n mesh.terminateFacet(false);\n // upper triangle\n mesh.addPointIndex(vertex11, true);\n mesh.addPointIndex(vertex01, true);\n mesh.addPointIndex(vertex00, false);\n // make color === faceIndex\n if (createColors) {\n mesh.addColorIndex(thisColorIndex);\n mesh.addColorIndex(thisColorIndex);\n mesh.addColorIndex(thisColorIndex);\n }\n // param indexing matches points.\n if (createParams) {\n mesh.addParamIndex(vertex11);\n mesh.addParamIndex(vertex01);\n mesh.addParamIndex(vertex00);\n }\n if (createNormals) {\n mesh.addNormalIndex(0);\n mesh.addNormalIndex(0);\n mesh.addNormalIndex(0);\n }\n mesh.terminateFacet(false);\n } else {\n // Push quad\n mesh.addPointIndex(vertex00, true);\n mesh.addPointIndex(vertex10, true);\n mesh.addPointIndex(vertex11, true);\n mesh.addPointIndex(vertex01, true);\n // make color === faceIndex\n if (createColors) {\n thisColorIndex = mesh.addColor(color += colorDiff);\n mesh.addColorIndex(thisColorIndex);\n mesh.addColorIndex(thisColorIndex);\n mesh.addColorIndex(thisColorIndex);\n mesh.addColorIndex(thisColorIndex);\n }\n // param indexing matches points . .\n if (createParams) {\n mesh.addParamIndex(vertex00);\n mesh.addParamIndex(vertex10);\n mesh.addParamIndex(vertex11);\n mesh.addParamIndex(vertex01);\n }\n if (createNormals) {\n mesh.addNormalIndex(0);\n mesh.addNormalIndex(0);\n mesh.addNormalIndex(0);\n mesh.addNormalIndex(0);\n }\n mesh.terminateFacet(false);\n }\n }\n }\n return mesh;\n }\n /** Create an xy grid of points in single array with x varying fastest. */\n public static createXYGrid(numU: number, numV: number, dX: number = 1.0, dY: number = 1.0): Point3d[] {\n const points = [];\n for (let j = 0; j < numV; j++) {\n for (let i = 0; i < numU; i++) {\n points.push(Point3d.create(i * dX, j * dY, 0));\n }\n }\n return points;\n }\n /** Create simple bspline surface on xy plane grid. */\n public static createXYGridBsplineSurface(numU: number, numV: number, orderU: number, orderV: number): BSplineSurface3d | undefined {\n return BSplineSurface3d.create(\n Sample.createXYGrid(numU, numV, 1.0, 1.0), numU, orderU, undefined, numV, orderV, undefined);\n }\n /**\n * Create a bspline surface whose poles area on circular paths.\n * * (BUT not weighted bspline, therefore although u and v isolines \"go around\" they are not true circles.)\n * @param radiusU major radius\n * @param radiusV minor radius\n * @param numU number of facets around major hoop\n * @param numV number of facets around minor hoop\n * @param orderU major hoop order\n * @param orderV minor hoop order\n */\n public static createPseudoTorusBsplineSurface(radiusU: number, radiusV: number, numU: number, numV: number, orderU: number, orderV: number): BSplineSurface3d | undefined {\n const points = [];\n const numUPole = numU + orderU - 1; // degreeU wrap-around poles\n const numVPole = numV + orderV - 1; // degreeV wrap-around poles\n const uKnots = KnotVector.createUniformWrapped(numU, orderU - 1, 0, 1);\n const vKnots = KnotVector.createUniformWrapped(numV, orderV - 1, 0, 1);\n const dURadians = 2.0 * Math.PI / numU;\n const dVRadians = 2.0 * Math.PI / numV;\n for (let iV = 0; iV < numVPole; iV++) {\n const vRadians = iV * dVRadians;\n const cV = Math.cos(vRadians);\n const sV = Math.sin(vRadians);\n for (let iU = 0; iU < numUPole; iU++) {\n const uRadians = iU * dURadians;\n const cU = Math.cos(uRadians);\n const sU = Math.sin(uRadians);\n const rho = radiusU + cV * radiusV;\n points.push(Point3d.create(rho * cU, rho * sU, sV * radiusV));\n }\n }\n const result = BSplineSurface3d.create(points, numUPole, orderU, uKnots.knots, numVPole, orderV, vKnots.knots);\n if (result) {\n result.setWrappable(UVSelect.uDirection, BSplineWrapMode.OpenByAddingControlPoints);\n result.setWrappable(UVSelect.vDirection, BSplineWrapMode.OpenByAddingControlPoints);\n }\n return result;\n }\n /**\n * Create a Bspline surface for a cone.\n * @param centerA center at section A\n * @param centerB center at section B\n * @param radiusA radius at point A\n * @param radiusB radius at point B\n */\n public static createConeBsplineSurface(\n centerA: Point3d,\n centerB: Point3d,\n radiusA: number,\n radiusB: number,\n numSection: number): BSplineSurface3dH | undefined {\n if (numSection < 2)\n numSection = 2;\n const controlPoints: number[][][] = [];\n const numVPole = numSection;\n const q1 = 0.25;\n const q2 = 0.5;\n const q3 = 0.75;\n const uKnots = [0, 0, q1, q1, q2, q2, q3, q3, 1, 1];\n const vKnots = [];\n const dv = 1.0 / (numSection - 1);\n for (let i = 0; i < numSection; i++) {\n vKnots.push(i * dv);\n }\n const center = Point3d.create();\n const vectorAB = Vector3d.createStartEnd(centerA, centerB);\n const axes = Matrix3d.createRigidHeadsUp(vectorAB, AxisOrder.ZXY);\n let r0, r90, v;\n for (let iV = 0; iV < numVPole; iV++) {\n v = iV * dv;\n centerA.interpolate(v, centerB, center);\n r0 = r90 = Geometry.interpolate(radiusA, v, radiusB);\n controlPoints.push(Sample.createBsplineArc90SectionToXYZWArrays(center, axes, r0, r90, false));\n }\n const result = BSplineSurface3dH.createGrid(controlPoints,\n WeightStyle.WeightsSeparateFromCoordinates,\n 3, uKnots, 2, vKnots);\n if (result)\n result.setWrappable(UVSelect.uDirection, BSplineWrapMode.OpenByRemovingKnots);\n return result;\n }\n /** Create bspline surface on xy grid with weights. */\n public static createWeightedXYGridBsplineSurface(\n numU: number, numV: number, orderU: number, orderV: number,\n weight00: number = 1.0,\n weight10: number = 1.0,\n weight01: number = 1.0,\n weight11: number = 1.0): BSplineSurface3dH | undefined {\n const xyzPoles = Sample.createXYGrid(numU, numV, 1.0, 1.0);\n const weights = [];\n for (let i = 0; i < numU; i++)\n for (let j = 0; j < numV; j++) {\n const wu0 = Geometry.interpolate(weight00, i / (numU - 1), weight10);\n const wu1 = Geometry.interpolate(weight01, i / (numU - 1), weight11);\n weights.push(Geometry.interpolate(wu0, j / (numV - 1), wu1));\n }\n return BSplineSurface3dH.create(\n xyzPoles,\n weights,\n numU, orderU, undefined,\n numV, orderV, undefined,\n );\n }\n /** Assorted linear sweeps */\n public static createSimpleLinearSweeps(): LinearSweep[] {\n const result: LinearSweep[] = [];\n const base = Loop.create(LineString3d.createRectangleXY(Point3d.create(), 2, 3));\n const vectorZ = Vector3d.create(0, 0, 1.234);\n const vectorQ = Vector3d.create(0.1, 0.21, 1.234);\n result.push(LinearSweep.create(base, vectorZ, false)!);\n result.push(LinearSweep.create(base, vectorZ, true)!);\n result.push(LinearSweep.create(base, vectorQ, false)!);\n result.push(LinearSweep.create(base, vectorQ, true)!);\n result.push(LinearSweep.create(Sample.createCappedArcLoop(5, -45, 90), vectorQ, true)!);\n for (const curve of Sample.createSmoothCurvePrimitives()) {\n const path = Path.create(curve);\n result.push(LinearSweep.create(path, vectorZ, false)!);\n }\n // coordinates for a clearly unclosed linestring ....\n const xyPoints = [\n Point2d.create(0, 0),\n Point2d.create(1, 0),\n Point2d.create(1, 1),\n ];\n result.push(LinearSweep.createZSweep(xyPoints, 1, 3, false)!);\n // this forces artificial closure point . . .\n result.push(LinearSweep.createZSweep(xyPoints, 1, 3, true)!);\n // add a not-quite-exact closure point ...\n const e = 1.0e-11;\n xyPoints.push(Point2d.create(e, e));\n result.push(LinearSweep.createZSweep(xyPoints, 1, 3, false)!);\n result.push(LinearSweep.createZSweep(xyPoints, 1, 3, true)!);\n // make it a better closure\n xyPoints.pop();\n xyPoints.push(xyPoints[0]);\n result.push(LinearSweep.createZSweep(xyPoints, 1, 3, false)!);\n result.push(LinearSweep.createZSweep(xyPoints, 1, 3, true)!);\n // negative sweep ...\n result.push(LinearSweep.createZSweep(xyPoints, 1, -3, true)!);\n return result;\n }\n /**\n * Create an array of primitives with an arc centered at origin and a line segment closing back to the arc start.\n * This can be bundled into Path or Loop by caller.\n */\n public static createCappedArcPrimitives(radius: number, startDegrees: number, endDegrees: number): CurvePrimitive[] {\n const arc = Arc3d.create(\n Point3d.create(0, 0, 0),\n Vector3d.unitX(radius),\n Vector3d.unitY(radius),\n AngleSweep.createStartEndDegrees(startDegrees, endDegrees),\n );\n return [arc, LineSegment3d.create(arc.fractionToPoint(1.0), arc.fractionToPoint(0.0))];\n }\n /** Return a Path structure for a segment of arc, with closure segment */\n public static createCappedArcPath(radius: number, startDegrees: number, endDegrees: number): Path {\n return Path.createArray(Sample.createCappedArcPrimitives(radius, startDegrees, endDegrees));\n }\n /** Return a Loop structure for a segment of arc, with closure segment */\n public static createCappedArcLoop(radius: number, startDegrees: number, endDegrees: number): Loop {\n return Loop.createArray(Sample.createCappedArcPrimitives(radius, startDegrees, endDegrees));\n }\n /** Create assorted rotational sweeps. */\n public static createSimpleRotationalSweeps(): RotationalSweep[] {\n const result: RotationalSweep[] = [];\n // rectangle in xy plane\n const base = Loop.create(LineString3d.createRectangleXY(Point3d.create(1, 0, 0), 2, 3));\n // rotate around the y axis\n for (const axis of [\n Ray3d.createXYZUVW(0, 0, 0, 0, 1, 0),\n Ray3d.createXYZUVW(5, 0, 0, 0, 1, 0),\n Ray3d.createXYZUVW(-1, 0, 0, -1, 1, 0),\n ]) {\n result.push(RotationalSweep.create(base, axis, Angle.createDegrees(45.0), false)!);\n result.push(RotationalSweep.create(base, axis, Angle.createDegrees(150.0), true)!);\n }\n return result;\n }\n /** Create assorted spheres */\n public static createSpheres(includeEllipsoidal: boolean = false): Sphere[] {\n const result: Sphere[] = [];\n result.push(Sphere.createCenterRadius(Point3d.create(0, 0, 0), 1.0));\n result.push(Sphere.createCenterRadius(Point3d.create(1, 2, 3), 3.0));\n const s1 = Sphere.createCenterRadius(\n Point3d.create(1, 2, 3), 2.0,\n AngleSweep.createStartEndDegrees(-45, 80),\n );\n s1.capped = true;\n result.push(s1);\n // still a sphere, but with axes KIJ . .\n const s2 = Sphere.createFromAxesAndScales(\n Point3d.create(1, 2, 3),\n Matrix3d.createRowValues(\n 0, 1, 0,\n 0, 0, 1,\n 1, 0, 0,\n ),\n 4, 4, 4,\n AngleSweep.createStartEndDegrees(-45, 45),\n true,\n )!;\n result.push(s2);\n if (includeEllipsoidal)\n result.push(\n Sphere.createDgnSphere(\n Point3d.create(1, 2, 3),\n Vector3d.unitX(),\n Vector3d.unitZ(),\n 3,\n 2,\n AngleSweep.createFullLatitude(), false,\n )!,\n );\n return result;\n }\n /** Create true (non-spherical) ellipsoids. */\n public static createEllipsoids(): Sphere[] {\n return [\n Sphere.createEllipsoid(\n Transform.createOriginAndMatrix(\n Point3d.create(0, 0, 0),\n Matrix3d.createRowValues(\n 4, 1, 1,\n 1, 4, 1,\n 0.5, 0.2, 5),\n ),\n AngleSweep.createFullLatitude(),\n true,\n )!,\n ];\n }\n /** Create assorted cones. */\n public static createCones(): Cone[] {\n const result: Cone[] = [];\n const origin = Point3d.create(0, 0, 0);\n const topZ = Point3d.create(0, 0, 5);\n const centerA = Point3d.create(1, 2, 1);\n const centerB = Point3d.create(2, 3, 8);\n result.push(Cone.createAxisPoints(Point3d.create(0, 0, 0), Point3d.create(0, 0, 1), 0.5, 0.5, false) as Cone);\n result.push(Cone.createAxisPoints(centerA, centerB, 0.5, 0.5, false) as Cone);\n result.push(Cone.createAxisPoints(origin, topZ, 1.0, 0.2, true) as Cone);\n result.push(Cone.createAxisPoints(centerA, centerB, 0.2, 0.5, false) as Cone);\n result.push(Cone.createAxisPoints(origin, centerB, 1.0, 0.0, false) as Cone);\n result.push(Cone.createAxisPoints(topZ, origin, 0.0, 1.0, true) as Cone);\n return result;\n }\n /** Return a TorusPipe with swept circle in xz plane rotating through an angle range around the Z axis. */\n public static createPartialTorusAroundZ(\n majorRadius: number, majorSweep: Angle, minorRadius: number, minorStart: Angle, minorEnd: Angle,\n ): RotationalSweep {\n const arc = Arc3d.createXYZXYZXYZ(\n majorRadius, 0, 0,\n minorRadius, 0, 0,\n 0, minorRadius, 0,\n AngleSweep.createStartEnd(minorStart, minorEnd),\n );\n const contour = Path.create(arc);\n return RotationalSweep.create(contour, Ray3d.createZAxis(), majorSweep, false)!;\n }\n /** Create assorted Torus Pipes */\n public static createTorusPipes(): TorusPipe[] {\n const result: TorusPipe[] = [];\n const center = Point3d.create(1, 2, 3);\n const frame = Matrix3d.createRotationAroundVector(\n Vector3d.create(1, 2, 3), Angle.createRadians(10),\n ) as Matrix3d;\n const vectorX = frame.columnX();\n const vectorY = frame.columnY();\n const vectorZ = frame.columnZ();\n result.push(TorusPipe.createInFrame(Transform.createIdentity(), 5.0, 0.8, Angle.create360(), false)!);\n result.push(TorusPipe.createInFrame(Transform.createIdentity(), 5.0, 1.0, Angle.createDegrees(90), true)!);\n result.push(TorusPipe.createDgnTorusPipe(center, vectorX, vectorY, 10, 1, Angle.createDegrees(180), true)!);\n result.push(TorusPipe.createDgnTorusPipe(center, vectorY, vectorZ, 10, 1, Angle.createDegrees(45), true) as TorusPipe);\n return result;\n }\n /** Create assorted boxes. */\n public static createBoxes(capped: boolean = true): Box[] {\n const result: Box[] = [];\n const cornerA = Point3d.create(1, 2, 3);\n const aX = 3.0;\n const aY = 2.0;\n const bX = 1.5;\n const bY = 1.0;\n const h = 5.0;\n const frame = Matrix3d.createRotationAroundVector(\n Vector3d.create(0, 0, 1), Angle.createDegrees(10),\n ) as Matrix3d;\n const vectorX = frame.columnX();\n const vectorY = frame.columnY();\n const cornerB = Matrix3d.xyzPlusMatrixTimesCoordinates(cornerA, frame, 0, 0, h);\n result.push(\n Box.createDgnBox(\n cornerA, Vector3d.unitX(), Vector3d.unitY(), cornerB, aX, aY, aX, aY, capped,\n ) as Box,\n );\n result.push(\n Box.createDgnBox(\n cornerA, Vector3d.unitX(), Vector3d.unitY(), cornerB, aX, aY, bX, bY, capped,\n ) as Box,\n );\n result.push(\n Box.createDgnBox(\n cornerA, vectorX, vectorY, cornerB, aX, aY, bX, bY, capped,\n ) as Box,\n );\n const frameY = Matrix3d.createRotationAroundVector(\n Vector3d.create(0, 1, 0),\n Angle.createDegrees(10),\n ) as Matrix3d;\n result.push(\n Box.createDgnBox(\n cornerA, frameY.columnX(), frameY.columnY(),\n cornerA.plusScaled(frameY.columnZ(), h), aX, aY, bX, bY, capped,\n ) as Box,\n );\n return result;\n }\n /** Create an array of points for a rectangle with corners (x0,y0,z) and (x1,y1,z) */\n public static createRectangle(\n x0: number, y0: number, x1: number, y1: number, z: number = 0.0, closed: boolean = false,\n ): Point3d[] {\n const points = [\n Point3d.create(x0, y0, z),\n Point3d.create(x1, y0, z),\n Point3d.create(x1, y1, z),\n Point3d.create(x0, y1, z),\n ];\n if (closed)\n points.push(Point3d.create(x0, y0, z));\n return points;\n }\n /** Create an array of points for a rectangle with corners of a Range2d. */\n public static createRectangleInRange2d(range: Range2d, z: number = 0.0, closed: boolean = false): Point3d[] {\n const x0 = range.low.x;\n const x1 = range.high.x;\n const y0 = range.low.y;\n const y1 = range.high.y;\n return this.createRectangle(x0, y0, x1, y1, z, closed);\n }\n /** Create assorted ruled sweeps */\n public static createRuledSweeps(\n includeParityRegion: boolean = false, includeBagOfCurves: boolean = false,\n ): RuledSweep[] {\n const allSweeps = [];\n const contour0 = Loop.create(LineString3d.create(this.createRectangleXY(0, 0, 3, 2, 0)));\n const contour1 = Loop.create(LineString3d.create(this.createRectangleXY(0, 0, 3, 2.5, 2)));\n const contour2 = Loop.create(LineString3d.create(this.createRectangleXY(0, 0, 4, 3.5, 4)));\n const contour3 = Loop.create(LineString3d.create(this.createRectangleXY(0, 0, 2, 1, 7)));\n const allContours = [contour0, contour1, contour2];\n allSweeps.push(RuledSweep.create([contour0, contour1], true)!);\n allSweeps.push(RuledSweep.create([contour0, contour1, contour2], true)!);\n allSweeps.push(RuledSweep.create([contour0, contour1, contour2, contour3], true)!);\n allSweeps.push(RuledSweep.create(allContours, false)!);\n const curves = Sample.createSmoothCurvePrimitives();\n for (const c of curves) {\n const frame = c.fractionToFrenetFrame(0.0);\n if (frame) {\n const perpVector = frame.matrix.columnZ();\n perpVector.scaleInPlace(10.0);\n const c1 = c.cloneTransformed(Transform.createTranslation(perpVector)) as CurvePrimitive;\n allSweeps.push(RuledSweep.create([Path.create(c), Path.create(c1)], false)!);\n }\n }\n if (includeParityRegion) {\n const outer = Loop.create(LineString3d.create(this.createRectangleXY(0, 0, 5, 6, 0)));\n const inner = Loop.create(LineString3d.create(this.createRectangleXY(1, 1, 2, 3, 0)));\n const contourA = ParityRegion.create(outer, inner);\n const contourB = contourA.clone();\n contourB.tryTranslateInPlace(0, 0, 2);\n allSweeps.push(RuledSweep.create([contourA, contourB], false)!);\n }\n if (includeBagOfCurves) {\n const contourA = BagOfCurves.create(LineSegment3d.createXYZXYZ(1, 1, 0, 3, 1, 0));\n const contourB = BagOfCurves.create(LineSegment3d.createXYZXYZ(1, 1, 1, 3, 1, 1));\n allSweeps.push(RuledSweep.create([contourA, contourB], false)!);\n }\n return allSweeps;\n }\n /**\n * Uniformly spaced numbers\n * @param a0 first entry\n * @param delta step between entries\n * @param n number of entries\n */\n public static createGrowableArrayCountedSteps(a0: number, delta: number, n: number): GrowableFloat64Array {\n const data = new GrowableFloat64Array(n);\n for (let i = 0; i < n; i++)\n data.push(a0 + i * delta);\n return data;\n }\n /**\n * Create points on a unit circle\n * @param radius first entry\n * @param numEdge number of edges of chorded circle. Angle step is 2PI/numEdge (whether or not closed)\n * @param closed true to include final point (i.e. return numEdge+1 points)\n */\n public static createGrowableArrayCirclePoints(radius: number, numEdge: number, closed: boolean = false,\n centerX: number = 0, centerY: number = 0, data?: GrowableXYZArray): GrowableXYZArray {\n if (!data) data = new GrowableXYZArray();\n data.ensureCapacity(numEdge + (closed ? 1 : 0));\n const delta = 2.0 * Math.PI / numEdge;\n for (let i = 0; i < numEdge; i++) {\n const radians = i * delta;\n data.push(Point3d.create(centerX + radius * Math.cos(radians), centerY + radius * Math.sin(radians)));\n }\n return data;\n }\n private static pushIfDistinct(points: Point3d[], xyz: Point3d, tol: number = 1.0e-12) {\n if (points.length === 0 || points[points.length - 1].distanceXY(xyz) > tol)\n points.push(xyz);\n }\n private static appendToFractalEval(points: Point3d[], pointA: Point3d, pointB: Point3d, pattern: Point2d[], numRecursion: number, perpendicularFactor: number) {\n const point0 = pointA.clone();\n Sample.pushIfDistinct(points, pointA);\n for (const uv of pattern) {\n const point1 = pointA.interpolatePerpendicularXY(uv.x, pointB, perpendicularFactor * uv.y);\n if (numRecursion > 0)\n Sample.appendToFractalEval(points, point0, point1, pattern, numRecursion - 1, perpendicularFactor);\n Sample.pushIfDistinct(points, point1);\n point0.setFrom(point1);\n }\n Sample.pushIfDistinct(points, pointB);\n }\n /**\n * For each edge of points, construct a transform (with scale, rotate, and translate) that spreads the patter out along the edge.\n * Repeat recursively for each edge\n * @returns Returns an array of recursively generated fractal points\n * @param poles level-0 (coarse) polygon whose edges are to be replaced by recursive fractals\n * @param pattern pattern to map to each edge of poles (and to edges of the recursion)\n * @param numRecursion number of recursions\n * @param perpendicularFactor factor to apply to perpendicular sizing.\n */\n public static createRecursiveFractalPolygon(\n poles: Point3d[], pattern: Point2d[], numRecursion: number, perpendicularFactor: number,\n ): Point3d[] {\n const points: Point3d[] = [];\n Sample.pushIfDistinct(points, poles[0]);\n for (let i = 0; i + 1 < poles.length; i++) {\n if (numRecursion > 0)\n Sample.appendToFractalEval(points, poles[i], poles[i + 1], pattern, numRecursion - 1, perpendicularFactor);\n Sample.pushIfDistinct(points, poles[i + 1]);\n }\n return points;\n }\n /**\n * Primary shape is a \"triangle\" with lower edge pushed in so it becomes a mild nonconvex quad.\n * Fractal effects are gentle.\n */\n public static nonConvexQuadSimpleFractal(numRecursion: number, perpendicularFactor: number): Point3d[] {\n const pattern: Point2d[] = [\n Point2d.create(),\n Point2d.create(0.5, 0.1),\n Point2d.create(1.0, 0.0),\n ];\n const poles: Point3d[] = [\n Point3d.create(0, 0, 0),\n Point3d.create(0.6, 0.1, 0),\n Point3d.create(1, 0.1, 0),\n Point3d.create(0.6, 1, 0),\n Point3d.create(),\n ];\n return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);\n }\n /** Create a diamond with convex fractal */\n public static createFractalDiamondConvexPattern(numRecursion: number, perpendicularFactor: number): Point3d[] {\n const pattern: Point2d[] = [\n Point2d.create(),\n Point2d.create(0.3, 0.05),\n Point2d.create(0.5, 0.10),\n Point2d.create(0.7, 0.04),\n Point2d.create(1.0, 0.0),\n ];\n const poles: Point3d[] = [\n Point3d.create(0, -1, 0),\n Point3d.create(1, 0, 0),\n Point3d.create(0, 1, 0),\n Point3d.create(-1, 0, 0),\n Point3d.create(0, -1, 0),\n ];\n return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);\n }\n /** Create l on a square, with pattern shift to both directions. */\n public static createFractalSquareReversingPattern(numRecursion: number, perpendicularFactor: number): Point3d[] {\n const pattern: Point2d[] = [\n Point2d.create(),\n Point2d.create(0.25, 0),\n Point2d.create(0.5, 0.2),\n Point2d.create(0.75, -0.1),\n Point2d.create(1.0, 0.0),\n ];\n const poles: Point3d[] = [\n Point3d.create(),\n Point3d.create(1, 0, 0),\n Point3d.create(1, 1, 0),\n Point3d.create(0, 1, 0),\n Point3d.create(0, 0, 0),\n ];\n return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);\n }\n /** Create a fractal on a non-convex base and reversing pattern */\n public static createFractalHatReversingPattern(numRecursion: number, perpendicularFactor: number): Point3d[] {\n const pattern: Point2d[] = [\n Point2d.create(),\n Point2d.create(0.25, 0),\n Point2d.create(0.25, 0.1),\n Point2d.create(0.50, 0.1),\n Point2d.create(0.50, -0.1),\n Point2d.create(0.75, -0.1),\n Point2d.create(0.75, 0),\n Point2d.create(1.0, 0.0),\n ];\n const poles: Point3d[] = [\n Point3d.create(),\n Point3d.create(1, 0, 0),\n Point3d.create(1, 1, 0),\n Point3d.create(0, 1, 0),\n Point3d.create(0, 0, 0),\n ];\n return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);\n }\n /** Create a fractal on a primary L shape with a reversing pattern */\n public static createFractalLReversingPattern(numRecursion: number, perpendicularFactor: number): Point3d[] {\n const pattern: Point2d[] = [\n Point2d.create(),\n Point2d.create(0.25, 0),\n Point2d.create(0.5, 0.2),\n Point2d.create(0.75, -0.1),\n Point2d.create(1.0, 0.0),\n ];\n const poles: Point3d[] = [\n Point3d.create(),\n Point3d.create(1, 0, 0),\n Point3d.create(1, 1, 0),\n Point3d.create(2, 2, 0),\n Point3d.create(2, 3, 0),\n Point3d.create(0, 3, 0),\n Point3d.create(),\n ];\n return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);\n }\n /** Fractal with fewer concavity changes.... */\n public static createFractalLMildConcavePatter(numRecursion: number, perpendicularFactor: number): Point3d[] {\n const pattern: Point2d[] = [\n Point2d.create(),\n Point2d.create(0.25, 0.05),\n Point2d.create(0.5, 0.15),\n Point2d.create(0.75, 0.05),\n Point2d.create(1.0, 0.0),\n ];\n const poles: Point3d[] = [\n Point3d.create(),\n Point3d.create(1, 0, 0),\n Point3d.create(1, 1, 0),\n Point3d.create(2, 2, 0),\n Point3d.create(1.5, 3, 0),\n Point3d.create(0, 3, 0),\n Point3d.create(),\n ];\n return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);\n }\n /** Append interpolated points from the array tail to the target. */\n public static appendSplits(points: Point3d[], target: Point3d, numSplit: number, includeTarget: boolean) {\n const pointA = points[points.length - 1];\n for (let i = 0; i < numSplit; i++)\n points.push(pointA.interpolate(i / numSplit, target));\n if (includeTarget)\n points.push(target);\n }\n /**\n * Triangle with 3 given vertices, and indicated extra points on each each.\n * @param numSplitAB number of extra points on edge AB\n * @param numSplitBC number of extra points on edge BC\n * @param numSplitCA number of extra points on edge CA\n * @param wrap true to replicate vertexA at end\n * @param xyzA vertexA\n * @param xyzB vertexB\n * @param xyzC vertexC\n */\n public static createTriangleWithSplitEdges(\n numSplitAB: number,\n numSplitBC: number,\n numSplitCA: number,\n wrap: boolean = true,\n xyzA: Point3d = Point3d.create(0, 0, 0),\n xyzB: Point3d = Point3d.create(1, 0, 0),\n xyzC: Point3d = Point3d.create(0, 1, 0)): Point3d[] {\n const result = [xyzA.clone()];\n Sample.appendSplits(result, xyzB, numSplitAB, true);\n Sample.appendSplits(result, xyzC, numSplitBC, true);\n Sample.appendSplits(result, xyzA, numSplitCA, wrap);\n return result;\n }\n /** Create a box (xyz) from half-lengths and center. */\n public static createCenteredBoxEdges(ax: number = 1, ay: number = 1, az: number = 0, cx: number = 0, cy: number = 0, cz: number = 0,\n geometry?: GeometryQuery[]): GeometryQuery[] {\n if (!geometry)\n geometry = [];\n const x0 = cx - ax;\n const y0 = cy - ay;\n const z0 = cz - az;\n const x1 = cx + ax;\n const y1 = cy + ay;\n const z1 = cz + az;\n for (const z of [z0, z1]) {\n geometry.push(\n LineString3d.create(\n Point3d.create(x0, y0, z),\n Point3d.create(x1, y0, z),\n Point3d.create(x1, y1, z),\n Point3d.create(x0, y1, z),\n Point3d.create(x0, y0, z),\n ),\n );\n }\n geometry.push(LineSegment3d.createXYZXYZ(x0, y0, z0, x0, y0, z1));\n geometry.push(LineSegment3d.createXYZXYZ(x1, y0, z0, x1, y0, z1));\n geometry.push(LineSegment3d.createXYZXYZ(x1, y1, z0, x1, y1, z1));\n geometry.push(LineSegment3d.createXYZXYZ(x0, y1, z0, x0, y1, z1));\n return geometry;\n }\n /**\n * Assorted transition spirals\n * * (All combinations of bearing radius bearing radius length subsets.)\n */\n public static createSimpleTransitionSpirals(): TransitionSpiral3d[] {\n // 5 spirals exercise the intricate \"4 out of 5\" input rules for spirals . ..\n const r1 = 1000.0;\n const r0 = 0.0;\n const averageCurvature = IntegratedSpiral3d.averageCurvatureR0R1(r0, r1);\n const arcLength = 100.0;\n const dThetaRadians = arcLength * averageCurvature;\n return [\n IntegratedSpiral3d.createFrom4OutOf5(\n \"clothoid\", r0, r1,\n Angle.createDegrees(0),\n Angle.createRadians(dThetaRadians),\n undefined,\n undefined,\n Transform.createIdentity(),\n )!,\n IntegratedSpiral3d.createFrom4OutOf5(\n \"bloss\", r0, r1,\n Angle.createDegrees(0),\n undefined,\n arcLength,\n undefined,\n Transform.createIdentity(),\n )!,\n IntegratedSpiral3d.createFrom4OutOf5(\n \"clothoid\", r0, r1,\n undefined,\n Angle.createRadians(dThetaRadians),\n arcLength,\n undefined,\n Transform.createIdentity(),\n )!,\n IntegratedSpiral3d.createFrom4OutOf5(\n \"biquadratic\", r0, undefined,\n Angle.createDegrees(0),\n Angle.createRadians(dThetaRadians),\n arcLength,\n undefined,\n Transform.createIdentity(),\n )!,\n IntegratedSpiral3d.createFrom4OutOf5(\n \"sine\", undefined, r1,\n Angle.createDegrees(0),\n Angle.createRadians(dThetaRadians),\n arcLength,\n undefined,\n Transform.createIdentity(),\n )!,\n IntegratedSpiral3d.createFrom4OutOf5(\n \"cosine\", r0, r1,\n Angle.createDegrees(0),\n Angle.createRadians(dThetaRadians),\n undefined,\n Segment1d.create(0, 0.5),\n Transform.createOriginAndMatrix(\n Point3d.create(1, 2, 0),\n Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createDegrees(15)),\n ),\n )!,\n DirectSpiral3d.createFromLengthAndRadius(\n \"Arema\", r0, r1,\n Angle.createDegrees(0),\n undefined,\n arcLength,\n undefined,\n Transform.createOriginAndMatrix(\n Point3d.create(1, 2, 0),\n Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createDegrees(15)),\n ),\n )!,\n DirectSpiral3d.createFromLengthAndRadius(\n \"ChineseCubic\", r0, r1,\n Angle.createDegrees(0),\n undefined,\n arcLength,\n undefined,\n Transform.createOriginAndMatrix(\n Point3d.create(1, 2, 0),\n Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createDegrees(15)),\n ),\n )!,\n DirectSpiral3d.createFromLengthAndRadius(\n \"JapaneseCubic\", r0, r1,\n Angle.createDegrees(0),\n undefined,\n arcLength,\n undefined,\n Transform.createOriginAndMatrix(\n Point3d.create(1, 2, 0),\n Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createDegrees(15)),\n ),\n )!,\n DirectSpiral3d.createFromLengthAndRadius(\n \"DirectHalfCosine\", r0, r1,\n Angle.createDegrees(0),\n undefined,\n arcLength,\n undefined,\n Transform.createOriginAndMatrix(\n Point3d.create(1, 2, 0),\n Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createDegrees(15)),\n ),\n )!,\n DirectSpiral3d.createCzechCubic(Transform.createIdentity(), arcLength, r1)!,\n ];\n }\n /**\n * Create a Bezier curve with significant twist effects\n * * r and theta are circle in xy plane at steps in thetaStepper\n * * z varies with sin(phi) at steps in phiStepper.\n */\n public static createTwistingBezier(order: number,\n x0: number,\n y0: number,\n r: number,\n thetaStepper: AngleSweep,\n phiStepper: AngleSweep,\n weightInterval?: Segment1d,\n ): CurvePrimitive | undefined {\n if (weightInterval !== undefined) {\n const points = [];\n for (let i = 0; i < order; i++) {\n const theta = thetaStepper.fractionToRadians(i);\n const phi = phiStepper.fractionToRadians(i);\n const weight = weightInterval.fractionToPoint(i / (order - 1));\n points.push(\n Point4d.create(\n weight * (x0 + r * Math.cos(theta)),\n weight * (y0 + r * Math.sin(theta)),\n weight * Math.sin(phi), weight,\n ),\n );\n }\n return BezierCurve3dH.create(points)!;\n } else {\n const points = [];\n for (let i = 0; i < order; i++) {\n const theta = thetaStepper.fractionToRadians(i);\n const phi = phiStepper.fractionToRadians(i);\n points.push(Point3d.create(x0 + r * Math.cos(theta), y0 + r * Math.sin(theta), Math.sin(phi)));\n }\n return BezierCurve3d.create(points);\n }\n }\n /**\n * Create various curve chains with distance indexing.\n * * LineSegment\n * * CircularArc\n * * LineString\n * * order 3 bspline\n * * order 4 bspline\n * * alternating lines and arcs\n * * arc spline with corners\n * * arc spline with smooth joins\n * * interpolation curve 2 pts\n * * interpolation curve 3 pts\n * * interpolation curve >3 pts\n * * integrated spiral (bloss)\n * * direct spiral (half-cosine)\n */\n public static createCurveChainWithDistanceIndex(): CurveChainWithDistanceIndex[] {\n const pointsA = [\n Point3d.create(0, 0, 0),\n Point3d.create(1, 3, 0),\n Point3d.create(2, 4, 0),\n Point3d.create(3, 3, 0),\n Point3d.create(4, 0, 0),\n ];\n const result = [];\n // one singleton per basic curve type ...\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(LineSegment3d.create(Point3d.create(0, 0, 0), Point3d.create(5, 0, 0))),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(\n Arc3d.createCircularStartMiddleEnd(\n Point3d.create(0, 0, 0), Point3d.create(3, 3, 0), Point3d.create(6, 0, 0),\n ),\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(LineString3d.create(pointsA)),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(BSplineCurve3d.createUniformKnots(pointsA, 3)!),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(BSplineCurve3d.createUniformKnots(pointsA, 4)!),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(\n LineSegment3d.create(pointsA[0], pointsA[1]),\n Arc3d.createCircularStartMiddleEnd(pointsA[1], pointsA[2], pointsA[3]),\n LineSegment3d.create(pointsA[3], pointsA[4]),\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create( // arc spline with corners\n Arc3d.createXY(Point3d.create(5, 0), 5, AngleSweep.createStartEndDegrees(180, 0)),\n Arc3d.createXY(Point3d.create(15, 0), 5, AngleSweep.createStartEndDegrees(180, 0)),\n Arc3d.createXY(Point3d.create(25, 0), 5, AngleSweep.createStartEndDegrees(180, 0)),\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create( // arc spline with smooth joins\n Arc3d.createXY(Point3d.create(5, 0), 5, AngleSweep.createStartEndDegrees(180, 0)),\n Arc3d.createXY(Point3d.create(15, 0), 5, AngleSweep.createStartEndDegrees(180, 360)),\n Arc3d.createXY(Point3d.create(25, 0), 5, AngleSweep.createStartEndDegrees(180, 0)),\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create( // 2-pt Interpolation Curve\n InterpolationCurve3d.createCapture(\n InterpolationCurve3dOptions.create(\n { fitPoints: [pointsA[0], pointsA[1]] },\n ),\n )!,\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create( // 3-pt Interpolation Curve\n InterpolationCurve3d.createCapture(\n InterpolationCurve3dOptions.create(\n { fitPoints: [pointsA[0], pointsA[1], pointsA[2]] },\n ),\n )!,\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(\n InterpolationCurve3d.createCapture(\n InterpolationCurve3dOptions.create(\n { fitPoints: pointsA, startTangent: Point3d.create(1, -1), endTangent: Point3d.create(-1, -1) },\n ),\n )!,\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(\n IntegratedSpiral3d.createRadiusRadiusBearingBearing(\n Segment1d.create(0, 100),\n AngleSweep.createStartEndDegrees(10, 75),\n Segment1d.create(0, 1),\n Transform.createOriginAndMatrix(\n Point3d.createZero(), Matrix3d.createRotationAroundAxisIndex(2, Angle.createDegrees(30)),\n ),\n \"bloss\",\n )!,\n ),\n ),\n );\n result.push(\n CurveChainWithDistanceIndex.createCapture(\n Path.create(\n DirectSpiral3d.createDirectHalfCosine(\n Transform.createOriginAndMatrix(\n Point3d.createZero(), Matrix3d.createRotationAroundAxisIndex(2, Angle.createDegrees(110)),\n ),\n 50,\n 350,\n Segment1d.create(0, 1),\n )!,\n ),\n ),\n );\n return result;\n }\n /**\n * Create a square wave path.\n * @param numTooth number of teeth.\n * @param dxA x size of \"A\" part\n * @param dxB x size of \"B\" part\n * @param yA y for A part\n * @param yB y for B part\n * @param structure 1 for line segments, 2 for one linestring per tooth, 0 for single linestring\n */\n public static createSquareWavePath(\n numTooth: number, dxA: number, dxB: number, yA: number, yB: number, structure: number,\n ): Path {\n const dxAB = dxA + dxB;\n const path = Path.create();\n // build the whole linestring ...\n const allPoints = new GrowableXYZArray(4 * numTooth);\n let x2 = 0.0;\n for (let i = 0; i < numTooth; i++) {\n const x0 = i * dxAB;\n const x1 = x0 + dxA;\n x2 = (i + 1) * dxAB;\n allPoints.pushXYZ(x0, yA, 0);\n allPoints.pushXYZ(x1, yA, 0.0);\n allPoints.pushXYZ(x1, yB, 0.0);\n allPoints.pushXYZ(x2, yB, 0.0);\n }\n allPoints.pushXYZ(x2, yA, 0.0);\n const numPoints = allPoints.length;\n if (structure === 1) {\n const pointA = Point3d.create();\n const pointB = Point3d.create();\n allPoints.getPoint3dAtUncheckedPointIndex(0, pointA);\n for (let i1 = 0; i1 + 1 < numPoints; i1++) {\n allPoints.getPoint3dAtUncheckedPointIndex(i1, pointB);\n path.tryAddChild(LineSegment3d.create(pointA, pointB));\n pointA.setFromPoint3d(pointB);\n }\n } else if (structure === 2) {\n for (let i0 = 0; i0 + 4 < numPoints; i0 += 4) {\n const ls = LineString3d.create();\n ls.addSteppedPoints(allPoints, i0, 1, 5);\n path.tryAddChild(ls);\n }\n } else {\n const ls = LineString3d.create();\n ls.addSteppedPoints(allPoints, 0, 1, numPoints);\n path.tryAddChild(ls);\n }\n return path;\n }\n /**\n * Create various elliptic arcs\n * * circle with vector0, vector90 aligned with x,y\n * * circle with axes rotated\n * *\n * @param radiusRatio = vector90.magnitude / vector0.magnitude\n */\n public static createArcs(radiusRatio: number = 1.0, sweep: AngleSweep = AngleSweep.create360()): Arc3d[] {\n const arcs = [];\n const center0 = Point3d.create(0, 0, 0);\n const a = 1.0;\n const b = radiusRatio;\n const direction0 = Vector3d.createPolar(a, Angle.createDegrees(35.0));\n const direction90 = direction0.rotate90CCWXY();\n direction90.scaleInPlace(radiusRatio);\n arcs.push(Arc3d.create(center0, Vector3d.create(a, 0, 0), Vector3d.create(0, b, 0), sweep));\n arcs.push(Arc3d.create(center0, direction0, direction90, sweep));\n return arcs;\n }\n /**\n * Create many arcs, optionally including skews\n * * @param skewFactor array of skew factors. for each skew factor, all base arcs are replicated with vector90 shifted by the factor times vector0\n */\n public static createManyArcs(skewFactors: number[] = []): Arc3d[] {\n const result: Arc3d[] = [];\n const sweep1 = AngleSweep.createStartEndDegrees(-10, 75);\n const sweep2 = AngleSweep.createStartEndDegrees(160.0, 380.0);\n for (const arcs of [\n Sample.createArcs(1.0), Sample.createArcs(0.5),\n Sample.createArcs(1.0, sweep1), Sample.createArcs(0.3, sweep2),\n ]) {\n for (const arc of arcs)\n result.push(arc);\n }\n const numBase = result.length;\n for (const skewFactor of skewFactors) {\n for (let i = 0; i < numBase; i++) {\n const originalArc = result[i];\n result.push(Arc3d.create(originalArc.center, originalArc.vector0, originalArc.vector90.plusScaled(originalArc.vector0, skewFactor), originalArc.sweep));\n }\n }\n return result;\n }\n /**\n * Create edges of a range box.\n * * Line strings on low and high z\n * * single lines on each low z to high z edge.\n * * @param range (possibly null) range\n */\n public static createRangeEdges(range: Range3d): BagOfCurves | undefined {\n if (range.isNull)\n return undefined;\n const corners = range.corners();\n return BagOfCurves.create(\n LineString3d.create(corners[0], corners[1], corners[3], corners[2], corners[0]),\n LineString3d.create(corners[4], corners[5], corners[7], corners[6], corners[4]),\n LineSegment3d.create(corners[0], corners[4]),\n LineSegment3d.create(corners[1], corners[5]),\n LineSegment3d.create(corners[2], corners[6]),\n LineSegment3d.create(corners[3], corners[7]),\n );\n }\n /** Create swept \"solids\" that can be capped.\n * * At least one of each solid type.\n * * each is within 10 of the origin all directions.\n * @param capped true to include caps\n * @param rotationAngle angle of rotation for the angular sweep. The default is 90 degrees.\n * Beware that the rotation sweep created with the default or any positive angle produces a mesh with inward normals.\n */\n public static createClosedSolidSampler(capped: boolean, rotationAngle: Angle = Angle.createDegrees(90)): SolidPrimitive[] {\n const result = [];\n result.push(Box.createRange(Range3d.createXYZXYZ(0, 0, 0, 3, 2, 5), capped)!);\n result.push(Cone.createAxisPoints(Point3d.create(0, 0, 0), Point3d.create(0, 0, 5), 1.0, 1.0, capped)!);\n result.push(Sphere.createCenterRadius(Point3d.create(0, 0, 0), 1.0));\n result.push(TorusPipe.createInFrame(Transform.createIdentity(), 3.0, 1.0, Angle.create360(), capped)!);\n const arcA = Arc3d.createXY(Point3d.create(6, 1, 0), 1.0, AngleSweep.createStartEndDegrees(-90, 0));\n const point0 = arcA.fractionAndDistanceToPointOnTangent(0.0, -4);\n const pointQ1 = arcA.fractionAndDistanceToPointOnTangent(1.0, 2);\n const pointQ2 = arcA.fractionAndDistanceToPointOnTangent(1.0, 0.5);\n const pointR1 = Point3d.create(point0.x, pointQ1.y);\n const pointR2 = Point3d.create(point0.x, pointQ1.y);\n const pointR3 = Point3d.create(pointQ1.x - 1, pointQ1.y);\n const pointR4 = Point3d.create(pointQ1.x - 3, pointQ1.y);\n const linestringQ1 = LineString3d.create(arcA.fractionToPoint(1.0), pointQ1, pointR1, point0);\n const linestringQ2 = LineString3d.create(arcA.fractionToPoint(1.0), pointQ2, pointR2, point0);\n const linestringQ3 = LineString3d.create(arcA.fractionToPoint(1.0), pointQ2, pointR3, pointR4, point0);\n const contourZ = Path.create(linestringQ1.clone());\n const contourA = Loop.create(\n LineSegment3d.create(point0, arcA.fractionToPoint(0)),\n arcA.clone(),\n linestringQ1.clone(),\n );\n const contourB = Loop.create(\n LineSegment3d.create(point0, arcA.fractionToPoint(0)),\n arcA.clone(),\n linestringQ2.clone(),\n );\n const contourC1 = Loop.create(\n LineSegment3d.create(point0, arcA.fractionToPoint(0)),\n arcA.clone(),\n linestringQ3.clone(),\n );\n contourB.tryTransformInPlace(Transform.createTranslationXYZ(1, 1, 3));\n // const contourC = contourB.cloneTransformed(Transform.createTranslationXYZ(2, 1, 4))!;\n result.push(LinearSweep.create(contourA, Vector3d.create(0, 0, 5), capped)!);\n result.push(LinearSweep.create(contourC1, Vector3d.create(0, 0, 5), capped)!);\n const axis = Ray3d.createXYZUVW(0, 8, 0, 1, 0, 0);\n result.push(RotationalSweep.create(contourA.clone(), axis.clone(), rotationAngle, capped)!);\n if (!capped)\n result.push(RotationalSweep.create(contourZ.clone(), axis.clone(), rotationAngle, false)!);\n result.push(RuledSweep.create([contourA.clone(), contourB.clone()], capped)!);\n const transformC = Transform.createScaleAboutPoint(Point3d.create(0, 0, 8), 0.5);\n const contourC = contourB.cloneTransformed(transformC)!;\n result.push(RuledSweep.create([contourA.clone(), contourB.clone(), contourC.clone()], capped)!);\n return result;\n }\n /**\n * Create points:\n * * `numRadialEdges` radially from origin to polar point (r,sweep.start)\n * * `numArcEdges` along arc from (r,sweep.start) to (r,sweep.end)\n * * `numRadialEdges` returning to origin.\n * * optionally include closure point at origin.\n * @param x0 center x\n * @param y0 center y\n * @param radius radius of circle.\n * @param sweep start and end angles of sweep.\n * @param numRadialEdges number of edges from center to arc\n * @param numArcEdges number of edges along arc\n * @param addClosure true to repeat center as closure point\n */\n public static createCutPie(\n x0: number, y0: number, radius: number, sweep: AngleSweep, numRadialEdges: number, numArcEdges: number, addClosure = false,\n ): Point3d[] {\n const points = [];\n const center = Point3d.create(x0, y0);\n points.push(center);\n const pointA = Point3d.create(x0 + radius * Math.cos(sweep.startRadians), y0 + radius * Math.sin(sweep.startRadians));\n const pointB = Point3d.create(x0 + radius * Math.cos(sweep.endRadians), y0 + radius * Math.sin(sweep.endRadians));\n for (let i = 1; i < numRadialEdges; i++)\n points.push(center.interpolate(i / numRadialEdges, pointA));\n points.push(pointA);\n for (let i = 1; i < numArcEdges; i++) {\n const radians = sweep.fractionToRadians(i / numArcEdges);\n points.push(Point3d.create(x0 + radius * Math.cos(radians), y0 + radius * Math.sin(radians)));\n }\n points.push(pointB);\n for (let i = 1; i < numRadialEdges; i++)\n points.push(pointB.interpolate(i / numRadialEdges, center));\n if (addClosure)\n points.push(center.clone());\n return points;\n }\n /**\n * * Let ay = 4\n * * Base polygon has vertices (0,0), (ax,0), (2*ax,0), (2* ax,ay), (ax,ay), (0,ay), (0,0).\n * * Shift the x coordinates of vertices 1,4 by indicated amounts (0-based numbering)\n * * Shift the y coordinates for points 1,2,3,4 by indicated amounts (in 0-based numbering)\n * * This is useful for testing non-y-monotonic face situations.\n * * Return as points.\n * @param dy1\n * @param dy2\n * @param dy3\n * @param dy4\n */\n public static createVerticalStaggerPolygon(\n dy1: number, dy2: number, dy3: number, dy4: number, ax: number, ay: number, dx1: number, dx4: number,\n ): Point3d[] {\n const points = [];\n points.push(Point3d.create(0, 0));\n points.push(Point3d.create(ax + dx1, dy1));\n points.push(Point3d.create(2 * ax, dy2));\n points.push(Point3d.create(2 * ax, ay + dy3));\n points.push(Point3d.create(ax + dx4, ay + dy4));\n points.push(Point3d.create(0.0, ay));\n points.push(Point3d.create(0, 0));\n return points;\n }\n\n // cspell:word creat\n /** @deprecated in 4.0.0 - will not be removed until after 2026-06-13. Use createVerticalStaggerPolygon instead. */\n public static creatVerticalStaggerPolygon(\n dy1: number, dy2: number, dy3: number, dy4: number, ax: number, ay: number, dx1: number, dx4: number,\n ): Point3d[] {\n return this.createVerticalStaggerPolygon(dy1, dy2, dy3, dy4, ax, ay, dx1, dx4);\n }\n\n /**\n * Make line segments for each pair of adjacent points.\n * @param points array of points\n * @param forceClosure if true, inspect coordinates to determine if a closure edge is needed.\n */\n public static convertPointsToSegments(points: Point3d[], forceClosure: boolean = false): LineSegment3d[] {\n const segments = [];\n const n = points.length;\n for (let i = 0; i + 1 < n; i++) {\n segments.push(LineSegment3d.create(points[i], points[i + 1]));\n }\n if (forceClosure && n > 1 && !points[0].isAlmostEqual(points[n - 1]))\n segments.push(LineSegment3d.create(points[n - 1], points[0]));\n return segments;\n }\n /**\n * Create a regular polygon\n * @param angle0 angle from x axis to first point.\n * @param numPoint number of points\n * @param close true to add closure edge.\n */\n public static createRegularPolygon(\n cx: number, cy: number, cz: number, angle0: Angle, r: number, numPoint: number, close: boolean,\n ): Point3d[] {\n const points = [];\n const angleStepRadians = 2.0 * Math.PI / numPoint;\n let radians;\n for (let i = 0; i < numPoint; i++) {\n radians = angle0.radians + i * angleStepRadians;\n points.push(Point3d.create(cx + r * Math.cos(radians), cy + r * Math.sin(radians), cz));\n }\n if (close)\n points.push(points[0].clone());\n return points;\n }\n /**\n * Create a star by alternating radii (with equal angular steps)\n * @param r0 first point radius\n * @param r1 second point radius (if undefined, this is skipped and the result is points on a circle.)\n * @param numPoint number of points\n * @param close true to add closure edge.\n */\n public static createStar(\n cx: number, cy: number, cz: number, r0: number, r1: number | undefined, numPoint: number, close: boolean, theta0?: Angle,\n ): Point3d[] {\n const points = [];\n const angleStepRadians = Math.PI / numPoint;\n const radians0 = theta0 === undefined ? 0.0 : theta0.radians;\n let radians;\n for (let i = 0; i < numPoint; i++) {\n radians = radians0 + 2 * i * angleStepRadians;\n points.push(Point3d.create(cx + r0 * Math.cos(radians), cy + r0 * Math.sin(radians), cz));\n if (r1 !== undefined) {\n radians = radians0 + (2 * i + 1) * angleStepRadians;\n points.push(Point3d.create(cx + r1 * Math.cos(radians), cy + r1 * Math.sin(radians), cz));\n }\n }\n if (close)\n points.push(points[0].clone());\n return points;\n }\n /**\n * Create an outer star A\n * Place multiple inner stars B with centers on circle C\n * @param rA0 radius to star tips on starA\n * @param rA1 radius to star tips on starA\n * @param numAPoint number of points on starA\n * @param rB0 radius to star B tips\n * @param rB1 radius to star B tips\n * @param numBPoint\n * @param rC radius for inner star centers\n * @param numC number of inner stars\n */\n public static createStarsInStars(rA0: number, rA1: number, numAPoint: number, rB0: number, rB1: number, numBPoint: number, rC: number, numC: number, close: boolean): Point3d[][] {\n const loops: Point3d[][] = [];\n loops.push(this.createStar(0, 0, 0, rA0, rA1, numAPoint, close));\n if (numC > 0) {\n const radiansStep = Math.PI * 2.0 / numC;\n for (let i = 0; i < numC; i++) {\n const radians = i * radiansStep;\n loops.push(\n this.createStar(rC * Math.cos(radians), rC * Math.sin(radians), 0.0, rB0, rB1, numBPoint, close),\n );\n }\n }\n return loops;\n }\n private static appendGeometry(source: GeometryQuery[], dest: GeometryQuery[]) {\n for (const g of source) dest.push(g);\n }\n /** Create a simple example of each GeometryQuery type .... */\n public static createAllGeometryQueryTypes(): GeometryQuery[] {\n const result: GeometryQuery[] = [];\n const pointA = Point3d.create(0, 0, 0);\n const pointB = Point3d.create(1, 0, 0);\n const pointC = Point3d.create(1, 1, 0);\n const pointD = Point3d.create(0, 1, 0);\n const pointABC = [pointA, pointB, pointC];\n const pointABCD = [pointA, pointB, pointC, pointD];\n const pointABCD1 = [pointA, pointB, pointC, pointD, pointA];\n result.push(LineSegment3d.create(pointA, pointB));\n result.push(CoordinateXYZ.create(pointA));\n result.push(Arc3d.createCircularStartMiddleEnd(pointA, pointB, pointC));\n result.push(PointString3d.create(pointA, pointB));\n result.push(\n IntegratedSpiral3d.createRadiusRadiusBearingBearing(\n Segment1d.create(0, 100),\n AngleSweep.createStartEndDegrees(0, 5),\n Segment1d.create(0, 0.5),\n Transform.createIdentity(),\n )!,\n );\n result.push(LineString3d.create(pointABCD));\n result.push(BezierCurve3d.create(pointABC)!);\n result.push(BezierCurve3dH.create(pointABC)!);\n result.push(BSplineCurve3d.createUniformKnots(pointABC, 3)!);\n result.push(BSplineCurve3dH.createUniformKnots(pointABC, 3)!);\n result.push(Loop.create(LineString3d.create(pointABCD1)));\n result.push(Path.create(LineString3d.create(pointABCD)));\n result.push(this.createConeBsplineSurface(pointA, pointC, 1, 2, 4)!);\n result.push(this.createXYGridBsplineSurface(8, 4, 4, 3)!);\n this.appendGeometry(this.createClosedSolidSampler(true), result);\n result.push(this.createTriangularUnitGridPolyface(pointA, Vector3d.unitX(), Vector3d.unitY(), 4, 5));\n result.push(\n this.createTriangularUnitGridPolyface(\n pointA, Vector3d.unitX(), Vector3d.unitY(), 4, 5, true, true, true, false,\n ),\n );\n this.appendGeometry(this.createSimpleParityRegions(), result);\n this.appendGeometry(this.createSimpleUnions(), result);\n this.appendGeometry(this.createBagOfCurves(), result);\n return result;\n }\n /**\n * Create points on a sine wave.\n * * Point i is origin + (i * xStep, a *sin(theta0 + i * dTheta), b * sin(beta0 + i * dBeta)).\n * * Default b is zero, so it is a simple sine wave.\n * * If the dTheta and dBeta are equal, it is a sine wave in a tilted plane.\n * * If dTheta and dBeta are different it is a non-planar curve.\n */\n public static createPointSineWave(\n origin: XYAndZ | undefined,\n numInterval: number = 24,\n xStep: number = Math.PI / 12,\n a: number = 1,\n thetaSweep: AngleSweep = AngleSweep.createStartEndDegrees(0, 360),\n b: number = 0,\n betaSweep: AngleSweep = AngleSweep.createStartEndDegrees(0, 180),\n ): Point3d[] {\n return this.createPointsByIndexFunctions(\n numInterval, SteppedIndexFunctionFactory.createLinear(xStep, origin ? origin.x : 0),\n SteppedIndexFunctionFactory.createCosine(a, thetaSweep, origin ? origin.y : 0),\n SteppedIndexFunctionFactory.createCosine(b, betaSweep, origin ? origin.z : 0),\n );\n }\n /**\n * Create points with x,y,z independent functions of i and numInterval,\n * Point3d.create (fx(i,numInterval), fy(i,numInterval), fz(i, numInterval));\n */\n public static createPointsByIndexFunctions(\n numInterval: number, fx: SteppedIndexFunction, fy: SteppedIndexFunction, fz?: SteppedIndexFunction,\n ): Point3d[] {\n const points = [];\n if (numInterval > 0) {\n for (let i = 0; i <= numInterval; i++) {\n points.push(Point3d.create(fx(i, numInterval), fy(i, numInterval), fz ? fz(i, numInterval) : 0));\n }\n }\n return points;\n }\n /**\n * Add an AuxData (with multiple AuxChannelData) using data evaluated by a function of input and xyz.\n * @param data existing polyface data object to receive the additional AuxChannel\n * @param channelIndex\n * @param name name of channel\n * @param inputName name of input\n * @param input0 input value for channel 0\n * @param inputStep step between inputs (channels)\n * @param numInput number of channels (inputs)\n * @param dataType\n * @param scalarFunction function to return the scalar value at (input, point)\n */\n public static addAuxDataScalarChannel(\n data: PolyfaceData,\n channelIndex: number,\n name: string | undefined,\n inputName: string | undefined,\n input0: number, inputStep: number, numInput: number,\n dataType: AuxChannelDataType,\n scalarFunction: (input: number, xyz: Point3d) => number,\n ): void {\n if (!data.auxData)\n data.auxData = new PolyfaceAuxData([], []);\n const channelDataArray = [];\n const xyz = Point3d.create();\n for (let i = 0; i < numInput; i++) {\n const input = input0 + i * inputStep;\n const values = [];\n for (let k = 0; k < data.point.length; k++) {\n data.point.getPoint3dAtUncheckedPointIndex(k, xyz);\n values.push(scalarFunction(input, xyz));\n }\n channelDataArray.push(new AuxChannelData(input, values));\n }\n const channel = new AuxChannel(channelDataArray, dataType, name, inputName);\n for (const _q of data.pointIndex) {\n data.auxData.indices.push(channelIndex);\n }\n data.auxData.channels.push(channel);\n }\n /**\n * Create a mesh between concentric arcs\n * @param edgesPerQuadrant edges per 90 degrees\n * @param center arc center\n * @param r0 first radius\n * @param r1 second radius\n * @param theta0 start angle\n * @param theta1 end angle.\n * @returns\n */\n public static createMeshInAnnulus(\n edgesPerQuadrant: number, center: Point3d, r0: number, r1: number, theta0: Angle, theta1: Angle,\n ): IndexedPolyface | undefined {\n const point0 = [];\n const point1 = [];\n if (edgesPerQuadrant < 1)\n edgesPerQuadrant = 1;\n let edgeCount = Math.ceil(edgesPerQuadrant * (theta1.degrees - theta0.degrees) / 90);\n if (edgeCount < 1)\n edgeCount = 1;\n for (let i = 0; i <= edgeCount; i++) {\n const theta = Angle.createInterpolate(theta0, i / edgeCount, theta1);\n point0.push(center.plusXYZ(r0 * theta.cos(), r0 * theta.sin(), 0));\n point1.push(center.plusXYZ(r1 * theta.cos(), r1 * theta.sin(), 0));\n }\n point1.reverse();\n const builder = PolyfaceBuilder.create();\n builder.addGreedyTriangulationBetweenLineStrings(point0, point1);\n return builder.claimPolyface();\n }\n /** Create strokes on an arc at radius r0, then returning at radius r1. */\n public static createAnnulusPolyline(\n edgesPerQuadrant: number, center: Point3d, r0: number, r1: number, theta0: Angle, theta1: Angle, addClosure: boolean,\n ): Point3d[] {\n const point0: Point3d[] = [];\n const point1: Point3d[] = [];\n if (edgesPerQuadrant < 1)\n edgesPerQuadrant = 1;\n let edgeCount = Math.ceil(edgesPerQuadrant * (theta1.degrees - theta0.degrees) / 90);\n if (edgeCount < 1)\n edgeCount = 1;\n for (let i = 0; i <= edgeCount; i++) {\n const theta = Angle.createInterpolate(theta0, i / edgeCount, theta1);\n point0.push(center.plusXYZ(r0 * theta.cos(), r0 * theta.sin(), 0));\n point1.push(center.plusXYZ(r1 * theta.cos(), r1 * theta.sin(), 0));\n }\n while (point1.length > 0)\n point0.push(point1.pop()!);\n if (addClosure)\n point0.push(point0[0].clone());\n return point0;\n }\n /**\n * Create a grid of lat-long points on a sphere.\n * * If pole latitudes appear in the evaluation, a single point (not a circle) is evaluated.\n * * Circles at various latitudes proceed south to north.\n * * If first and last angles of longitudeSweep match, that meridian is not duplicated.\n * * Longitudes can wrap freely.\n * @param transform local to world\n * @param numLatitudeStep number of latitude steps (poles count if they are in the sweeps)\n * @param numLongitudeStep number of longitude steps\n * @param latitudeSweep angle range for latitudes\n * @param longitudeSweep angle range for longitudes\n */\n public static createGridPointsOnEllipsoid(\n transform: Transform,\n numLatitudeStep: number,\n numLongitudeStep: number,\n latitudeSweep: AngleSweep = AngleSweep.createStartEndDegrees(-90, 90),\n longitudeSweep: AngleSweep = AngleSweep.createStartEndDegrees(0, 360),\n ): Point3d[] {\n const points: Point3d[] = [];\n const numJ = numLatitudeStep + 1;\n const jFractionStep = 1.0 / numJ;\n let numI = numLongitudeStep;\n const iFractionStep = 1.0 / numI;\n if (longitudeSweep.isFullCircle)\n numI--;\n for (let j = 0; j < numJ; j++) {\n const phi = latitudeSweep.fractionToRadians(jFractionStep * j);\n const sinPhi = Math.sin(phi);\n const cosPhi = Math.cos(phi);\n const numIThisCircle = Angle.isAlmostEqualRadiansAllowPeriodShift(phi, -90) ? 1 : numI;\n for (let i = 0; i < numIThisCircle; i++) {\n const theta = longitudeSweep.fractionToRadians(iFractionStep * i);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n points.push(transform.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi));\n }\n }\n return points;\n }\n /**\n * Return an array of points on a circular arc.\n * @param edgesPerQuadrant number of edges per 90 degrees\n * @param center arc center\n * @param r0 arc radius\n * @param theta0 start angle\n * @param theta1 end angle\n * @param addClosure true to add a closure stroke\n * @returns\n */\n public static createArcStrokes(\n edgesPerQuadrant: number, center: Point3d, r0: number, theta0: Angle, theta1: Angle, addClosure: boolean = true, z: number = 0,\n ): Point3d[] {\n const point0: Point3d[] = [];\n if (edgesPerQuadrant < 1)\n edgesPerQuadrant = 1;\n let edgeCount = Math.ceil(edgesPerQuadrant * (theta1.degrees - theta0.degrees) / 90);\n if (edgeCount < 1)\n edgeCount = 1;\n for (let i = 0; i <= edgeCount; i++) {\n const theta = Angle.createInterpolate(theta0, i / edgeCount, theta1);\n point0.push(center.plusXYZ(r0 * theta.cos(), r0 * theta.sin(), z));\n }\n if (addClosure)\n point0.push(point0[0].clone());\n return point0;\n }\n /**\n * Create a mesh with\n * * xy facets are 1x1 quads starting at origin\n * * acceptFunction is called to accept or reject each quad's lower left xy coordinates\n * @param xzPoints array of points in the xz plane. Expected to have increasing x and all integer coordinates.\n * @param ySweep distance to sweep in y direction\n * @param acceptFunction (x0: number, y0: number)=> boolean\n */\n public static sweepXZLineStringToMeshWithHoles(\n xzPoints: number[][], ySweep: number, acceptFunction: (x0: number, y0: number) => boolean,\n ): IndexedPolyface {\n const builder = PolyfaceBuilder.create();\n for (let i0 = 0; i0 + 1 < xzPoints.length; i0++) {\n const x0 = xzPoints[i0][0];\n const z0 = xzPoints[i0][1];\n const i1 = i0 + 1;\n const x1 = xzPoints[i1][0];\n const z1 = xzPoints[i1][1];\n for (let xA = x0; xA + 1 <= x1; xA++) {\n const xB = xA + 1;\n const sA = (xA - x0) / (x1 - x0);\n const sB = (xB - x0) / (x1 - x0);\n const zA = Geometry.interpolate(z0, sA, z1);\n const zB = Geometry.interpolate(z0, sB, z1);\n for (let yC = 0; yC + 1 <= ySweep; yC++) {\n const yD = yC + 1;\n if (acceptFunction(xA, yC))\n builder.addPolygon([\n Point3d.create(xA, yC, zA),\n Point3d.create(xB, yC, zB),\n Point3d.create(xB, yD, zB),\n Point3d.create(xA, yD, zA),\n ]);\n }\n }\n }\n return builder.claimPolyface(true);\n }\n /**\n * Successively move in directions in the steps array, creating numStroke total strokes.\n * * In typical use there are two entries in the steps vector, giving the effect of stair steps if they are perpendicular.\n * * if start is a single point, create a new point array with start as its first entry.\n * * if start is an array, add to it.\n * * if start is an empty array, push 000 as starting point.\n * @param start start point or prior array of points whose last is start point.\n * @param steps array of vectors giving step vectors.\n * @param numStroke number of steps to take.\n */\n public static createZigZag(start: Point3d | Point3d[], steps: Vector3d[], numStroke: number): Point3d[] {\n let result: Point3d[];\n if (Array.isArray(start)) {\n result = start;\n if (result.length === 0)\n result.push(Point3d.create(0, 0, 0));\n } else {\n result = [start.clone()];\n }\n let numAdded = 0;\n for (; ;) {\n for (const step of steps) {\n if (++numAdded > numStroke)\n return result;\n result.push(result[result.length - 1].plus(step));\n }\n }\n }\n /** Create a point on the polar parametric curve r = cos(a * theta), aka \"rose\".\n * @param theta angle\n * @param a period multiplier. If odd, this is the petal count; if even, twice the number of petals.\n * @param z z-coordinate for output\n */\n public static createRosePoint3d(theta: number, a: number, z: number = 0): Point3d {\n const r = Math.cos(a * theta);\n return Point3d.create(r * Math.cos(theta), r * Math.sin(theta), z);\n }\n /** Create a point on the polar parametric curve r = cos(a * theta), aka \"rose\".\n * @param theta angle\n * @param a period multiplier. If odd, this is the petal count; if even, twice the number of petals.\n */\n public static createRosePoint2d(theta: number, a: number): Point2d {\n return Point2d.createFrom(Sample.createRosePoint3d(theta, a));\n }\n /**\n * Create a mesh surface from samples of a smooth real-valued function over [0,1]x[0,1] with multiple humps and dips.\n * * The facets are bilinear quads, so if planar facets are required, set `options.shouldTriangulate = true`.\n * @param size grid size; the number of intervals on each side of the unit square domain.\n * @param scales = array of 4 (four) numbers to scale the corresponding Franke exponential. If undefined, all scales are 1.\n */\n public static createMeshFromFrankeSurface(\n size: number,\n options?: StrokeOptions,\n scales?: number[]): IndexedPolyface | undefined {\n const builder = PolyfaceBuilder.create(options);\n builder.addUVGridBody(new FrankeSurface(scales), size, size);\n return builder.claimPolyface(true);\n }\n /** Stroke a helix over the unit circle. Place in space via a transform.\n * The various columns of the transform become the critical measures for the (elliptic) helix:\n * The unit cylinder maps to an elliptic cylinder with x and y columns as 0 and 90 degree vectors.\n * the Helix pitch is equal to the length of the z axis in the transform.\n * The completeTurns parameter (which does NOT need to be an integer) is the local z of the last point\n */\n public static createHelixPoints(\n completeTurns: number,\n numPoints: number,\n placement?: Transform,\n ): Point3d[] {\n const points: Point3d[] = [];\n if (numPoints < 2)\n numPoints = 2;\n const dThetaRadians = completeTurns * Math.PI * 2 / (numPoints - 1);\n const dz = completeTurns / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const thetaRadians = dThetaRadians * i;\n points.push(Point3d.create(Math.cos(thetaRadians), Math.sin(thetaRadians), i * dz));\n }\n if (placement)\n placement.multiplyPoint3dArrayInPlace(points);\n return points;\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GeometrySamples.js","sourceRoot":"","sources":["../../../src/serialization/GeometrySamples.ts"],"names":[],"mappings":"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"}
|