@itwin/core-geometry 4.0.0-dev.6 → 4.0.0-dev.8

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.
Files changed (119) hide show
  1. package/lib/cjs/Geometry.d.ts +3 -3
  2. package/lib/cjs/Geometry.d.ts.map +1 -1
  3. package/lib/cjs/Geometry.js +27 -11
  4. package/lib/cjs/Geometry.js.map +1 -1
  5. package/lib/cjs/curve/CurveCurve.d.ts +11 -8
  6. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
  7. package/lib/cjs/curve/CurveCurve.js +16 -12
  8. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  9. package/lib/cjs/curve/CurveCurveIntersectXY.d.ts +5 -1
  10. package/lib/cjs/curve/CurveCurveIntersectXY.d.ts.map +1 -1
  11. package/lib/cjs/curve/CurveCurveIntersectXY.js +11 -10
  12. package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -1
  13. package/lib/cjs/geometry3d/Angle.d.ts +18 -0
  14. package/lib/cjs/geometry3d/Angle.d.ts.map +1 -1
  15. package/lib/cjs/geometry3d/Angle.js +38 -0
  16. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  17. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +1 -0
  18. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  19. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +3 -0
  20. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  21. package/lib/cjs/geometry3d/Matrix3d.d.ts +171 -118
  22. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  23. package/lib/cjs/geometry3d/Matrix3d.js +448 -417
  24. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  25. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +12 -13
  26. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  27. package/lib/cjs/geometry3d/Point3dVector3d.js +15 -13
  28. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  29. package/lib/cjs/geometry3d/Segment1d.d.ts +1 -1
  30. package/lib/cjs/geometry3d/Segment1d.js +1 -1
  31. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  32. package/lib/cjs/numerics/Polynomials.d.ts +12 -0
  33. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  34. package/lib/cjs/numerics/Polynomials.js +14 -0
  35. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  36. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +1 -0
  37. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  38. package/lib/cjs/polyface/PolyfaceBuilder.js +46 -6
  39. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  40. package/lib/cjs/polyface/PolyfaceQuery.d.ts +54 -0
  41. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  42. package/lib/cjs/polyface/PolyfaceQuery.js +71 -1
  43. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  44. package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts +202 -0
  45. package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -0
  46. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +1038 -0
  47. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -0
  48. package/lib/cjs/serialization/GeometrySamples.d.ts +4 -1
  49. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  50. package/lib/cjs/serialization/GeometrySamples.js +14 -6
  51. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  52. package/lib/cjs/topology/Graph.d.ts +113 -7
  53. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  54. package/lib/cjs/topology/Graph.js +185 -7
  55. package/lib/cjs/topology/Graph.js.map +1 -1
  56. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +38 -0
  57. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -0
  58. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +82 -0
  59. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -0
  60. package/lib/esm/Geometry.d.ts +3 -3
  61. package/lib/esm/Geometry.d.ts.map +1 -1
  62. package/lib/esm/Geometry.js +27 -11
  63. package/lib/esm/Geometry.js.map +1 -1
  64. package/lib/esm/curve/CurveCurve.d.ts +11 -8
  65. package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
  66. package/lib/esm/curve/CurveCurve.js +16 -12
  67. package/lib/esm/curve/CurveCurve.js.map +1 -1
  68. package/lib/esm/curve/CurveCurveIntersectXY.d.ts +5 -1
  69. package/lib/esm/curve/CurveCurveIntersectXY.d.ts.map +1 -1
  70. package/lib/esm/curve/CurveCurveIntersectXY.js +11 -10
  71. package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -1
  72. package/lib/esm/geometry3d/Angle.d.ts +18 -0
  73. package/lib/esm/geometry3d/Angle.d.ts.map +1 -1
  74. package/lib/esm/geometry3d/Angle.js +38 -0
  75. package/lib/esm/geometry3d/Angle.js.map +1 -1
  76. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +1 -0
  77. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  78. package/lib/esm/geometry3d/CoincidentGeometryOps.js +3 -0
  79. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  80. package/lib/esm/geometry3d/Matrix3d.d.ts +171 -118
  81. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  82. package/lib/esm/geometry3d/Matrix3d.js +448 -417
  83. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  84. package/lib/esm/geometry3d/Point3dVector3d.d.ts +12 -13
  85. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  86. package/lib/esm/geometry3d/Point3dVector3d.js +15 -13
  87. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  88. package/lib/esm/geometry3d/Segment1d.d.ts +1 -1
  89. package/lib/esm/geometry3d/Segment1d.js +1 -1
  90. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  91. package/lib/esm/numerics/Polynomials.d.ts +12 -0
  92. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  93. package/lib/esm/numerics/Polynomials.js +14 -0
  94. package/lib/esm/numerics/Polynomials.js.map +1 -1
  95. package/lib/esm/polyface/PolyfaceBuilder.d.ts +1 -0
  96. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  97. package/lib/esm/polyface/PolyfaceBuilder.js +46 -6
  98. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  99. package/lib/esm/polyface/PolyfaceQuery.d.ts +54 -0
  100. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  101. package/lib/esm/polyface/PolyfaceQuery.js +69 -0
  102. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  103. package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts +202 -0
  104. package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -0
  105. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +1032 -0
  106. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -0
  107. package/lib/esm/serialization/GeometrySamples.d.ts +4 -1
  108. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  109. package/lib/esm/serialization/GeometrySamples.js +14 -6
  110. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  111. package/lib/esm/topology/Graph.d.ts +113 -7
  112. package/lib/esm/topology/Graph.d.ts.map +1 -1
  113. package/lib/esm/topology/Graph.js +185 -7
  114. package/lib/esm/topology/Graph.js.map +1 -1
  115. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +38 -0
  116. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -0
  117. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +78 -0
  118. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -0
  119. package/package.json +4 -4
@@ -8,6 +8,7 @@ import { Plane3dByOriginAndUnitNormal } from "../geometry3d/Plane3dByOriginAndUn
8
8
  import { Point3d, Vector3d } from "../geometry3d/Point3dVector3d";
9
9
  import { Matrix4d } from "../geometry4d/Matrix4d";
10
10
  import { MomentData } from "../geometry4d/MomentData";
11
+ import { HalfEdgeGraph } from "../topology/Graph";
11
12
  import { IndexedEdgeMatcher, SortableEdgeCluster } from "./IndexedEdgeMatcher";
12
13
  import { IndexedPolyface, Polyface, PolyfaceVisitor } from "./Polyface";
13
14
  import { RangeLengthData } from "./RangeLengthData";
@@ -27,6 +28,45 @@ export interface HoleFillOptions {
27
28
  /** requests that all content from the original mesh be copied to the mesh with filled holes. */
28
29
  includeOriginalMesh?: boolean;
29
30
  }
31
+ /** Selective output options for PolyfaceQuery.cloneOffset:
32
+ * * undefined means the usual facets in the expected offset mesh.
33
+ * * if present as a json object, the various booleans select respective outputs.
34
+ * * @public
35
+ */
36
+ export interface OffsetMeshSelectiveOutputOptions {
37
+ outputOffsetsFromFacesBeforeChamfers?: boolean;
38
+ outputOffsetsFromFaces?: boolean;
39
+ outputOffsetsFromEdges?: boolean;
40
+ outputOffsetsFromVertices?: boolean;
41
+ }
42
+ /**
43
+ * Options carrier for [[PolyfaceQuery.cloneOffset]].
44
+ * * Default options are strongly recommended.
45
+ * * The option most likely to be changed is chamferTurnAngle
46
+ * @public
47
+ */
48
+ export declare class OffsetMeshOptions {
49
+ /** max angle between normals to be considered smooth */
50
+ smoothSingleAngleBetweenNormals: Angle;
51
+ /** max accumulation of angle between normals to be considered smooth */
52
+ smoothAccumulatedAngleBetweenNormals: Angle;
53
+ /** When crossing an edge, this turn angle (typically 120 degrees) triggers a chamfer */
54
+ chamferAngleBetweenNormals: Angle;
55
+ /** optional control structure for selective output.
56
+ * * If undefined, output all expected offset facets.
57
+ */
58
+ outputSelector?: OffsetMeshSelectiveOutputOptions;
59
+ /** Constructor -- CAPTURE parameters ... */
60
+ private constructor();
61
+ /** construct and return an OffsetMeshOptions with given parameters.
62
+ * * Angles are forced to minimum values.
63
+ * * Clones of the angles are given to the constructor.
64
+ * @param smoothSingleRadiansBetweenNormals an angle larger than this (between facets) is considered a sharp edge
65
+ * @param smoothAccumulatedAngleBetweenNormals angles that sum to this much may be consolidated for average normal
66
+ * @param chamferTurnAngleBetweenNormals when facets meet with larger angle, a chamfer edge may be added if the angle between facet normals is larger than this.
67
+ */
68
+ static create(smoothSingleAngleBetweenNormals?: Angle, smoothAccumulatedAngleBetweenNormals?: Angle, chamferTurnAngleBetweenNormals?: Angle): OffsetMeshOptions;
69
+ }
30
70
  /**
31
71
  * Structure to return multiple results from volume between facets and plane
32
72
  * @public
@@ -383,6 +423,12 @@ export declare class PolyfaceQuery {
383
423
  * @param value true for visible, false for hidden
384
424
  */
385
425
  static markAllEdgeVisibility(mesh: IndexedPolyface, value: boolean): void;
426
+ /**
427
+ * Create a HalfEdgeGraph with a face for each facet of the IndexedPolyface
428
+ * @param mesh mesh to convert
429
+ * @internal
430
+ */
431
+ static convertToHalfEdgeGraph(mesh: IndexedPolyface): HalfEdgeGraph;
386
432
  /**
387
433
  * * Examine adjacent facet orientations throughout the mesh
388
434
  * * If possible, reverse a subset to achieve proper pairing.
@@ -405,6 +451,14 @@ export declare class PolyfaceQuery {
405
451
  * @param toleranceAngle averaging is done between normals up to this angle.
406
452
  */
407
453
  static buildAverageNormals(polyface: IndexedPolyface, toleranceAngle?: Angle): void;
454
+ /**
455
+ * Offset the faces of the mesh.
456
+ * @param source original mesh
457
+ * @param signedOffsetDistance distance to offset
458
+ * @param offsetOptions angle options. The default options are recommended.
459
+ * @returns shifted mesh.
460
+ */
461
+ static cloneOffset(source: IndexedPolyface, signedOffsetDistance: number, offsetOptions?: OffsetMeshOptions): IndexedPolyface;
408
462
  }
409
463
  /** Announce the points on a drape panel.
410
464
  * * The first two points in the array are always along the draped line segment.
@@ -1 +1 @@
1
- {"version":3,"file":"PolyfaceQuery.d.ts","sourceRoot":"","sources":["../../../src/polyface/PolyfaceQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PolyfaceQuery.d.ts","sourceRoot":"","sources":["../../../src/polyface/PolyfaceQuery.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.PolyfaceQuery = exports.DuplicateFacetClusterSelector = void 0;
7
+ exports.PolyfaceQuery = exports.DuplicateFacetClusterSelector = exports.OffsetMeshOptions = void 0;
8
8
  /** @packageDocumentation
9
9
  * @module Polyface
10
10
  */
@@ -40,6 +40,42 @@ const Polyface_1 = require("./Polyface");
40
40
  const PolyfaceBuilder_1 = require("./PolyfaceBuilder");
41
41
  const RangeLengthData_1 = require("./RangeLengthData");
42
42
  const SpaceTriangulation_1 = require("../topology/SpaceTriangulation");
43
+ const HalfEdgeGraphFromIndexedLoopsContext_1 = require("../topology/HalfEdgeGraphFromIndexedLoopsContext");
44
+ const OffsetMeshContext_1 = require("./multiclip/OffsetMeshContext");
45
+ /**
46
+ * Options carrier for [[PolyfaceQuery.cloneOffset]].
47
+ * * Default options are strongly recommended.
48
+ * * The option most likely to be changed is chamferTurnAngle
49
+ * @public
50
+ */
51
+ class OffsetMeshOptions {
52
+ /** Constructor -- CAPTURE parameters ... */
53
+ constructor(smoothSingleAngleBetweenNormals = Angle_1.Angle.createDegrees(25), smoothAccumulatedAngleBetweenNormals = Angle_1.Angle.createDegrees(60), chamferTurnAngle = Angle_1.Angle.createDegrees(90)) {
54
+ this.smoothSingleAngleBetweenNormals = smoothSingleAngleBetweenNormals.clone();
55
+ this.smoothAccumulatedAngleBetweenNormals = smoothAccumulatedAngleBetweenNormals.clone();
56
+ this.chamferAngleBetweenNormals = chamferTurnAngle.clone();
57
+ }
58
+ /** construct and return an OffsetMeshOptions with given parameters.
59
+ * * Angles are forced to minimum values.
60
+ * * Clones of the angles are given to the constructor.
61
+ * @param smoothSingleRadiansBetweenNormals an angle larger than this (between facets) is considered a sharp edge
62
+ * @param smoothAccumulatedAngleBetweenNormals angles that sum to this much may be consolidated for average normal
63
+ * @param chamferTurnAngleBetweenNormals when facets meet with larger angle, a chamfer edge may be added if the angle between facet normals is larger than this.
64
+ */
65
+ static create(smoothSingleAngleBetweenNormals = Angle_1.Angle.createDegrees(25), smoothAccumulatedAngleBetweenNormals = Angle_1.Angle.createDegrees(60), chamferTurnAngleBetweenNormals = Angle_1.Angle.createDegrees(120)) {
66
+ const mySmoothSingleRadiansBetweenNormals = smoothSingleAngleBetweenNormals.clone();
67
+ const mySmoothAccumulatedRadiansBetweenNormals = smoothAccumulatedAngleBetweenNormals.clone();
68
+ const myChamferTurnAngleBetweenNormals = chamferTurnAngleBetweenNormals.clone();
69
+ if (mySmoothSingleRadiansBetweenNormals.degrees < 1)
70
+ mySmoothAccumulatedRadiansBetweenNormals.setDegrees(1.0);
71
+ if (mySmoothAccumulatedRadiansBetweenNormals.degrees < 1.0)
72
+ mySmoothAccumulatedRadiansBetweenNormals.setDegrees(1.0);
73
+ if (mySmoothAccumulatedRadiansBetweenNormals.degrees < 15.0)
74
+ mySmoothAccumulatedRadiansBetweenNormals.setDegrees(15.0);
75
+ return new OffsetMeshOptions(mySmoothSingleRadiansBetweenNormals, mySmoothAccumulatedRadiansBetweenNormals, myChamferTurnAngleBetweenNormals);
76
+ }
77
+ }
78
+ exports.OffsetMeshOptions = OffsetMeshOptions;
43
79
  /**
44
80
  * Enumeration of cases for retaining facets among duplicates
45
81
  * @public
@@ -1237,6 +1273,27 @@ class PolyfaceQuery {
1237
1273
  for (let i = 0; i < data.edgeVisible.length; i++)
1238
1274
  data.edgeVisible[i] = value;
1239
1275
  }
1276
+ /**
1277
+ * Create a HalfEdgeGraph with a face for each facet of the IndexedPolyface
1278
+ * @param mesh mesh to convert
1279
+ * @internal
1280
+ */
1281
+ static convertToHalfEdgeGraph(mesh) {
1282
+ const builder = new HalfEdgeGraphFromIndexedLoopsContext_1.HalfEdgeGraphFromIndexedLoopsContext();
1283
+ const visitor = mesh.createVisitor(0);
1284
+ for (visitor.reset(); visitor.moveToNextFacet();) {
1285
+ builder.insertLoop(visitor.pointIndex);
1286
+ }
1287
+ const graph = builder.graph;
1288
+ const xyz = Point3dVector3d_1.Point3d.create();
1289
+ graph.announceNodes((_graph, halfEdge) => {
1290
+ const vertexIndex = halfEdge.i;
1291
+ mesh.data.getPoint(vertexIndex, xyz);
1292
+ halfEdge.setXYZ(xyz);
1293
+ return true;
1294
+ });
1295
+ return graph;
1296
+ }
1240
1297
  /**
1241
1298
  * * Examine adjacent facet orientations throughout the mesh
1242
1299
  * * If possible, reverse a subset to achieve proper pairing.
@@ -1265,6 +1322,19 @@ class PolyfaceQuery {
1265
1322
  static buildAverageNormals(polyface, toleranceAngle = Angle_1.Angle.createDegrees(31.0)) {
1266
1323
  BuildAverageNormalsContext_1.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
1267
1324
  }
1325
+ /**
1326
+ * Offset the faces of the mesh.
1327
+ * @param source original mesh
1328
+ * @param signedOffsetDistance distance to offset
1329
+ * @param offsetOptions angle options. The default options are recommended.
1330
+ * @returns shifted mesh.
1331
+ */
1332
+ static cloneOffset(source, signedOffsetDistance, offsetOptions = OffsetMeshOptions.create()) {
1333
+ const strokeOptions = StrokeOptions_1.StrokeOptions.createForFacets();
1334
+ const offsetBuilder = PolyfaceBuilder_1.PolyfaceBuilder.create(strokeOptions);
1335
+ OffsetMeshContext_1.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
1336
+ return offsetBuilder.claimPolyface();
1337
+ }
1268
1338
  }
1269
1339
  exports.PolyfaceQuery = PolyfaceQuery;
1270
1340
  // amount of computation to do per step of async methods.