@itwin/core-geometry 4.0.0-dev.23 → 4.0.0-dev.28
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 +7 -2
- package/lib/cjs/Geometry.d.ts +23 -0
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +25 -1
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js +4 -5
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js +7 -10
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js +2 -2
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +4 -4
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +2 -2
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +1 -1
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js +1 -2
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +1 -2
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +1 -2
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.d.ts +195 -8
- package/lib/cjs/geometry3d/BarycentricTriangle.d.ts.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js +459 -11
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js +2 -2
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +2 -2
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.d.ts +22 -7
- package/lib/cjs/geometry3d/IndexedXYCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js +41 -5
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +58 -4
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +102 -4
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts +10 -0
- package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js +14 -0
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js +4 -6
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts +0 -6
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js +0 -6
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +6 -8
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.d.ts +14 -1
- package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js +33 -1
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +120 -10
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +413 -13
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +1 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js +1 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.d.ts +264 -0
- package/lib/cjs/polyface/FacetLocationDetail.d.ts.map +1 -0
- package/lib/cjs/polyface/FacetLocationDetail.js +376 -0
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -0
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +2 -5
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +5 -2
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +20 -14
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +21 -17
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +6 -7
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +22 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +52 -2
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +4 -4
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +1 -2
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/solid/Sphere.d.ts +5 -5
- package/lib/cjs/solid/Sphere.js +5 -5
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.js +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/topology/Triangulation.js +1 -1
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/esm/Geometry.d.ts +23 -0
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +24 -0
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js +4 -5
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js +7 -10
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js +2 -2
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +4 -4
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +2 -2
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.js +1 -1
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.js +1 -2
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +1 -2
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +1 -2
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.d.ts +195 -8
- package/lib/esm/geometry3d/BarycentricTriangle.d.ts.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js +459 -12
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js +2 -2
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +2 -2
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.d.ts +22 -7
- package/lib/esm/geometry3d/IndexedXYCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js +41 -5
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +58 -4
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +103 -5
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts +10 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js +14 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js +4 -6
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts +0 -6
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js +0 -6
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +6 -8
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.d.ts +14 -1
- package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js +33 -1
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +120 -10
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +412 -13
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +1 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/polyface/AuxData.js +1 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.d.ts +264 -0
- package/lib/esm/polyface/FacetLocationDetail.d.ts.map +1 -0
- package/lib/esm/polyface/FacetLocationDetail.js +369 -0
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -0
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +2 -5
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js +5 -2
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +20 -14
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +21 -17
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +6 -7
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +22 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +52 -2
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +4 -4
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +1 -2
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/solid/Sphere.d.ts +5 -5
- package/lib/esm/solid/Sphere.js +5 -5
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.js +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/topology/Triangulation.js +1 -1
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/package.json +4 -4
|
@@ -46,7 +46,6 @@ class Point3dArrayCarrier extends IndexedXYZCollection_1.IndexedReadWriteXYZColl
|
|
|
46
46
|
* * This returns the xyz value but NOT reference to the point in the "carried" array.
|
|
47
47
|
* @param index index of point within the array
|
|
48
48
|
* @param result caller-allocated destination
|
|
49
|
-
* @returns undefined if the index is out of bounds
|
|
50
49
|
*/
|
|
51
50
|
getPoint3dAtUncheckedPointIndex(index, result) {
|
|
52
51
|
const source = this.data[index];
|
|
@@ -211,11 +210,8 @@ class Point3dArrayCarrier extends IndexedXYZCollection_1.IndexedReadWriteXYZColl
|
|
|
211
210
|
}
|
|
212
211
|
/**
|
|
213
212
|
* Return distance squared between indicated points.
|
|
214
|
-
* * Concrete classes may be able to implement this without creating a temporary.
|
|
215
213
|
* @param index0 first point index
|
|
216
214
|
* @param index1 second point index
|
|
217
|
-
* @param defaultDistanceSquared distance squared to return if either point index is invalid.
|
|
218
|
-
*
|
|
219
215
|
*/
|
|
220
216
|
distanceSquaredIndexIndex(index0, index1) {
|
|
221
217
|
const n = this.data.length;
|
|
@@ -226,10 +222,8 @@ class Point3dArrayCarrier extends IndexedXYZCollection_1.IndexedReadWriteXYZColl
|
|
|
226
222
|
}
|
|
227
223
|
/**
|
|
228
224
|
* Return distance between indicated points.
|
|
229
|
-
* * Concrete classes may be able to implement this without creating a temporary.
|
|
230
225
|
* @param index0 first point index
|
|
231
226
|
* @param index1 second point index
|
|
232
|
-
* @param defaultDistanceSquared distance squared to return if either point index is invalid.
|
|
233
227
|
*/
|
|
234
228
|
distanceIndexIndex(index0, index1) {
|
|
235
229
|
const n = this.data.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Point3dArrayCarrier.js","sourceRoot":"","sources":["../../../src/geometry3d/Point3dArrayCarrier.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/** @packageDocumentation\n * @module ArraysAndInterfaces\n */\n\nimport { IndexedReadWriteXYZCollection } from \"./IndexedXYZCollection\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\nimport { XYAndZ } from \"./XYZProps\";\n\n/**\n * Helper object to access members of a Point3d[] in geometric calculations.\n * * The collection holds only a reference to the actual array.\n * * The actual array may be replaced by the user as needed.\n * * When replaced, there is no cached data to be updated.\n * @public\n */\nexport class Point3dArrayCarrier extends IndexedReadWriteXYZCollection {\n /** reference to array being queried. */\n public data: Point3d[];\n /** CAPTURE caller supplied array ... */\n public constructor(data: Point3d[]) {\n super();\n this.data = data;\n }\n /** test if `index` is a valid index into the array. */\n public isValidIndex(index: number): boolean {\n return index >= 0 && index < this.data.length;\n }\n /**\n * Access by index, returning strongly typed Point3d\n * * This returns the xyz value but NOT reference to the point in the \"carried\" array.\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public getPoint3dAtCheckedPointIndex(index: number, result?: Point3d): Point3d | undefined {\n if (this.isValidIndex(index)) {\n const source = this.data[index];\n return Point3d.create(source.x, source.y, source.z, result);\n }\n return undefined;\n }\n /**\n * Access by index, returning strongly typed Point3d\n * * This returns the xyz value but NOT reference to the point in the \"carried\" array.\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public getPoint3dAtUncheckedPointIndex(index: number, result?: Point3d): Point3d {\n const source = this.data[index];\n return Point3d.create(source.x, source.y, source.z, result);\n }\n /**\n * Access by index, returning strongly typed Vector3d\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public getVector3dAtCheckedVectorIndex(index: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(index)) {\n const source = this.data[index];\n return Vector3d.create(source.x, source.y, source.z, result);\n }\n return undefined;\n }\n /**\n * access x of indexed point\n * * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results\n * */\n public getXAtUncheckedPointIndex(pointIndex: number): number {\n return this.data[pointIndex].x;\n }\n /**\n * access y of indexed point\n * * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results\n * */\n public getYAtUncheckedPointIndex(pointIndex: number): number {\n return this.data[pointIndex].y;\n }\n /**\n * access z of indexed point\n * * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results\n * */\n public getZAtUncheckedPointIndex(pointIndex: number): number {\n return this.data[pointIndex].z;\n }\n /**\n * Return a vector from the point at indexA to the point at indexB\n * @param indexA index of point within the array\n * @param indexB index of point within the array\n * @param result caller-allocated vector.\n * @returns undefined if either index is out of bounds\n */\n public vectorIndexIndex(indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(indexA) && this.isValidIndex(indexB))\n return Vector3d.createStartEnd(this.data[indexA], this.data[indexB], result);\n return undefined;\n }\n /**\n * Return a vector from given origin to point at indexB\n * @param origin origin for vector\n * @param indexB index of point within the array\n * @param result caller-allocated vector.\n * @returns undefined if index is out of bounds\n */\n public vectorXYAndZIndex(origin: XYAndZ, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(indexB))\n return Vector3d.createStartEnd(origin, this.data[indexB], result);\n return undefined;\n }\n /**\n * Return the cross product of vectors from origin to points at indexA and indexB\n * @param origin origin for vector\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns undefined if either index is out of bounds\n */\n public crossProductXYAndZIndexIndex(origin: XYAndZ, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(indexA) && this.isValidIndex(indexB))\n return Vector3d.createCrossProductToPoints(origin, this.data[indexA], this.data[indexB], result);\n return undefined;\n }\n /**\n * Return the cross product of vectors from point at originIndex to points at indexA and indexB\n * @param originIndex index of origin\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns return true if indexA, indexB both valid\n */\n public crossProductIndexIndexIndex(originIndex: number, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(originIndex) && this.isValidIndex(indexA) && this.isValidIndex(indexB))\n return Vector3d.createCrossProductToPoints(this.data[originIndex], this.data[indexA], this.data[indexB], result);\n return undefined;\n }\n /**\n * Compute the cross product of vectors from point at originIndex to points at indexA and indexB, and accumulate it to the result.\n * @param origin index of origin\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns return true if indexA, indexB both valid\n */\n public accumulateCrossProductIndexIndexIndex(originIndex: number, indexA: number, indexB: number, result: Vector3d): void {\n const data = this.data;\n if (this.isValidIndex(originIndex) && this.isValidIndex(indexA) && this.isValidIndex(indexB))\n result.addCrossProductToTargetsInPlace(\n data[originIndex].x, data[originIndex].y, data[originIndex].z,\n data[indexA].x, data[indexA].y, data[indexA].z,\n data[indexB].x, data[indexB].y, data[indexB].z\n );\n }\n /**\n * Accumulate scale times the x,y,z values at index to the sum.\n * No action if index is out of bounds.\n */\n public accumulateScaledXYZ(index: number, scale: number, sum: Point3d): void {\n if (this.isValidIndex(index)) {\n const point = this.data[index];\n sum.x += scale * point.x;\n sum.y += scale * point.y;\n sum.z += scale * point.z;\n }\n }\n /**\n * read-only property for number of XYZ in the collection.\n */\n public get length(): number {\n return this.data.length;\n }\n /** push a (clone of) point onto the collection\n * * point itself is not pushed -- xyz data is extracted into the native form of the collection.\n */\n public push(data: Point3d): void {\n this.data.push(data.clone());\n }\n /**\n * push a new point (given by coordinates) onto the collection\n * @param x x coordinate\n * @param y y coordinate\n * @param z z coordinate\n */\n public pushXYZ(x?: number, y?: number, z?: number): void {\n this.data.push(\n Point3d.create(x === undefined ? 0.0 : x, y === undefined ? 0.0 : y, z === undefined ? 0.0 : z)\n );\n }\n /** extract (copy) the final point */\n public back(result?: Point3d): Point3d | undefined {\n if (this.data.length > 0) {\n return this.data[this.data.length - 1].clone(result);\n }\n return undefined;\n }\n /** extract (copy) the first point */\n public front(result?: Point3d): Point3d | undefined {\n if (this.data.length > 0) {\n return this.data[0].clone(result);\n }\n return undefined;\n }\n /** remove the final point. */\n public pop(): void {\n if (this.data.length > 0)\n this.data.pop();\n }\n /** remove all points. */\n public clear(): void {\n this.data.length = 0;\n }\n /** Reverse the points in place */\n public reverseInPlace(): void {\n this.data.reverse();\n }\n /**\n * Return distance squared between indicated points.\n * * Concrete classes may be able to implement this without creating a temporary.\n * @param index0 first point index\n * @param index1 second point index\n * @param defaultDistanceSquared distance squared to return if either point index is invalid.\n *\n */\n public distanceSquaredIndexIndex(index0: number, index1: number): number | undefined {\n const n = this.data.length;\n if (index0 >= 0 && index0 < n && index1 >= 0 && index1 < n) {\n return this.data[index0].distanceSquared(this.data[index1]);\n }\n return undefined;\n }\n /**\n * Return distance between indicated points.\n * * Concrete classes may be able to implement this without creating a temporary.\n * @param index0 first point index\n * @param index1 second point index\n * @param defaultDistanceSquared distance squared to return if either point index is invalid.\n */\n public distanceIndexIndex(index0: number, index1: number): number | undefined {\n const n = this.data.length;\n if (index0 >= 0 && index0 < n && index1 >= 0 && index1 < n) {\n return this.data[index0].distance(this.data[index1]);\n }\n return undefined;\n }\n /** Adjust index into range by modulo with the length. */\n public override cyclicIndex(i: number): number {\n return (i % this.data.length);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Point3dArrayCarrier.js","sourceRoot":"","sources":["../../../src/geometry3d/Point3dArrayCarrier.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/** @packageDocumentation\n * @module ArraysAndInterfaces\n */\n\nimport { IndexedReadWriteXYZCollection } from \"./IndexedXYZCollection\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\nimport { XYAndZ } from \"./XYZProps\";\n\n/**\n * Helper object to access members of a Point3d[] in geometric calculations.\n * * The collection holds only a reference to the actual array.\n * * The actual array may be replaced by the user as needed.\n * * When replaced, there is no cached data to be updated.\n * @public\n */\nexport class Point3dArrayCarrier extends IndexedReadWriteXYZCollection {\n /** reference to array being queried. */\n public data: Point3d[];\n /** CAPTURE caller supplied array ... */\n public constructor(data: Point3d[]) {\n super();\n this.data = data;\n }\n /** test if `index` is a valid index into the array. */\n public isValidIndex(index: number): boolean {\n return index >= 0 && index < this.data.length;\n }\n /**\n * Access by index, returning strongly typed Point3d\n * * This returns the xyz value but NOT reference to the point in the \"carried\" array.\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public getPoint3dAtCheckedPointIndex(index: number, result?: Point3d): Point3d | undefined {\n if (this.isValidIndex(index)) {\n const source = this.data[index];\n return Point3d.create(source.x, source.y, source.z, result);\n }\n return undefined;\n }\n /**\n * Access by index, returning strongly typed Point3d\n * * This returns the xyz value but NOT reference to the point in the \"carried\" array.\n * @param index index of point within the array\n * @param result caller-allocated destination\n */\n public getPoint3dAtUncheckedPointIndex(index: number, result?: Point3d): Point3d {\n const source = this.data[index];\n return Point3d.create(source.x, source.y, source.z, result);\n }\n /**\n * Access by index, returning strongly typed Vector3d\n * @param index index of point within the array\n * @param result caller-allocated destination\n * @returns undefined if the index is out of bounds\n */\n public getVector3dAtCheckedVectorIndex(index: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(index)) {\n const source = this.data[index];\n return Vector3d.create(source.x, source.y, source.z, result);\n }\n return undefined;\n }\n /**\n * access x of indexed point\n * * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results\n * */\n public getXAtUncheckedPointIndex(pointIndex: number): number {\n return this.data[pointIndex].x;\n }\n /**\n * access y of indexed point\n * * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results\n * */\n public getYAtUncheckedPointIndex(pointIndex: number): number {\n return this.data[pointIndex].y;\n }\n /**\n * access z of indexed point\n * * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results\n * */\n public getZAtUncheckedPointIndex(pointIndex: number): number {\n return this.data[pointIndex].z;\n }\n /**\n * Return a vector from the point at indexA to the point at indexB\n * @param indexA index of point within the array\n * @param indexB index of point within the array\n * @param result caller-allocated vector.\n * @returns undefined if either index is out of bounds\n */\n public vectorIndexIndex(indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(indexA) && this.isValidIndex(indexB))\n return Vector3d.createStartEnd(this.data[indexA], this.data[indexB], result);\n return undefined;\n }\n /**\n * Return a vector from given origin to point at indexB\n * @param origin origin for vector\n * @param indexB index of point within the array\n * @param result caller-allocated vector.\n * @returns undefined if index is out of bounds\n */\n public vectorXYAndZIndex(origin: XYAndZ, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(indexB))\n return Vector3d.createStartEnd(origin, this.data[indexB], result);\n return undefined;\n }\n /**\n * Return the cross product of vectors from origin to points at indexA and indexB\n * @param origin origin for vector\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns undefined if either index is out of bounds\n */\n public crossProductXYAndZIndexIndex(origin: XYAndZ, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(indexA) && this.isValidIndex(indexB))\n return Vector3d.createCrossProductToPoints(origin, this.data[indexA], this.data[indexB], result);\n return undefined;\n }\n /**\n * Return the cross product of vectors from point at originIndex to points at indexA and indexB\n * @param originIndex index of origin\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns return true if indexA, indexB both valid\n */\n public crossProductIndexIndexIndex(originIndex: number, indexA: number, indexB: number, result?: Vector3d): Vector3d | undefined {\n if (this.isValidIndex(originIndex) && this.isValidIndex(indexA) && this.isValidIndex(indexB))\n return Vector3d.createCrossProductToPoints(this.data[originIndex], this.data[indexA], this.data[indexB], result);\n return undefined;\n }\n /**\n * Compute the cross product of vectors from point at originIndex to points at indexA and indexB, and accumulate it to the result.\n * @param origin index of origin\n * @param indexA index of first target within the array\n * @param indexB index of second target within the array\n * @param result caller-allocated vector.\n * @returns return true if indexA, indexB both valid\n */\n public accumulateCrossProductIndexIndexIndex(originIndex: number, indexA: number, indexB: number, result: Vector3d): void {\n const data = this.data;\n if (this.isValidIndex(originIndex) && this.isValidIndex(indexA) && this.isValidIndex(indexB))\n result.addCrossProductToTargetsInPlace(\n data[originIndex].x, data[originIndex].y, data[originIndex].z,\n data[indexA].x, data[indexA].y, data[indexA].z,\n data[indexB].x, data[indexB].y, data[indexB].z\n );\n }\n /**\n * Accumulate scale times the x,y,z values at index to the sum.\n * No action if index is out of bounds.\n */\n public accumulateScaledXYZ(index: number, scale: number, sum: Point3d): void {\n if (this.isValidIndex(index)) {\n const point = this.data[index];\n sum.x += scale * point.x;\n sum.y += scale * point.y;\n sum.z += scale * point.z;\n }\n }\n /**\n * read-only property for number of XYZ in the collection.\n */\n public get length(): number {\n return this.data.length;\n }\n /** push a (clone of) point onto the collection\n * * point itself is not pushed -- xyz data is extracted into the native form of the collection.\n */\n public push(data: Point3d): void {\n this.data.push(data.clone());\n }\n /**\n * push a new point (given by coordinates) onto the collection\n * @param x x coordinate\n * @param y y coordinate\n * @param z z coordinate\n */\n public pushXYZ(x?: number, y?: number, z?: number): void {\n this.data.push(\n Point3d.create(x === undefined ? 0.0 : x, y === undefined ? 0.0 : y, z === undefined ? 0.0 : z)\n );\n }\n /** extract (copy) the final point */\n public back(result?: Point3d): Point3d | undefined {\n if (this.data.length > 0) {\n return this.data[this.data.length - 1].clone(result);\n }\n return undefined;\n }\n /** extract (copy) the first point */\n public front(result?: Point3d): Point3d | undefined {\n if (this.data.length > 0) {\n return this.data[0].clone(result);\n }\n return undefined;\n }\n /** remove the final point. */\n public pop(): void {\n if (this.data.length > 0)\n this.data.pop();\n }\n /** remove all points. */\n public clear(): void {\n this.data.length = 0;\n }\n /** Reverse the points in place */\n public reverseInPlace(): void {\n this.data.reverse();\n }\n /**\n * Return distance squared between indicated points.\n * @param index0 first point index\n * @param index1 second point index\n */\n public distanceSquaredIndexIndex(index0: number, index1: number): number | undefined {\n const n = this.data.length;\n if (index0 >= 0 && index0 < n && index1 >= 0 && index1 < n) {\n return this.data[index0].distanceSquared(this.data[index1]);\n }\n return undefined;\n }\n /**\n * Return distance between indicated points.\n * @param index0 first point index\n * @param index1 second point index\n */\n public distanceIndexIndex(index0: number, index1: number): number | undefined {\n const n = this.data.length;\n if (index0 >= 0 && index0 < n && index1 >= 0 && index1 < n) {\n return this.data[index0].distance(this.data[index1]);\n }\n return undefined;\n }\n /** Adjust index into range by modulo with the length. */\n public override cyclicIndex(i: number): number {\n return (i % this.data.length);\n }\n}\n"]}
|
|
@@ -460,7 +460,7 @@ export declare class Vector3d extends XYZ {
|
|
|
460
460
|
/** Return a vector same length as this but rotated 90 degrees clockwise */
|
|
461
461
|
rotate90CWXY(result?: Vector3d): Vector3d;
|
|
462
462
|
/**
|
|
463
|
-
* Return a vector which is in the xy plane, perpendicular
|
|
463
|
+
* Return a vector which is in the xy plane, perpendicular to the xy part of this vector, and of unit length.
|
|
464
464
|
* * If the xy part is 00, the return is the rotated (but not normalized) xy parts of this vector.
|
|
465
465
|
* @param result optional preallocated result.
|
|
466
466
|
*/
|
|
@@ -251,7 +251,7 @@ class XYZ {
|
|
|
251
251
|
setAt(index, value) {
|
|
252
252
|
if (index < 0.5)
|
|
253
253
|
this.x = value;
|
|
254
|
-
if (index > 1.5)
|
|
254
|
+
else if (index > 1.5)
|
|
255
255
|
this.z = value;
|
|
256
256
|
else
|
|
257
257
|
this.y = value;
|
|
@@ -939,7 +939,7 @@ class Vector3d extends XYZ {
|
|
|
939
939
|
return result;
|
|
940
940
|
}
|
|
941
941
|
/**
|
|
942
|
-
* Return a vector which is in the xy plane, perpendicular
|
|
942
|
+
* Return a vector which is in the xy plane, perpendicular to the xy part of this vector, and of unit length.
|
|
943
943
|
* * If the xy part is 00, the return is the rotated (but not normalized) xy parts of this vector.
|
|
944
944
|
* @param result optional preallocated result.
|
|
945
945
|
*/
|
|
@@ -1428,9 +1428,8 @@ class Vector3d extends XYZ {
|
|
|
1428
1428
|
* @param options optional radian and distance tolerances.
|
|
1429
1429
|
*/
|
|
1430
1430
|
isParallelTo(other, oppositeIsParallel = false, returnValueIfAnInputIsZeroLength = false, options) {
|
|
1431
|
-
|
|
1432
|
-
const
|
|
1433
|
-
const distanceSquaredTol = (_b = options === null || options === void 0 ? void 0 : options.distanceSquaredTol) !== null && _b !== void 0 ? _b : Geometry_1.Geometry.smallMetricDistanceSquared;
|
|
1431
|
+
const radianSquaredTol = options?.radianSquaredTol ?? Geometry_1.Geometry.smallAngleRadiansSquared;
|
|
1432
|
+
const distanceSquaredTol = options?.distanceSquaredTol ?? Geometry_1.Geometry.smallMetricDistanceSquared;
|
|
1434
1433
|
const a2 = this.magnitudeSquared();
|
|
1435
1434
|
const b2 = other.magnitudeSquared();
|
|
1436
1435
|
if (a2 < distanceSquaredTol || b2 < distanceSquaredTol)
|
|
@@ -1453,9 +1452,8 @@ class Vector3d extends XYZ {
|
|
|
1453
1452
|
* @param options optional radian and distance tolerances.
|
|
1454
1453
|
*/
|
|
1455
1454
|
isPerpendicularTo(other, returnValueIfAnInputIsZeroLength = false, options) {
|
|
1456
|
-
|
|
1457
|
-
const
|
|
1458
|
-
const distanceSquaredTol = (_b = options === null || options === void 0 ? void 0 : options.distanceSquaredTol) !== null && _b !== void 0 ? _b : Geometry_1.Geometry.smallMetricDistanceSquared;
|
|
1455
|
+
const radianSquaredTol = options?.radianSquaredTol ?? Geometry_1.Geometry.smallAngleRadiansSquared;
|
|
1456
|
+
const distanceSquaredTol = options?.distanceSquaredTol ?? Geometry_1.Geometry.smallMetricDistanceSquared;
|
|
1459
1457
|
const aa = this.magnitudeSquared();
|
|
1460
1458
|
const bb = other.magnitudeSquared();
|
|
1461
1459
|
if (aa < distanceSquaredTol || bb < distanceSquaredTol)
|