@itwin/rpcinterface-full-stack-tests 4.8.0-dev.20 → 4.8.0-dev.23
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/lib/dist/_bea9.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +387 -329
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_1_6_node_modules_loaders_gl_draco_di-0642a6.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_meshoptimizer_0_20_0_node_modules_meshoptimizer_index_m-a5ae61.bundled-tests.js.map +1 -1
- package/package.json +13 -13
|
@@ -71429,10 +71429,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
71429
71429
|
* @beta
|
|
71430
71430
|
*/
|
|
71431
71431
|
class CustomAttributeClass extends _Class__WEBPACK_IMPORTED_MODULE_2__.ECClass {
|
|
71432
|
+
/**
|
|
71433
|
+
* @deprecated in 4.8 use [[appliesTo]]
|
|
71434
|
+
* */
|
|
71432
71435
|
get containerType() {
|
|
71433
|
-
|
|
71436
|
+
return this.appliesTo;
|
|
71437
|
+
}
|
|
71438
|
+
get appliesTo() {
|
|
71439
|
+
if (undefined === this._appliesTo)
|
|
71434
71440
|
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_1__.ECObjectsStatus.InvalidContainerType, `The CustomAttributeClass ${this.name} does not have a CustomAttributeContainerType.`);
|
|
71435
|
-
return this.
|
|
71441
|
+
return this._appliesTo;
|
|
71436
71442
|
}
|
|
71437
71443
|
constructor(schema, name, modifier) {
|
|
71438
71444
|
super(schema, name, modifier);
|
|
@@ -71445,21 +71451,21 @@ class CustomAttributeClass extends _Class__WEBPACK_IMPORTED_MODULE_2__.ECClass {
|
|
|
71445
71451
|
*/
|
|
71446
71452
|
toJSON(standalone = false, includeSchemaVersion = false) {
|
|
71447
71453
|
const schemaJson = super.toJSON(standalone, includeSchemaVersion);
|
|
71448
|
-
schemaJson.appliesTo = (0,_ECObjects__WEBPACK_IMPORTED_MODULE_0__.containerTypeToString)(this.
|
|
71454
|
+
schemaJson.appliesTo = (0,_ECObjects__WEBPACK_IMPORTED_MODULE_0__.containerTypeToString)(this.appliesTo);
|
|
71449
71455
|
return schemaJson;
|
|
71450
71456
|
}
|
|
71451
71457
|
/** @internal */
|
|
71452
71458
|
async toXml(schemaXml) {
|
|
71453
71459
|
const itemElement = await super.toXml(schemaXml);
|
|
71454
|
-
itemElement.setAttribute("appliesTo", (0,_ECObjects__WEBPACK_IMPORTED_MODULE_0__.containerTypeToString)(this.
|
|
71460
|
+
itemElement.setAttribute("appliesTo", (0,_ECObjects__WEBPACK_IMPORTED_MODULE_0__.containerTypeToString)(this.appliesTo));
|
|
71455
71461
|
return itemElement;
|
|
71456
71462
|
}
|
|
71457
71463
|
fromJSONSync(customAttributeProps) {
|
|
71458
71464
|
super.fromJSONSync(customAttributeProps);
|
|
71459
|
-
const
|
|
71460
|
-
if (undefined ===
|
|
71461
|
-
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_1__.ECObjectsStatus.InvalidContainerType, `${
|
|
71462
|
-
this.
|
|
71465
|
+
const appliesTo = (0,_ECObjects__WEBPACK_IMPORTED_MODULE_0__.parseCustomAttributeContainerType)(customAttributeProps.appliesTo);
|
|
71466
|
+
if (undefined === appliesTo)
|
|
71467
|
+
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_1__.ECObjectsStatus.InvalidContainerType, `${appliesTo} is not a valid CustomAttributeContainerType.`);
|
|
71468
|
+
this._appliesTo = appliesTo;
|
|
71463
71469
|
}
|
|
71464
71470
|
async fromJSON(customAttributeProps) {
|
|
71465
71471
|
this.fromJSONSync(customAttributeProps);
|
|
@@ -71467,8 +71473,8 @@ class CustomAttributeClass extends _Class__WEBPACK_IMPORTED_MODULE_2__.ECClass {
|
|
|
71467
71473
|
/**
|
|
71468
71474
|
* @alpha Used in schema editing.
|
|
71469
71475
|
*/
|
|
71470
|
-
|
|
71471
|
-
this.
|
|
71476
|
+
setAppliesTo(containerType) {
|
|
71477
|
+
this._appliesTo = containerType;
|
|
71472
71478
|
}
|
|
71473
71479
|
}
|
|
71474
71480
|
/**
|
|
@@ -80179,6 +80185,8 @@ class AccuSnap {
|
|
|
80179
80185
|
showElemInfo(viewPt, vp, hit, delay) {
|
|
80180
80186
|
if (!_IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.doesHostHaveFocus || undefined !== this._toolTipPromise)
|
|
80181
80187
|
return;
|
|
80188
|
+
if (!_IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.toolAdmin.wantToolTip(hit))
|
|
80189
|
+
return;
|
|
80182
80190
|
const promise = this._toolTipPromise = delay.executeAfter(async () => {
|
|
80183
80191
|
if (promise !== this._toolTipPromise)
|
|
80184
80192
|
return; // we abandoned this request during delay
|
|
@@ -163613,7 +163621,7 @@ class MapTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_7__.TileTr
|
|
|
163613
163621
|
return {
|
|
163614
163622
|
isBaseLayer,
|
|
163615
163623
|
index: isBaseLayer ? undefined : { isOverlay: this.isOverlay, index: this._baseImageryLayerIncluded ? tree.layerIndex - 1 : tree.layerIndex },
|
|
163616
|
-
settings: tree.layerSettings, provider: tree.imageryProvider
|
|
163624
|
+
settings: tree.layerSettings, provider: tree.imageryProvider,
|
|
163617
163625
|
};
|
|
163618
163626
|
});
|
|
163619
163627
|
}
|
|
@@ -163675,7 +163683,7 @@ class MapTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_7__.TileTr
|
|
|
163675
163683
|
let carto;
|
|
163676
163684
|
const strings = [];
|
|
163677
163685
|
const getTooltipFunc = async (imageryTreeRef, quadId, cartoGraphic, imageryTree) => {
|
|
163678
|
-
strings.push(
|
|
163686
|
+
strings.push(`${_IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.ImageryLayer")}: ${imageryTreeRef.layerSettings.name}`);
|
|
163679
163687
|
carto = cartoGraphic;
|
|
163680
163688
|
await imageryTree.imageryLoader.getToolTip(strings, quadId, cartoGraphic, imageryTree);
|
|
163681
163689
|
};
|
|
@@ -163686,11 +163694,11 @@ class MapTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_7__.TileTr
|
|
|
163686
163694
|
// No results added
|
|
163687
163695
|
}
|
|
163688
163696
|
if (carto) {
|
|
163689
|
-
strings.push(
|
|
163690
|
-
strings.push(
|
|
163697
|
+
strings.push(`${_IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.Latitude")}: ${carto.latitudeDegrees.toFixed(4)}`);
|
|
163698
|
+
strings.push(`${_IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.Longitude")}: ${carto.longitudeDegrees.toFixed(4)}`);
|
|
163691
163699
|
if (this.settings.applyTerrain && tree.terrainExaggeration !== 0.0) {
|
|
163692
163700
|
const geodeticHeight = (carto.height - tree.bimElevationBias) / tree.terrainExaggeration;
|
|
163693
|
-
strings.push(
|
|
163701
|
+
strings.push(`${_IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.Height")}: ${geodeticHeight.toFixed(1)} ${_IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.SeaLevel")}: ${(geodeticHeight - tree.geodeticOffset).toFixed(1)}`);
|
|
163694
163702
|
}
|
|
163695
163703
|
}
|
|
163696
163704
|
const div = document.createElement("div");
|
|
@@ -173609,6 +173617,8 @@ class ToolAdmin {
|
|
|
173609
173617
|
}
|
|
173610
173618
|
/** The current tool. May be ViewTool, InputCollector, PrimitiveTool, or IdleTool - in that priority order. */
|
|
173611
173619
|
get currentTool() { return this.activeTool ? this.activeTool : this.idleTool; }
|
|
173620
|
+
/** Allow applications to inhibit specific tooltips, such as for maps. */
|
|
173621
|
+
wantToolTip(_hit) { return true; }
|
|
173612
173622
|
/** Ask the current tool to provide tooltip contents for the supplied HitDetail. */
|
|
173613
173623
|
async getToolTip(hit) { return this.currentTool.getToolTip(hit); }
|
|
173614
173624
|
async onMouseEnter(event) {
|
|
@@ -241816,10 +241826,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
241816
241826
|
|
|
241817
241827
|
|
|
241818
241828
|
/**
|
|
241819
|
-
* A FacetSector
|
|
241820
|
-
* *
|
|
241821
|
-
* *
|
|
241822
|
-
* *
|
|
241829
|
+
* A FacetSector.
|
|
241830
|
+
* * Initially holds coordinate data for a place where xyz and sectionDerivative are known.
|
|
241831
|
+
* * Normal is computed as a deferred step using an edge to adjacent place on ruled surface.
|
|
241832
|
+
* * Indices are set up even later.
|
|
241823
241833
|
*/
|
|
241824
241834
|
class FacetSector {
|
|
241825
241835
|
constructor(needNormal = false, needUV = false, needSectionDerivative = false) {
|
|
@@ -241838,8 +241848,9 @@ class FacetSector {
|
|
|
241838
241848
|
this.sectionDerivative = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Vector3d.create();
|
|
241839
241849
|
}
|
|
241840
241850
|
}
|
|
241841
|
-
/**
|
|
241842
|
-
*
|
|
241851
|
+
/**
|
|
241852
|
+
* Copy contents (not pointers) from `other`.
|
|
241853
|
+
* * ASSUME all fields defined in the instance are defined in `other`.
|
|
241843
241854
|
*/
|
|
241844
241855
|
copyContentsFrom(other) {
|
|
241845
241856
|
this.xyz.setFromPoint3d(other.xyz);
|
|
@@ -241853,10 +241864,11 @@ class FacetSector {
|
|
|
241853
241864
|
if (this.sectionDerivative)
|
|
241854
241865
|
this.sectionDerivative.setFrom(other.sectionDerivative);
|
|
241855
241866
|
}
|
|
241856
|
-
/**
|
|
241857
|
-
*
|
|
241867
|
+
/**
|
|
241868
|
+
* Access xyz, derivative from given arrays.
|
|
241869
|
+
* * ASSUME corresponding defined conditions.
|
|
241858
241870
|
* * xyz and derivative are set.
|
|
241859
|
-
* *
|
|
241871
|
+
* * Index fields for updated data are cleared to -1.
|
|
241860
241872
|
*/
|
|
241861
241873
|
loadIndexedPointAndDerivativeCoordinatesFromPackedArrays(i, packedXYZ, packedDerivatives, fractions, v) {
|
|
241862
241874
|
packedXYZ.getPoint3dAtCheckedPointIndex(i, this.xyz);
|
|
@@ -241878,16 +241890,14 @@ class FacetSector {
|
|
|
241878
241890
|
uvw.z = 0.0;
|
|
241879
241891
|
}
|
|
241880
241892
|
/**
|
|
241881
|
-
*
|
|
241882
|
-
*
|
|
241883
|
-
*
|
|
241884
|
-
* @param
|
|
241885
|
-
* @param sectorB "upper" sector
|
|
241886
|
-
*
|
|
241893
|
+
* Given two sectors with xyz and sectionDerivative (u derivative), use the edge from A to B as v direction
|
|
241894
|
+
* in-surface derivative. Compute cross products (and normalize).
|
|
241895
|
+
* @param sectorA "lower" sector.
|
|
241896
|
+
* @param sectorB "upper" sector.
|
|
241887
241897
|
*/
|
|
241888
241898
|
static computeNormalsAlongRuleLine(sectorA, sectorB) {
|
|
241889
|
-
// We expect that if sectionDerivative is defined so is normal.
|
|
241890
|
-
//
|
|
241899
|
+
// We expect that if a sector's sectionDerivative is defined, then so is its normal. If a normal is undefined, the
|
|
241900
|
+
// crossProduct returns an object that goes unused---not good, but the garbage collector will clean it up.
|
|
241891
241901
|
if (sectorA.sectionDerivative && sectorB.sectionDerivative) {
|
|
241892
241902
|
const vectorAB = FacetSector._edgeVector;
|
|
241893
241903
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Vector3d.createStartEnd(sectorA.xyz, sectorB.xyz, vectorAB);
|
|
@@ -241902,12 +241912,10 @@ class FacetSector {
|
|
|
241902
241912
|
}
|
|
241903
241913
|
FacetSector._edgeVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Vector3d.create();
|
|
241904
241914
|
/**
|
|
241905
|
-
*
|
|
241906
241915
|
* * Simple construction for strongly typed GeometryQuery objects:
|
|
241907
241916
|
*
|
|
241908
241917
|
* * Create a builder with `builder = PolyfaceBuilder.create()`
|
|
241909
241918
|
* * Add GeometryQuery objects:
|
|
241910
|
-
*
|
|
241911
241919
|
* * `builder.addGeometryQuery(g: GeometryQuery)`
|
|
241912
241920
|
* * `builder.addCone(cone: Cone)`
|
|
241913
241921
|
* * `builder.addTorusPipe(surface: TorusPipe)`
|
|
@@ -241918,7 +241926,7 @@ FacetSector._edgeVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0
|
|
|
241918
241926
|
* * `builder.addSphere(sphere: Sphere)`
|
|
241919
241927
|
* * `builder.addBox(box: Box)`
|
|
241920
241928
|
* * `builder.addIndexedPolyface(polyface)`
|
|
241921
|
-
* *
|
|
241929
|
+
* * Extract with `builder.claimPolyface(true)`
|
|
241922
241930
|
*
|
|
241923
241931
|
* * Simple construction for ephemeral constructive data:
|
|
241924
241932
|
*
|
|
@@ -241934,9 +241942,10 @@ FacetSector._edgeVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0
|
|
|
241934
241942
|
* * `builder.addTrianglesInUncheckedConvexPolygon(linestring, toggle)`
|
|
241935
241943
|
* * `builder.addUVGridBody(surface,numU, numV, createFanInCaps)`
|
|
241936
241944
|
* * `builder.addGraph(Graph, acceptFaceFunction)`
|
|
241937
|
-
* *
|
|
241945
|
+
* * Extract with `builder.claimPolyface(true)`
|
|
241946
|
+
*
|
|
241947
|
+
* * Low-level detail construction -- direct use of indices:
|
|
241938
241948
|
*
|
|
241939
|
-
* * Low-level detail construction -- direct use of indices
|
|
241940
241949
|
* * Create a builder with `builder = PolyfaceBuilder.create()`
|
|
241941
241950
|
* * Add GeometryQuery objects
|
|
241942
241951
|
* * `builder.addPoint(point)`
|
|
@@ -241944,17 +241953,21 @@ FacetSector._edgeVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0
|
|
|
241944
241953
|
* * `builder.addPointXYZ(x,y,z)`
|
|
241945
241954
|
* * `builder.addTriangleFacet(points)`
|
|
241946
241955
|
* * `builder.addQuadFacet(points)`
|
|
241947
|
-
|
|
241956
|
+
* @public
|
|
241948
241957
|
*/
|
|
241949
241958
|
class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__.NullGeometryHandler {
|
|
241950
|
-
/**
|
|
241951
|
-
get options() {
|
|
241959
|
+
/** Return (pointer to) the `StrokeOptions` in use by the builder. */
|
|
241960
|
+
get options() {
|
|
241961
|
+
return this._options;
|
|
241962
|
+
}
|
|
241952
241963
|
/** Ask if this builder is reversing vertex order as loops are received. */
|
|
241953
|
-
get reversedFlag() {
|
|
241964
|
+
get reversedFlag() {
|
|
241965
|
+
return this._reversed;
|
|
241966
|
+
}
|
|
241954
241967
|
/**
|
|
241955
241968
|
* Extract the polyface.
|
|
241956
|
-
* @param compress whether to cluster vertices (default true)
|
|
241957
|
-
* @param tolerance compression tolerance (default Geometry.smallMetricDistance)
|
|
241969
|
+
* @param compress whether to cluster vertices (default `true`).
|
|
241970
|
+
* @param tolerance compression tolerance (default `Geometry.smallMetricDistance`).
|
|
241958
241971
|
*/
|
|
241959
241972
|
claimPolyface(compress = true, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
241960
241973
|
if (compress)
|
|
@@ -241962,7 +241975,9 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
241962
241975
|
return this._polyface;
|
|
241963
241976
|
}
|
|
241964
241977
|
/** Toggle (reverse) the flag controlling orientation flips for newly added facets. */
|
|
241965
|
-
toggleReversedFacetFlag() {
|
|
241978
|
+
toggleReversedFacetFlag() {
|
|
241979
|
+
this._reversed = !this._reversed;
|
|
241980
|
+
}
|
|
241966
241981
|
constructor(options) {
|
|
241967
241982
|
super();
|
|
241968
241983
|
this._options = options ? options : _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_4__.StrokeOptions.createForFacets();
|
|
@@ -241970,25 +241985,27 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
241970
241985
|
this._reversed = false;
|
|
241971
241986
|
}
|
|
241972
241987
|
/**
|
|
241973
|
-
* Create a builder with given StrokeOptions
|
|
241974
|
-
* @param options StrokeOptions (captured)
|
|
241988
|
+
* Create a builder with given StrokeOptions.
|
|
241989
|
+
* @param options StrokeOptions (captured).
|
|
241975
241990
|
*/
|
|
241976
241991
|
static create(options) {
|
|
241977
241992
|
return new PolyfaceBuilder(options);
|
|
241978
241993
|
}
|
|
241979
|
-
/**
|
|
241994
|
+
/** Add facets for a transformed unit box. */
|
|
241980
241995
|
addTransformedUnitBox(transform) {
|
|
241981
241996
|
this.addTransformedRangeMesh(transform, _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__.Range3d.createXYZXYZ(0, 0, 0, 1, 1, 1));
|
|
241982
241997
|
}
|
|
241983
|
-
/**
|
|
241998
|
+
/**
|
|
241999
|
+
* Add facets for a transformed range box.
|
|
241984
242000
|
* * For best results, the transformed range corners should define a nonzero volume or area.
|
|
241985
|
-
* @param transform applied to the range points before adding to the polyface
|
|
241986
|
-
* @param range sides become 6 quad polyface facets
|
|
241987
|
-
* @param faceSelector for each face in the order of BoxTopology.cornerIndexCCW
|
|
242001
|
+
* @param transform applied to the range points before adding to the polyface.
|
|
242002
|
+
* @param range sides become 6 quad polyface facets.
|
|
242003
|
+
* @param faceSelector for each face in the order of `BoxTopology.cornerIndexCCW`, `faceSelector[i] === false` skips
|
|
242004
|
+
* that facet.
|
|
241988
242005
|
*/
|
|
241989
242006
|
addTransformedRangeMesh(transform, range, faceSelector) {
|
|
241990
242007
|
const pointIndex0 = this._polyface.data.pointCount;
|
|
241991
|
-
// these will have sequential indices starting at pointIndex0
|
|
242008
|
+
// these will have sequential indices starting at pointIndex0
|
|
241992
242009
|
const points = range.corners();
|
|
241993
242010
|
for (const p of points)
|
|
241994
242011
|
this._polyface.addPoint(transform.multiplyPoint3d(p));
|
|
@@ -242010,9 +242027,11 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242010
242027
|
faceCounter++;
|
|
242011
242028
|
}
|
|
242012
242029
|
}
|
|
242013
|
-
/**
|
|
242014
|
-
*
|
|
242015
|
-
* @param
|
|
242030
|
+
/**
|
|
242031
|
+
* Add triangles from `conePoint` to each far edge.
|
|
242032
|
+
* @param conePoint the common vertex of all triangles.
|
|
242033
|
+
* @param ls linestring with point coordinates.
|
|
242034
|
+
* @param toggle if `true`, wrap the triangle creation in toggleReversedFacetFlag.
|
|
242016
242035
|
*/
|
|
242017
242036
|
addTriangleFan(conePoint, ls, toggle) {
|
|
242018
242037
|
const n = ls.numPoints();
|
|
@@ -242031,12 +242050,11 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242031
242050
|
this.toggleReversedFacetFlag();
|
|
242032
242051
|
}
|
|
242033
242052
|
}
|
|
242034
|
-
/**
|
|
242035
|
-
*
|
|
242036
|
-
* *
|
|
242037
|
-
*
|
|
242038
|
-
* @param
|
|
242039
|
-
* @param reverse if true, wrap the triangle creation in toggleReversedFacetFlag.
|
|
242053
|
+
/**
|
|
242054
|
+
* Add triangles from the first point of the linestring to the subsequent edges of the linestring.
|
|
242055
|
+
* * No checks are made for polygon convexity or edge collinearity, conditions which would ensure positive area triangles.
|
|
242056
|
+
* @param ls linestring with point coordinates.
|
|
242057
|
+
* @param reverse if `true`, wrap the triangle creation in toggleReversedFacetFlag.
|
|
242040
242058
|
*/
|
|
242041
242059
|
addTrianglesInUncheckedConvexPolygon(ls, toggle) {
|
|
242042
242060
|
const n = ls.numPoints();
|
|
@@ -242081,36 +242099,36 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242081
242099
|
this.toggleReversedFacetFlag();
|
|
242082
242100
|
}
|
|
242083
242101
|
}
|
|
242084
|
-
/**
|
|
242085
|
-
* Announce point coordinates.
|
|
242086
|
-
*/
|
|
242102
|
+
/** Add a point to the polyface. */
|
|
242087
242103
|
addPoint(xyz) {
|
|
242088
242104
|
return this._polyface.addPoint(xyz);
|
|
242089
242105
|
}
|
|
242090
242106
|
/**
|
|
242091
|
-
*
|
|
242107
|
+
* Add a point to the polyface.
|
|
242092
242108
|
* @deprecated in 3.x. Use addPoint instead.
|
|
242093
242109
|
*/
|
|
242094
242110
|
findOrAddPoint(xyz) {
|
|
242095
242111
|
return this.addPoint(xyz);
|
|
242096
242112
|
}
|
|
242097
|
-
/**
|
|
242098
|
-
* Announce uv parameter coordinates.
|
|
242099
|
-
*/
|
|
242113
|
+
/** Add a uv parameter to the polyface. */
|
|
242100
242114
|
addParamXY(x, y) {
|
|
242101
242115
|
return this._polyface.addParamUV(x, y);
|
|
242102
242116
|
}
|
|
242103
242117
|
/**
|
|
242104
|
-
*
|
|
242118
|
+
* Add a uv parameter to the polyface.
|
|
242105
242119
|
* @deprecated in 3.x. Use addParamXY instead.
|
|
242106
242120
|
*/
|
|
242107
242121
|
findOrAddParamXY(x, y) {
|
|
242108
242122
|
return this.addParamXY(x, y);
|
|
242109
242123
|
}
|
|
242110
242124
|
/**
|
|
242111
|
-
*
|
|
242112
|
-
*
|
|
242113
|
-
* @param
|
|
242125
|
+
* Add a point to the polyface. The implementation is free to either create a new point or return the index of a
|
|
242126
|
+
* prior point with the same coordinates.
|
|
242127
|
+
* @param ls the linestring.
|
|
242128
|
+
* @param index index of the point in the linestring.
|
|
242129
|
+
* @param transform (optional) transform to be applied.
|
|
242130
|
+
* @param priorIndex (optional) index of a prior point to check for possible duplicate value.
|
|
242131
|
+
* @returns the point index in the polyface.
|
|
242114
242132
|
*/
|
|
242115
242133
|
findOrAddPointInLineString(ls, index, transform, priorIndex) {
|
|
242116
242134
|
const q = ls.pointAt(index, PolyfaceBuilder._workPointFindOrAddA);
|
|
@@ -242122,9 +242140,13 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242122
242140
|
return undefined;
|
|
242123
242141
|
}
|
|
242124
242142
|
/**
|
|
242125
|
-
*
|
|
242126
|
-
*
|
|
242127
|
-
* @param
|
|
242143
|
+
* Add a point to the polyface. The implementation is free to either create a new point or return the index of a
|
|
242144
|
+
* prior point with the same coordinates.
|
|
242145
|
+
* @param xyz the array of points.
|
|
242146
|
+
* @param index index of the point in the array.
|
|
242147
|
+
* @param transform (optional) transform to be applied.
|
|
242148
|
+
* @param priorIndex (optional) index of a prior point to check for possible duplicate value.
|
|
242149
|
+
* @returns the point index in the polyface.
|
|
242128
242150
|
*/
|
|
242129
242151
|
findOrAddPointInGrowableXYZArray(xyz, index, transform, priorIndex) {
|
|
242130
242152
|
const q = xyz.getPoint3dAtCheckedPointIndex(index, PolyfaceBuilder._workPointFindOrAddA);
|
|
@@ -242136,9 +242158,13 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242136
242158
|
return undefined;
|
|
242137
242159
|
}
|
|
242138
242160
|
/**
|
|
242139
|
-
*
|
|
242140
|
-
*
|
|
242141
|
-
* @param
|
|
242161
|
+
* Add a normal to the polyface. The implementation is free to either create a new normal or return the index of a
|
|
242162
|
+
* prior normal with the same coordinates.
|
|
242163
|
+
* @param xyz the array of normals.
|
|
242164
|
+
* @param index index of the normal in the array.
|
|
242165
|
+
* @param transform (optional) transform to be applied.
|
|
242166
|
+
* @param priorIndex (optional) index of a prior point to check for possible duplicate value.
|
|
242167
|
+
* @returns the normal index in the polyface.
|
|
242142
242168
|
*/
|
|
242143
242169
|
findOrAddNormalInGrowableXYZArray(xyz, index, transform, priorIndex) {
|
|
242144
242170
|
const q = xyz.getVector3dAtCheckedVectorIndex(index, PolyfaceBuilder._workVectorFindOrAdd);
|
|
@@ -242150,40 +242176,49 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242150
242176
|
return undefined;
|
|
242151
242177
|
}
|
|
242152
242178
|
/**
|
|
242153
|
-
*
|
|
242154
|
-
* @
|
|
242155
|
-
* @param index
|
|
242179
|
+
* Add a uv parameter to the polyface.
|
|
242180
|
+
* @param data the array of uv data.
|
|
242181
|
+
* @param index index of the param in the array.
|
|
242182
|
+
* @returns the uv parameter index in the polyface.
|
|
242156
242183
|
*/
|
|
242157
242184
|
addParamInGrowableXYArray(data, index) {
|
|
242158
242185
|
if (!data)
|
|
242159
242186
|
return undefined;
|
|
242160
242187
|
const q = data.getPoint2dAtCheckedPointIndex(index, PolyfaceBuilder._workUVFindOrAdd);
|
|
242161
|
-
if (q)
|
|
242188
|
+
if (q)
|
|
242162
242189
|
return this._polyface.addParam(q);
|
|
242163
|
-
}
|
|
242164
242190
|
return undefined;
|
|
242165
242191
|
}
|
|
242166
242192
|
/**
|
|
242167
|
-
*
|
|
242193
|
+
* Add a uv parameter to the polyface.
|
|
242168
242194
|
* @deprecated in 3.x. Use addParamInGrowableXYArray instead.
|
|
242169
242195
|
*/
|
|
242170
242196
|
findOrAddParamInGrowableXYArray(data, index) {
|
|
242171
242197
|
return this.addParamInGrowableXYArray(data, index);
|
|
242172
242198
|
}
|
|
242173
242199
|
/**
|
|
242174
|
-
*
|
|
242175
|
-
*
|
|
242176
|
-
* @param
|
|
242200
|
+
* Add a uv parameter to the polyface, taking `u` from `ls.fractions` and `v` from input. The implementation is
|
|
242201
|
+
* free to either create a new param or return the index of a prior param with the same coordinates.
|
|
242202
|
+
* @param ls the linestring.
|
|
242203
|
+
* @param index index of the point in the linestring.
|
|
242204
|
+
* @param v the v parameter.
|
|
242205
|
+
* @param priorIndexA (optional) an index of a prior param to check for possible duplicate value.
|
|
242206
|
+
* @param priorIndexB (optional) another index of a prior param to check for possible duplicate value.
|
|
242207
|
+
* @returns the uv parameter index in the polyface.
|
|
242177
242208
|
*/
|
|
242178
242209
|
findOrAddParamInLineString(ls, index, v, priorIndexA, priorIndexB) {
|
|
242179
|
-
const u = (ls.fractions && index < ls.fractions.length) ?
|
|
242210
|
+
const u = (ls.fractions && index < ls.fractions.length) ?
|
|
242211
|
+
ls.fractions.atUncheckedIndex(index) : index / ls.points.length;
|
|
242180
242212
|
return this._polyface.addParamUV(u, v, priorIndexA, priorIndexB);
|
|
242181
242213
|
}
|
|
242182
242214
|
/**
|
|
242183
|
-
*
|
|
242184
|
-
* @
|
|
242185
|
-
* @param index Index of the
|
|
242186
|
-
* @param
|
|
242215
|
+
* Add a normal to the polyface.
|
|
242216
|
+
* @param ls the linestring.
|
|
242217
|
+
* @param index Index of the normal in the linestring's surface normal array.
|
|
242218
|
+
* @param transform (optional) transform to be applied.
|
|
242219
|
+
* @param priorIndexA (optional) an index of a prior normal to check for possible duplicate value.
|
|
242220
|
+
* @param priorIndexB (optional) another index of a prior normal to check for possible duplicate value.
|
|
242221
|
+
* @returns the normal index in the polyface.
|
|
242187
242222
|
*/
|
|
242188
242223
|
findOrAddNormalInLineString(ls, index, transform, priorIndexA, priorIndexB) {
|
|
242189
242224
|
const linestringNormals = ls.packedSurfaceNormals;
|
|
@@ -242197,14 +242232,12 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242197
242232
|
}
|
|
242198
242233
|
return undefined;
|
|
242199
242234
|
}
|
|
242200
|
-
/**
|
|
242201
|
-
* Announce point coordinates.
|
|
242202
|
-
*/
|
|
242235
|
+
/** Add a point to the polyface. */
|
|
242203
242236
|
addPointXYZ(x, y, z) {
|
|
242204
242237
|
return this._polyface.addPointXYZ(x, y, z);
|
|
242205
242238
|
}
|
|
242206
242239
|
/**
|
|
242207
|
-
*
|
|
242240
|
+
* Add a point to the polyface.
|
|
242208
242241
|
* @deprecated in 3.x. Use addPointXYZ instead.
|
|
242209
242242
|
*/
|
|
242210
242243
|
findOrAddPointXYZ(x, y, z) {
|
|
@@ -242226,18 +242259,22 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242226
242259
|
normal = normal ? normal : _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Vector3d.create();
|
|
242227
242260
|
return normal;
|
|
242228
242261
|
}
|
|
242229
|
-
//
|
|
242262
|
+
// ### TODO: Consider case where normals will be reversed and point through the other end of the facet.
|
|
242230
242263
|
/**
|
|
242231
242264
|
* Add a quad to the polyface given its points in order around the edges.
|
|
242232
|
-
* @param points array of at least
|
|
242233
|
-
* @param params optional array of at least four uv parameters (if undefined
|
|
242234
|
-
*
|
|
242235
|
-
* @param
|
|
242265
|
+
* @param points array of at least four vertices.
|
|
242266
|
+
* @param params (optional) array of at least four uv parameters (if `undefined`, params are calculated without
|
|
242267
|
+
* reference data).
|
|
242268
|
+
* @param normals (optional) array of at least four vectors (if `undefined`, the quad is assumed to be planar and its
|
|
242269
|
+
* normal is calculated).
|
|
242270
|
+
* @param colors (optional) array of at least four colors.
|
|
242236
242271
|
*/
|
|
242237
242272
|
addQuadFacet(points, params, normals, colors) {
|
|
242238
242273
|
if (points instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_10__.GrowableXYZArray)
|
|
242239
242274
|
points = points.getPoint3dArray();
|
|
242240
|
-
|
|
242275
|
+
if (points.length < 4)
|
|
242276
|
+
return;
|
|
242277
|
+
// if params and/or normals are needed, calculate them first
|
|
242241
242278
|
const needParams = this.options.needParams;
|
|
242242
242279
|
const needNormals = this.options.needNormals;
|
|
242243
242280
|
const needColors = this.options.needColors;
|
|
@@ -242287,7 +242324,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242287
242324
|
}
|
|
242288
242325
|
}
|
|
242289
242326
|
if (this._options.shouldTriangulate) {
|
|
242290
|
-
//
|
|
242327
|
+
// add as two triangles, with a diagonal along the shortest distance
|
|
242291
242328
|
const vectorAC = points[0].vectorTo(points[2]);
|
|
242292
242329
|
const vectorBD = points[1].vectorTo(points[3]);
|
|
242293
242330
|
// Note: We pass along any values for normals or params that we calculated
|
|
@@ -242302,7 +242339,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242302
242339
|
return;
|
|
242303
242340
|
}
|
|
242304
242341
|
let idx0, idx1, idx2, idx3;
|
|
242305
|
-
//
|
|
242342
|
+
// add params if needed
|
|
242306
242343
|
if (needParams) {
|
|
242307
242344
|
idx0 = this._polyface.addParam(param0);
|
|
242308
242345
|
idx1 = this._polyface.addParam(param1);
|
|
@@ -242310,7 +242347,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242310
242347
|
idx3 = this._polyface.addParam(param3);
|
|
242311
242348
|
this.addIndexedQuadParamIndexes(idx0, idx1, idx3, idx2);
|
|
242312
242349
|
}
|
|
242313
|
-
//
|
|
242350
|
+
// add normals if needed
|
|
242314
242351
|
if (needNormals) {
|
|
242315
242352
|
idx0 = this._polyface.addNormal(normal0);
|
|
242316
242353
|
idx1 = this._polyface.addNormal(normal1);
|
|
@@ -242318,7 +242355,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242318
242355
|
idx3 = this._polyface.addNormal(normal3);
|
|
242319
242356
|
this.addIndexedQuadNormalIndexes(idx0, idx1, idx3, idx2);
|
|
242320
242357
|
}
|
|
242321
|
-
//
|
|
242358
|
+
// add colors if needed
|
|
242322
242359
|
if (needColors) {
|
|
242323
242360
|
idx0 = this._polyface.addColor(color0);
|
|
242324
242361
|
idx1 = this._polyface.addColor(color1);
|
|
@@ -242326,18 +242363,19 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242326
242363
|
idx3 = this._polyface.addColor(color3);
|
|
242327
242364
|
this.addIndexedQuadColorIndexes(idx0, idx1, idx3, idx2);
|
|
242328
242365
|
}
|
|
242329
|
-
//
|
|
242366
|
+
// add point and point indexes last (terminates the facet)
|
|
242330
242367
|
idx0 = this.addPoint(points[0]);
|
|
242331
242368
|
idx1 = this.addPoint(points[1]);
|
|
242332
242369
|
idx2 = this.addPoint(points[2]);
|
|
242333
242370
|
idx3 = this.addPoint(points[3]);
|
|
242334
242371
|
this.addIndexedQuadPointIndexes(idx0, idx1, idx3, idx2);
|
|
242335
242372
|
}
|
|
242336
|
-
/**
|
|
242373
|
+
/**
|
|
242374
|
+
* Add a single quad facet from existing points to the polyface.
|
|
242337
242375
|
* * The actual quad may be reversed or triangulated based on builder setup.
|
|
242338
|
-
* * indexA0 and indexA1 are in the forward order at the "A" end of the quad
|
|
242339
|
-
* * indexB0 and indexB1 are in the forward order at the "B" end of the quad.
|
|
242340
|
-
* * This means ccw/cw ordered vertices v[i] should be passed into this function as i=[0,1,3,2]
|
|
242376
|
+
* * `indexA0` and `indexA1` are in the forward order at the "A" end of the quad
|
|
242377
|
+
* * `indexB0` and `indexB1` are in the forward order at the "B" end of the quad.
|
|
242378
|
+
* * This means ccw/cw ordered vertices v[i] should be passed into this function as i=[0,1,3,2].
|
|
242341
242379
|
*/
|
|
242342
242380
|
addIndexedQuadPointIndexes(indexA0, indexA1, indexB0, indexB1, terminate = true) {
|
|
242343
242381
|
if (this._reversed) {
|
|
@@ -242400,13 +242438,14 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242400
242438
|
this._polyface.addColorIndex(indexB0);
|
|
242401
242439
|
}
|
|
242402
242440
|
}
|
|
242403
|
-
// ### TODO: Consider case where normals will be reversed and point through the other end of the facet
|
|
242441
|
+
// ### TODO: Consider case where normals will be reversed and point through the other end of the facet.
|
|
242404
242442
|
/**
|
|
242405
242443
|
* Add a triangle to the polyface given its points in order around the edges.
|
|
242406
|
-
* @param points array of at least three vertices
|
|
242407
|
-
* @param params optional array of at least three uv parameters (if undefined
|
|
242408
|
-
*
|
|
242409
|
-
* @param
|
|
242444
|
+
* @param points array of at least three vertices.
|
|
242445
|
+
* @param params (optional) array of at least three uv parameters (if `undefined`, params are calculated without
|
|
242446
|
+
* reference data).
|
|
242447
|
+
* @param normals (optional) array of at least three vectors (if `undefined`, the normal is calculated).
|
|
242448
|
+
* @param colors (optional) array of at least three colors.
|
|
242410
242449
|
*/
|
|
242411
242450
|
addTriangleFacet(points, params, normals, colors) {
|
|
242412
242451
|
if (points.length < 3)
|
|
@@ -242425,14 +242464,14 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242425
242464
|
point1 = points[1];
|
|
242426
242465
|
point2 = points[2];
|
|
242427
242466
|
}
|
|
242428
|
-
//
|
|
242467
|
+
// add params if needed
|
|
242429
242468
|
if (this._options.needParams) {
|
|
242430
|
-
if (params && params.length >= 3) { //
|
|
242469
|
+
if (params && params.length >= 3) { // params were given
|
|
242431
242470
|
idx0 = this._polyface.addParam(params[0]);
|
|
242432
242471
|
idx1 = this._polyface.addParam(params[1]);
|
|
242433
242472
|
idx2 = this._polyface.addParam(params[2]);
|
|
242434
242473
|
}
|
|
242435
|
-
else { //
|
|
242474
|
+
else { // compute params
|
|
242436
242475
|
const paramTransform = this.getUVTransformForTriangleFacet(point0, point1, point2);
|
|
242437
242476
|
idx0 = this._polyface.addParam(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.Point2d.createFrom(paramTransform ? paramTransform.multiplyPoint3d(point0) : undefined));
|
|
242438
242477
|
idx1 = this._polyface.addParam(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.Point2d.createFrom(paramTransform ? paramTransform.multiplyPoint3d(point1) : undefined));
|
|
@@ -242440,14 +242479,14 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242440
242479
|
}
|
|
242441
242480
|
this.addIndexedTriangleParamIndexes(idx0, idx1, idx2);
|
|
242442
242481
|
}
|
|
242443
|
-
//
|
|
242482
|
+
// add normals if needed
|
|
242444
242483
|
if (this._options.needNormals) {
|
|
242445
|
-
if (normals !== undefined && normals.length > 2) { //
|
|
242484
|
+
if (normals !== undefined && normals.length > 2) { // normals were given
|
|
242446
242485
|
idx0 = this._polyface.addNormal(normals[0]);
|
|
242447
242486
|
idx1 = this._polyface.addNormal(normals[1]);
|
|
242448
242487
|
idx2 = this._polyface.addNormal(normals[2]);
|
|
242449
242488
|
}
|
|
242450
|
-
else { //
|
|
242489
|
+
else { // compute normals
|
|
242451
242490
|
const normal = this.getNormalForTriangularFacet(point0, point1, point2);
|
|
242452
242491
|
idx0 = this._polyface.addNormal(normal);
|
|
242453
242492
|
idx1 = this._polyface.addNormal(normal);
|
|
@@ -242455,7 +242494,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242455
242494
|
}
|
|
242456
242495
|
this.addIndexedTriangleNormalIndexes(idx0, idx1, idx2);
|
|
242457
242496
|
}
|
|
242458
|
-
//
|
|
242497
|
+
// add colors if needed and provided
|
|
242459
242498
|
if (this._options.needColors) {
|
|
242460
242499
|
if (colors !== undefined && colors.length > 2) {
|
|
242461
242500
|
idx0 = this._polyface.addColor(colors[0]);
|
|
@@ -242464,15 +242503,15 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242464
242503
|
this.addIndexedTriangleColorIndexes(idx0, idx1, idx2);
|
|
242465
242504
|
}
|
|
242466
242505
|
}
|
|
242467
|
-
//
|
|
242506
|
+
// add point and point indexes last (terminates the facet)
|
|
242468
242507
|
idx0 = this.addPoint(point0);
|
|
242469
242508
|
idx1 = this.addPoint(point1);
|
|
242470
242509
|
idx2 = this.addPoint(point2);
|
|
242471
242510
|
this.addIndexedTrianglePointIndexes(idx0, idx1, idx2);
|
|
242472
242511
|
}
|
|
242473
|
-
/**
|
|
242474
|
-
*
|
|
242475
|
-
* * The
|
|
242512
|
+
/**
|
|
242513
|
+
* Add a single triangular facet from existing points to the polyface.
|
|
242514
|
+
* * The added triangle may be reversed based on builder setup.
|
|
242476
242515
|
*/
|
|
242477
242516
|
addIndexedTrianglePointIndexes(indexA, indexB, indexC, terminateFacet = true) {
|
|
242478
242517
|
if (!this._reversed) {
|
|
@@ -242539,7 +242578,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242539
242578
|
if (sectorA0.xyz.isAlmostEqual(sectorA1.xyz)
|
|
242540
242579
|
|| sectorA1.xyz.isAlmostEqual(sectorA2.xyz)
|
|
242541
242580
|
|| sectorA2.xyz.isAlmostEqual(sectorA0.xyz)) {
|
|
242542
|
-
// trivially degenerate triangle
|
|
242581
|
+
// trivially degenerate triangle; skip!!!
|
|
242543
242582
|
}
|
|
242544
242583
|
else {
|
|
242545
242584
|
if (this._options.needNormals)
|
|
@@ -242551,7 +242590,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242551
242590
|
}
|
|
242552
242591
|
addSectorQuadA01B01(sectorA0, sectorA1, sectorB0, sectorB1) {
|
|
242553
242592
|
if (sectorA0.xyz.isAlmostEqual(sectorA1.xyz) && sectorB0.xyz.isAlmostEqual(sectorB1.xyz)) {
|
|
242554
|
-
// ignore null quad
|
|
242593
|
+
// ignore null quad
|
|
242555
242594
|
}
|
|
242556
242595
|
else if (this._options.shouldTriangulate) {
|
|
242557
242596
|
this.addSectorTriangle(sectorA0, sectorA1, sectorB1);
|
|
@@ -242565,10 +242604,9 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242565
242604
|
this.addIndexedQuadPointIndexes(sectorA0.xyzIndex, sectorA1.xyzIndex, sectorB0.xyzIndex, sectorB1.xyzIndex, true);
|
|
242566
242605
|
}
|
|
242567
242606
|
}
|
|
242568
|
-
/**
|
|
242569
|
-
*
|
|
242570
|
-
* *
|
|
242571
|
-
* * addIndexedQuad is free to apply reversal or triangulation options.
|
|
242607
|
+
/**
|
|
242608
|
+
* Add facets between lineStrings with matched point counts.
|
|
242609
|
+
* * Surface normals are computed from (a) curve tangents in the linestrings and (b) rule line between linestrings.
|
|
242572
242610
|
*/
|
|
242573
242611
|
addBetweenLineStringsWithRuleEdgeNormals(lineStringA, vA, lineStringB, vB, addClosure = false) {
|
|
242574
242612
|
const pointA = lineStringA.packedPoints;
|
|
@@ -242602,7 +242640,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242602
242640
|
FacetSector.computeNormalsAlongRuleLine(sectorA1, sectorB1);
|
|
242603
242641
|
this.setSectorIndices(sectorA1);
|
|
242604
242642
|
this.setSectorIndices(sectorB1);
|
|
242605
|
-
// create the facet
|
|
242643
|
+
// create the facet
|
|
242606
242644
|
this.addSectorQuadA01B01(sectorA0, sectorA1, sectorB0, sectorB1);
|
|
242607
242645
|
sectorA0.copyContentsFrom(sectorA1);
|
|
242608
242646
|
sectorB0.copyContentsFrom(sectorB1);
|
|
@@ -242610,10 +242648,9 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242610
242648
|
if (addClosure)
|
|
242611
242649
|
this.addSectorQuadA01B01(sectorA0, sectorA00, sectorB0, sectorB00);
|
|
242612
242650
|
}
|
|
242613
|
-
/**
|
|
242614
|
-
*
|
|
242615
|
-
* *
|
|
242616
|
-
* * uv indices pre-stored
|
|
242651
|
+
/**
|
|
242652
|
+
* Add facets between lineStrings with matched point counts.
|
|
242653
|
+
* * Indices of points, normals, and uv parameters are pre-stored in the linestrings.
|
|
242617
242654
|
*/
|
|
242618
242655
|
addBetweenLineStringsWithStoredIndices(lineStringA, lineStringB) {
|
|
242619
242656
|
const pointA = lineStringA.pointIndices;
|
|
@@ -242649,7 +242686,8 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242649
242686
|
}
|
|
242650
242687
|
}
|
|
242651
242688
|
else {
|
|
242652
|
-
if (pointA.atUncheckedIndex(i - 1) !== pointA.atUncheckedIndex(i) ||
|
|
242689
|
+
if (pointA.atUncheckedIndex(i - 1) !== pointA.atUncheckedIndex(i) ||
|
|
242690
|
+
pointB.atUncheckedIndex(i - 1) !== pointB.atUncheckedIndex(i)) {
|
|
242653
242691
|
this.addIndexedQuadPointIndexes(pointA.atUncheckedIndex(i - 1), pointA.atUncheckedIndex(i), pointB.atUncheckedIndex(i - 1), pointB.atUncheckedIndex(i), false);
|
|
242654
242692
|
if (normalA && normalB)
|
|
242655
242693
|
this.addIndexedQuadNormalIndexes(normalA.atUncheckedIndex(i - 1), normalA.atUncheckedIndex(i), normalB.atUncheckedIndex(i - 1), normalB.atUncheckedIndex(i));
|
|
@@ -242660,8 +242698,8 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242660
242698
|
this._polyface.terminateFacet();
|
|
242661
242699
|
}
|
|
242662
242700
|
}
|
|
242663
|
-
/**
|
|
242664
|
-
*
|
|
242701
|
+
/**
|
|
242702
|
+
* Add facets between lineStrings with matched point counts.
|
|
242665
242703
|
* * Facets are announced to addIndexedQuad.
|
|
242666
242704
|
* * addIndexedQuad is free to apply reversal or triangulation options.
|
|
242667
242705
|
*/
|
|
@@ -242687,7 +242725,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242687
242725
|
}
|
|
242688
242726
|
else {
|
|
242689
242727
|
const children = curves.children;
|
|
242690
|
-
// just send the children individually
|
|
242728
|
+
// just send the children individually; final compress will fix things??
|
|
242691
242729
|
if (children)
|
|
242692
242730
|
for (const c of children) {
|
|
242693
242731
|
this.addBetweenTransformedLineStrings(c, transformA, transformB);
|
|
@@ -242719,11 +242757,9 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242719
242757
|
}
|
|
242720
242758
|
}
|
|
242721
242759
|
}
|
|
242722
|
-
/**
|
|
242723
|
-
* Add facets from a Cone
|
|
242724
|
-
*/
|
|
242760
|
+
/** Add facets from a Cone. */
|
|
242725
242761
|
addCone(cone) {
|
|
242726
|
-
// ensure identical stroke counts at each end
|
|
242762
|
+
// ensure identical stroke counts at each end
|
|
242727
242763
|
let strokeCount = 16;
|
|
242728
242764
|
if (this._options)
|
|
242729
242765
|
strokeCount = this._options.applyTolerancesToArc(cone.getMaxRadius());
|
|
@@ -242748,9 +242784,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242748
242784
|
}
|
|
242749
242785
|
}
|
|
242750
242786
|
}
|
|
242751
|
-
/**
|
|
242752
|
-
* Add facets for a TorusPipe.
|
|
242753
|
-
*/
|
|
242787
|
+
/** Add facets for a TorusPipe. */
|
|
242754
242788
|
addTorusPipe(surface, phiStrokeCount, thetaStrokeCount) {
|
|
242755
242789
|
const thetaFraction = surface.getThetaFraction();
|
|
242756
242790
|
let numU = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.clamp(_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.resolveNumber(phiStrokeCount, 8), 4, 64);
|
|
@@ -242794,11 +242828,11 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242794
242828
|
}
|
|
242795
242829
|
/**
|
|
242796
242830
|
* Add point data (no params, normals) for linestrings.
|
|
242797
|
-
* * This recurses through curve chains (loops and paths)
|
|
242798
|
-
* *
|
|
242831
|
+
* * This recurses through curve chains (loops and paths).
|
|
242832
|
+
* * LineStrings are swept.
|
|
242799
242833
|
* * All other curve types are ignored.
|
|
242800
|
-
* @param
|
|
242801
|
-
* @param
|
|
242834
|
+
* @param contour contour which contains only linestrings.
|
|
242835
|
+
* @param vector sweep vector.
|
|
242802
242836
|
*/
|
|
242803
242837
|
addLinearSweepLineStringsXYZOnly(contour, vector) {
|
|
242804
242838
|
if (contour instanceof _curve_LineString3d__WEBPACK_IMPORTED_MODULE_11__.LineString3d) {
|
|
@@ -242814,22 +242848,18 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242814
242848
|
pointB = pointA.plus(vector, pointB);
|
|
242815
242849
|
indexA1 = this.addPoint(pointA);
|
|
242816
242850
|
indexB1 = this.addPoint(pointB);
|
|
242817
|
-
if (i > 0)
|
|
242851
|
+
if (i > 0)
|
|
242818
242852
|
this.addIndexedQuadPointIndexes(indexA0, indexA1, indexB0, indexB1);
|
|
242819
|
-
}
|
|
242820
242853
|
indexA0 = indexA1;
|
|
242821
242854
|
indexB0 = indexB1;
|
|
242822
242855
|
}
|
|
242823
242856
|
}
|
|
242824
242857
|
else if (contour instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_13__.CurveChain) {
|
|
242825
|
-
for (const ls of contour.children)
|
|
242858
|
+
for (const ls of contour.children)
|
|
242826
242859
|
this.addLinearSweepLineStringsXYZOnly(ls, vector);
|
|
242827
|
-
}
|
|
242828
242860
|
}
|
|
242829
242861
|
}
|
|
242830
|
-
/**
|
|
242831
|
-
* Construct facets for a rotational sweep.
|
|
242832
|
-
*/
|
|
242862
|
+
/** Construct facets for a rotational sweep. */
|
|
242833
242863
|
addRotationalSweep(surface) {
|
|
242834
242864
|
const contour = surface.getCurves();
|
|
242835
242865
|
const section0 = _curve_Query_StrokeCountChain__WEBPACK_IMPORTED_MODULE_16__.StrokeCountSection.createForParityRegionOrChain(contour, this._options);
|
|
@@ -242852,22 +242882,21 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242852
242882
|
const capContour = surface.getSweepContourRef();
|
|
242853
242883
|
capContour.purgeFacets();
|
|
242854
242884
|
capContour.emitFacets(this, true, undefined);
|
|
242855
|
-
// final loop pass left transformA at end
|
|
242885
|
+
// final loop pass left transformA at end
|
|
242856
242886
|
capContour.emitFacets(this, false, surface.getFractionalRotationTransform(1.0));
|
|
242857
242887
|
}
|
|
242858
242888
|
}
|
|
242859
|
-
/**
|
|
242860
|
-
* Construct facets for any planar region
|
|
242861
|
-
*/
|
|
242889
|
+
/** Construct facets for any planar region. */
|
|
242862
242890
|
addTriangulatedRegion(region) {
|
|
242863
242891
|
const contour = _solid_SweepContour__WEBPACK_IMPORTED_MODULE_18__.SweepContour.createForLinearSweep(region);
|
|
242864
242892
|
if (contour)
|
|
242865
242893
|
contour.emitFacets(this, this.reversedFlag, undefined);
|
|
242866
242894
|
}
|
|
242867
242895
|
/**
|
|
242896
|
+
* Apply stroke counts to curve primitives.
|
|
242868
242897
|
* * Recursively visit all children of data.
|
|
242869
|
-
* * At each primitive, invoke
|
|
242870
|
-
* @
|
|
242898
|
+
* * At each primitive, invoke `computeStrokeCountForOptions` method with options from the builder.
|
|
242899
|
+
* @deprecated in 4.x. This method does nothing and is unneeded.
|
|
242871
242900
|
*/
|
|
242872
242901
|
applyStrokeCountsToCurvePrimitives(data) {
|
|
242873
242902
|
const options = this._options;
|
|
@@ -242877,9 +242906,9 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242877
242906
|
else if (data instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_13__.CurveCollection) {
|
|
242878
242907
|
const children = data.children;
|
|
242879
242908
|
if (children)
|
|
242880
|
-
for (const child of children)
|
|
242909
|
+
for (const child of children)
|
|
242910
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
242881
242911
|
this.applyStrokeCountsToCurvePrimitives(child);
|
|
242882
|
-
}
|
|
242883
242912
|
}
|
|
242884
242913
|
}
|
|
242885
242914
|
addBetweenStrokeSetsWithRuledNormals(stroke0, stroke1, numVEdge) {
|
|
@@ -242899,22 +242928,20 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242899
242928
|
}
|
|
242900
242929
|
createIndicesInLineString(ls, vParam, transform) {
|
|
242901
242930
|
const n = ls.numPoints();
|
|
242902
|
-
|
|
242903
|
-
|
|
242904
|
-
|
|
242905
|
-
|
|
242906
|
-
|
|
242907
|
-
|
|
242908
|
-
|
|
242909
|
-
|
|
242910
|
-
indexB = this.findOrAddPointInLineString(ls, i, transform, indexA);
|
|
242911
|
-
pointIndices.push(indexB);
|
|
242912
|
-
indexA = indexB;
|
|
242913
|
-
}
|
|
242914
|
-
// assume last point can only repeat back to zero ...
|
|
242915
|
-
indexB = this.findOrAddPointInLineString(ls, n - 1, transform, index0);
|
|
242931
|
+
const pointIndices = ls.ensureEmptyPointIndices();
|
|
242932
|
+
const index0 = this.findOrAddPointInLineString(ls, 0, transform);
|
|
242933
|
+
pointIndices.push(index0);
|
|
242934
|
+
if (n > 1) {
|
|
242935
|
+
let indexA = index0;
|
|
242936
|
+
let indexB;
|
|
242937
|
+
for (let i = 1; i + 1 < n; i++) {
|
|
242938
|
+
indexB = this.findOrAddPointInLineString(ls, i, transform, indexA);
|
|
242916
242939
|
pointIndices.push(indexB);
|
|
242940
|
+
indexA = indexB;
|
|
242917
242941
|
}
|
|
242942
|
+
// assume last point can only repeat back to zero
|
|
242943
|
+
indexB = this.findOrAddPointInLineString(ls, n - 1, transform, index0);
|
|
242944
|
+
pointIndices.push(indexB);
|
|
242918
242945
|
}
|
|
242919
242946
|
if (this._options.needNormals && ls.packedSurfaceNormals !== undefined) {
|
|
242920
242947
|
const normalIndices = ls.ensureEmptyNormalIndices();
|
|
@@ -242928,7 +242955,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242928
242955
|
normalIndices.push(normalIndexB);
|
|
242929
242956
|
normalIndexA = normalIndexB;
|
|
242930
242957
|
}
|
|
242931
|
-
// assume last point can only repeat back to zero
|
|
242958
|
+
// assume last point can only repeat back to zero
|
|
242932
242959
|
normalIndexB = this.findOrAddNormalInLineString(ls, n - 1, transform, normalIndex0, normalIndexA);
|
|
242933
242960
|
normalIndices.push(normalIndexB);
|
|
242934
242961
|
}
|
|
@@ -242945,7 +242972,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242945
242972
|
uvIndices.push(uvIndexB);
|
|
242946
242973
|
uvIndexA = uvIndexB;
|
|
242947
242974
|
}
|
|
242948
|
-
// assume last point can only repeat back to zero
|
|
242975
|
+
// assume last point can only repeat back to zero
|
|
242949
242976
|
uvIndexB = this.findOrAddParamInLineString(ls, n - 1, vParam, uvIndexA, uvIndex0);
|
|
242950
242977
|
uvIndices.push(uvIndexB);
|
|
242951
242978
|
}
|
|
@@ -242972,12 +242999,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242972
242999
|
}
|
|
242973
243000
|
}
|
|
242974
243001
|
}
|
|
242975
|
-
/**
|
|
242976
|
-
*
|
|
242977
|
-
* Add facets from
|
|
242978
|
-
* * The swept contour
|
|
242979
|
-
* * each cap.
|
|
242980
|
-
*/
|
|
243002
|
+
/** Add facets from the linear sweep. */
|
|
242981
243003
|
addLinearSweep(surface) {
|
|
242982
243004
|
const contour = surface.getCurvesRef();
|
|
242983
243005
|
const section0 = _curve_Query_StrokeCountChain__WEBPACK_IMPORTED_MODULE_16__.StrokeCountSection.createForParityRegionOrChain(contour, this._options);
|
|
@@ -242994,17 +243016,14 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
242994
243016
|
contourA.emitFacets(this, false, sweepTransform);
|
|
242995
243017
|
}
|
|
242996
243018
|
}
|
|
242997
|
-
/**
|
|
242998
|
-
* Add facets from a ruled sweep.
|
|
242999
|
-
*/
|
|
243019
|
+
/** Add facets from a ruled sweep. */
|
|
243000
243020
|
addRuledSweep(surface) {
|
|
243001
243021
|
const contours = surface.sweepContoursRef();
|
|
243002
243022
|
let stroke0;
|
|
243003
243023
|
let stroke1;
|
|
243004
243024
|
const sectionMaps = [];
|
|
243005
|
-
for (const contour of contours)
|
|
243025
|
+
for (const contour of contours)
|
|
243006
243026
|
sectionMaps.push(_curve_Query_StrokeCountChain__WEBPACK_IMPORTED_MODULE_16__.StrokeCountSection.createForParityRegionOrChain(contour.curves, this._options));
|
|
243007
|
-
}
|
|
243008
243027
|
if (_curve_Query_StrokeCountChain__WEBPACK_IMPORTED_MODULE_16__.StrokeCountSection.enforceStrokeCountCompatibility(sectionMaps)) {
|
|
243009
243028
|
_curve_Query_StrokeCountChain__WEBPACK_IMPORTED_MODULE_16__.StrokeCountSection.enforceCompatibleDistanceSums(sectionMaps);
|
|
243010
243029
|
for (let i = 0; i < contours.length; i++) {
|
|
@@ -243030,9 +243049,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243030
243049
|
}
|
|
243031
243050
|
return true;
|
|
243032
243051
|
}
|
|
243033
|
-
/**
|
|
243034
|
-
* Add facets from a Sphere
|
|
243035
|
-
*/
|
|
243052
|
+
/** Add facets from a sphere. */
|
|
243036
243053
|
addSphere(sphere, strokeCount) {
|
|
243037
243054
|
let numStrokeTheta = strokeCount ? strokeCount : this.options.applyTolerancesToArc(sphere.maxAxisRadius());
|
|
243038
243055
|
if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isOdd(numStrokeTheta))
|
|
@@ -243052,21 +243069,19 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243052
243069
|
this.endFace();
|
|
243053
243070
|
}
|
|
243054
243071
|
}
|
|
243055
|
-
/**
|
|
243056
|
-
* Add facets from a Box
|
|
243057
|
-
*/
|
|
243072
|
+
/** Add facets from a box. */
|
|
243058
243073
|
addBox(box) {
|
|
243059
243074
|
const corners = box.getCorners();
|
|
243060
243075
|
const xLength = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(box.getBaseX(), box.getBaseX());
|
|
243061
243076
|
const yLength = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(box.getBaseY(), box.getTopY());
|
|
243062
243077
|
let zLength = 0.0;
|
|
243063
|
-
for (let i = 0; i < 4; i++)
|
|
243078
|
+
for (let i = 0; i < 4; i++)
|
|
243064
243079
|
zLength = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(zLength, corners[i].distance(corners[i + 4]));
|
|
243065
|
-
}
|
|
243066
243080
|
const numX = this._options.applyMaxEdgeLength(1, xLength);
|
|
243067
243081
|
const numY = this._options.applyMaxEdgeLength(1, yLength);
|
|
243068
243082
|
const numZ = this._options.applyMaxEdgeLength(1, zLength);
|
|
243069
|
-
//
|
|
243083
|
+
// wrap the 4 out-of-plane faces as a single parameter space with "distance"
|
|
243084
|
+
// advancing in x, then y, then negative x, then negative y
|
|
243070
243085
|
const uParamRange = _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_14__.Segment1d.create(0, xLength);
|
|
243071
243086
|
const vParamRange = _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_14__.Segment1d.create(0, zLength);
|
|
243072
243087
|
this.addUVGridBody(_geometry3d_BilinearPatch__WEBPACK_IMPORTED_MODULE_21__.BilinearPatch.create(corners[0], corners[1], corners[4], corners[5]), numX, numZ, uParamRange, vParamRange);
|
|
@@ -243076,7 +243091,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243076
243091
|
this.addUVGridBody(_geometry3d_BilinearPatch__WEBPACK_IMPORTED_MODULE_21__.BilinearPatch.create(corners[3], corners[2], corners[7], corners[6]), numX, numZ, uParamRange, vParamRange);
|
|
243077
243092
|
uParamRange.shift(xLength);
|
|
243078
243093
|
this.addUVGridBody(_geometry3d_BilinearPatch__WEBPACK_IMPORTED_MODULE_21__.BilinearPatch.create(corners[2], corners[0], corners[6], corners[4]), numY, numZ, uParamRange, vParamRange);
|
|
243079
|
-
// finally end that wraparound face
|
|
243094
|
+
// finally end that wraparound face
|
|
243080
243095
|
this.endFace();
|
|
243081
243096
|
if (box.capped) {
|
|
243082
243097
|
uParamRange.set(0.0, xLength);
|
|
@@ -243089,15 +243104,15 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243089
243104
|
this.endFace();
|
|
243090
243105
|
}
|
|
243091
243106
|
}
|
|
243092
|
-
/**
|
|
243093
|
-
*
|
|
243094
|
-
* * Add points to the polyface
|
|
243095
|
-
* *
|
|
243096
|
-
* @param points array of points.
|
|
243107
|
+
/**
|
|
243108
|
+
* Add a polygon to the evolving facets.
|
|
243109
|
+
* * Add points to the polyface.
|
|
243110
|
+
* * Indices are added (in reverse order if indicated by the builder state).
|
|
243111
|
+
* @param points array of points. This may contain extra points not to be used in the polygon.
|
|
243097
243112
|
* @param numPointsToUse number of points to use.
|
|
243098
243113
|
*/
|
|
243099
243114
|
addPolygon(points, numPointsToUse) {
|
|
243100
|
-
// don't use trailing points that match start point
|
|
243115
|
+
// don't use trailing points that match start point
|
|
243101
243116
|
if (numPointsToUse === undefined)
|
|
243102
243117
|
numPointsToUse = points.length;
|
|
243103
243118
|
while (numPointsToUse > 1 && points[numPointsToUse - 1].isAlmostEqual(points[0]))
|
|
@@ -243117,23 +243132,23 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243117
243132
|
}
|
|
243118
243133
|
this._polyface.terminateFacet();
|
|
243119
243134
|
}
|
|
243120
|
-
/**
|
|
243121
|
-
*
|
|
243135
|
+
/**
|
|
243136
|
+
* Add a polygon to the evolving facets.
|
|
243122
243137
|
* * Add points to the polyface
|
|
243123
|
-
* *
|
|
243138
|
+
* * Indices are added (in reverse order if indicated by the builder state).
|
|
243124
243139
|
* * Arrays with 2 or fewer points are ignored.
|
|
243125
243140
|
* @param points array of points. Trailing closure points are ignored.
|
|
243126
243141
|
*/
|
|
243127
243142
|
addPolygonGrowableXYZArray(points) {
|
|
243128
|
-
// don't use trailing points that match start point
|
|
243143
|
+
// don't use trailing points that match start point
|
|
243129
243144
|
let numPointsToUse = points.length;
|
|
243130
243145
|
while (numPointsToUse > 2 && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(points.distanceIndexIndex(0, numPointsToUse - 1)))
|
|
243131
243146
|
numPointsToUse--;
|
|
243132
243147
|
// strip trailing duplicates
|
|
243133
243148
|
while (numPointsToUse > 2 && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(points.distanceIndexIndex(numPointsToUse - 2, numPointsToUse - 1)))
|
|
243134
243149
|
numPointsToUse--;
|
|
243135
|
-
// ignore triangles for which the height is less than smallMetricDistance times length
|
|
243136
|
-
// sum of edge lengths is twice the perimeter.
|
|
243150
|
+
// ignore triangles for which the height is less than smallMetricDistance times length.
|
|
243151
|
+
// sum of edge lengths is twice the perimeter. If it is flat that's twice the largest base dimension.
|
|
243137
243152
|
// cross product magnitude is twice the area.
|
|
243138
243153
|
if (numPointsToUse === 3) {
|
|
243139
243154
|
const cross = points.crossProductIndexIndexIndex(0, 1, 2);
|
|
@@ -243159,19 +243174,20 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243159
243174
|
this._polyface.terminateFacet();
|
|
243160
243175
|
}
|
|
243161
243176
|
}
|
|
243162
|
-
/**
|
|
243163
|
-
*
|
|
243164
|
-
* *
|
|
243165
|
-
* *
|
|
243166
|
-
* *
|
|
243167
|
-
*
|
|
243168
|
-
* @param
|
|
243169
|
-
* @param
|
|
243170
|
-
* @param
|
|
243171
|
-
* @param
|
|
243177
|
+
/**
|
|
243178
|
+
* Add a polygon to the evolving facets.
|
|
243179
|
+
* * Add points to the polyface.
|
|
243180
|
+
* * Compute each point index as the point is added.
|
|
243181
|
+
* * All data arrays are parallel to the point array.
|
|
243182
|
+
* * Point indices are added in reverse order if indicated by the builder state.
|
|
243183
|
+
* @param points array of vertices in order around the facet.
|
|
243184
|
+
* @param normals (optional) array of normals, one per vertex.
|
|
243185
|
+
* @param params (optional) array of uv-parameters, one per vertex.
|
|
243186
|
+
* @param colors (optional) array of colors, one per vertex.
|
|
243187
|
+
* @param edgeVisible (optional) array of flags, one per vertex, true iff edge starting at corresponding vertex is visible.
|
|
243172
243188
|
*/
|
|
243173
243189
|
addFacetFromGrowableArrays(points, normals, params, colors, edgeVisible) {
|
|
243174
|
-
// don't use trailing points that match start point
|
|
243190
|
+
// don't use trailing points that match start point
|
|
243175
243191
|
let numPointsToUse = points.length;
|
|
243176
243192
|
while (numPointsToUse > 1 && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(points.distanceIndexIndex(0, numPointsToUse - 1)))
|
|
243177
243193
|
numPointsToUse--;
|
|
@@ -243222,13 +243238,14 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243222
243238
|
}
|
|
243223
243239
|
this._polyface.terminateFacet();
|
|
243224
243240
|
}
|
|
243225
|
-
/**
|
|
243226
|
-
*
|
|
243241
|
+
/**
|
|
243242
|
+
* Add the current visitor facet to the evolving polyface.
|
|
243243
|
+
* * Indices are added (in reverse order if indicated by the builder state).
|
|
243227
243244
|
*/
|
|
243228
243245
|
addFacetFromVisitor(visitor) {
|
|
243229
243246
|
this.addFacetFromGrowableArrays(visitor.point, visitor.normal, visitor.param, visitor.color, visitor.edgeVisible);
|
|
243230
243247
|
}
|
|
243231
|
-
/** Add all visitor facets to the evolving polyface (in reverse order if indicated by the builder state) */
|
|
243248
|
+
/** Add all visitor facets to the evolving polyface (in reverse order if indicated by the builder state). */
|
|
243232
243249
|
addFacetsFromVisitor(visitor) {
|
|
243233
243250
|
visitor.reset();
|
|
243234
243251
|
for (; visitor.moveToNextFacet();)
|
|
@@ -243237,8 +243254,8 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243237
243254
|
/**
|
|
243238
243255
|
* Add the subset of visitor data indexed by the indices.
|
|
243239
243256
|
* * Ideally, the subset represents a sub-facet of the visited facet.
|
|
243240
|
-
* @param visitor data for the currently visited facet
|
|
243241
|
-
* @param indices local indices into the visitor data arrays
|
|
243257
|
+
* @param visitor data for the currently visited facet.
|
|
243258
|
+
* @param indices local indices into the visitor data arrays.
|
|
243242
243259
|
* @returns whether the data was added successfully. Encountering an invalid index returns false.
|
|
243243
243260
|
*/
|
|
243244
243261
|
addFacetFromIndexedVisitor(visitor, indices) {
|
|
@@ -243266,49 +243283,71 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243266
243283
|
this.addFacetFromGrowableArrays(xyz, normal, param, color, visible);
|
|
243267
243284
|
return true;
|
|
243268
243285
|
}
|
|
243269
|
-
/** Add a polyface
|
|
243286
|
+
/** Add a polyface with optional reverse and transform. */
|
|
243270
243287
|
addIndexedPolyface(source, reversed = false, transform) {
|
|
243271
243288
|
this._polyface.addIndexedPolyface(source, reversed, transform);
|
|
243272
243289
|
}
|
|
243273
243290
|
/**
|
|
243274
243291
|
* Produce a new FacetFaceData for all terminated facets since construction of the previous face.
|
|
243275
|
-
* Each facet number/index is mapped to the FacetFaceData through the faceToFaceData array.
|
|
243276
|
-
*
|
|
243292
|
+
* * Each facet number/index is mapped to the FacetFaceData through the faceToFaceData array.
|
|
243293
|
+
* @returns true if successful, and false otherwise.
|
|
243277
243294
|
*/
|
|
243278
243295
|
endFace() {
|
|
243279
243296
|
return this._polyface.setNewFaceData();
|
|
243280
243297
|
}
|
|
243281
|
-
/** Double dispatch handler for Cone */
|
|
243282
|
-
handleCone(g) {
|
|
243283
|
-
|
|
243284
|
-
|
|
243285
|
-
/** Double dispatch handler for
|
|
243286
|
-
|
|
243287
|
-
|
|
243288
|
-
|
|
243289
|
-
/** Double dispatch handler for
|
|
243290
|
-
|
|
243291
|
-
|
|
243292
|
-
|
|
243293
|
-
/** Double dispatch handler for
|
|
243294
|
-
|
|
243295
|
-
|
|
243296
|
-
|
|
243297
|
-
/** Double dispatch handler for
|
|
243298
|
-
|
|
243299
|
-
|
|
243300
|
-
|
|
243301
|
-
/**
|
|
243302
|
-
|
|
243298
|
+
/** Double dispatch handler for Cone. */
|
|
243299
|
+
handleCone(g) {
|
|
243300
|
+
return this.addCone(g);
|
|
243301
|
+
}
|
|
243302
|
+
/** Double dispatch handler for TorusPipe. */
|
|
243303
|
+
handleTorusPipe(g) {
|
|
243304
|
+
return this.addTorusPipe(g);
|
|
243305
|
+
}
|
|
243306
|
+
/** Double dispatch handler for Sphere. */
|
|
243307
|
+
handleSphere(g) {
|
|
243308
|
+
return this.addSphere(g);
|
|
243309
|
+
}
|
|
243310
|
+
/** Double dispatch handler for Box. */
|
|
243311
|
+
handleBox(g) {
|
|
243312
|
+
return this.addBox(g);
|
|
243313
|
+
}
|
|
243314
|
+
/** Double dispatch handler for LinearSweep. */
|
|
243315
|
+
handleLinearSweep(g) {
|
|
243316
|
+
return this.addLinearSweep(g);
|
|
243317
|
+
}
|
|
243318
|
+
/** Double dispatch handler for RotationalSweep. */
|
|
243319
|
+
handleRotationalSweep(g) {
|
|
243320
|
+
return this.addRotationalSweep(g);
|
|
243321
|
+
}
|
|
243322
|
+
/** Double dispatch handler for RuledSweep. */
|
|
243323
|
+
handleRuledSweep(g) {
|
|
243324
|
+
return this.addRuledSweep(g);
|
|
243325
|
+
}
|
|
243326
|
+
/** Double dispatch handler for Loop. */
|
|
243327
|
+
handleLoop(g) {
|
|
243328
|
+
return this.addTriangulatedRegion(g);
|
|
243329
|
+
}
|
|
243330
|
+
/** Double dispatch handler for ParityRegion. */
|
|
243331
|
+
handleParityRegion(g) {
|
|
243332
|
+
return this.addTriangulatedRegion(g);
|
|
243333
|
+
}
|
|
243334
|
+
/** Double dispatch handler for UnionRegion. */
|
|
243335
|
+
handleUnionRegion(g) {
|
|
243336
|
+
return this.addTriangulatedRegion(g);
|
|
243337
|
+
}
|
|
243338
|
+
/** Add facets for a GeometryQuery object. This is double dispatch through `dispatchToGeometryHandler(this)` */
|
|
243339
|
+
addGeometryQuery(g) {
|
|
243340
|
+
g.dispatchToGeometryHandler(this);
|
|
243341
|
+
}
|
|
243303
243342
|
/**
|
|
243304
243343
|
* Add a graph to the builder.
|
|
243305
|
-
* * Visit one node per face
|
|
243306
|
-
* * If `acceptFaceFunction(node)` returns true, pass face coordinates to the builder
|
|
243344
|
+
* * Visit one node per face.
|
|
243345
|
+
* * If `acceptFaceFunction(node)` returns true, pass face coordinates to the builder.
|
|
243307
243346
|
* * Accepted face edge visibility is determined by `isEdgeVisibleFunction`.
|
|
243308
243347
|
* * Rely on the builder's compress step to find common vertex coordinates.
|
|
243309
|
-
* @param graph faces to add as facets
|
|
243310
|
-
* @param acceptFaceFunction optional test for whether to add a given face. Default: ignore exterior faces
|
|
243311
|
-
* @param isEdgeVisibleFunction optional test for whether to hide an edge. Default: hide interior edges
|
|
243348
|
+
* @param graph faces to add as facets.
|
|
243349
|
+
* @param acceptFaceFunction optional test for whether to add a given face. Default: ignore exterior faces.
|
|
243350
|
+
* @param isEdgeVisibleFunction optional test for whether to hide an edge. Default: hide interior edges.
|
|
243312
243351
|
* @internal
|
|
243313
243352
|
*/
|
|
243314
243353
|
addGraph(graph, acceptFaceFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior(node), isEdgeVisibleFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testMateMaskExterior(node)) {
|
|
@@ -243339,12 +243378,12 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243339
243378
|
});
|
|
243340
243379
|
}
|
|
243341
243380
|
/**
|
|
243342
|
-
*
|
|
243343
|
-
* * For each node in `faces
|
|
243344
|
-
* *
|
|
243345
|
-
* *
|
|
243346
|
-
* * (
|
|
243347
|
-
* *
|
|
243381
|
+
* Add a graph's faces to the builder.
|
|
243382
|
+
* * For each node in `faces`:
|
|
243383
|
+
* * Add all of its vertices to the polyface.
|
|
243384
|
+
* * Add point indices to form a new facet.
|
|
243385
|
+
* * (note: no normal or param indices are added)
|
|
243386
|
+
* * Terminate the facet.
|
|
243348
243387
|
* @internal
|
|
243349
243388
|
*/
|
|
243350
243389
|
addGraphFaces(faces) {
|
|
@@ -243362,9 +243401,10 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243362
243401
|
/**
|
|
243363
243402
|
* Create a polyface containing the faces of a HalfEdgeGraph, with test functions to filter faces and hide edges.
|
|
243364
243403
|
* * This is a static wrapper of [[addGraph]].
|
|
243365
|
-
* @param graph faces to add as facets
|
|
243366
|
-
* @param
|
|
243367
|
-
* @param
|
|
243404
|
+
* @param graph faces to add as facets.
|
|
243405
|
+
* @param options (optional) options for the polyface.
|
|
243406
|
+
* @param acceptFaceFunction optional test for whether to add a given face. Default: ignore exterior faces.
|
|
243407
|
+
* @param isEdgeVisibleFunction optional test for whether to hide an edge. Default: hide interior edges.
|
|
243368
243408
|
* @internal
|
|
243369
243409
|
*/
|
|
243370
243410
|
static graphToPolyface(graph, options, acceptFaceFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior(node), isEdgeVisibleFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testMateMaskExterior(node)) {
|
|
@@ -243373,7 +243413,8 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243373
243413
|
builder.endFace();
|
|
243374
243414
|
return builder.claimPolyface();
|
|
243375
243415
|
}
|
|
243376
|
-
/**
|
|
243416
|
+
/**
|
|
243417
|
+
* Create a polyface containing the faces of a HalfEdgeGraph that are specified by the HalfEdge array.
|
|
243377
243418
|
* @internal
|
|
243378
243419
|
*/
|
|
243379
243420
|
static graphFacesToPolyface(faces) {
|
|
@@ -243382,7 +243423,8 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243382
243423
|
builder.endFace();
|
|
243383
243424
|
return builder.claimPolyface();
|
|
243384
243425
|
}
|
|
243385
|
-
/**
|
|
243426
|
+
/**
|
|
243427
|
+
* Create a polyface containing triangles in a (space) polygon.
|
|
243386
243428
|
* * The polyface contains only coordinate data (no params or normals).
|
|
243387
243429
|
*/
|
|
243388
243430
|
static polygonToTriangulatedPolyface(points, localToWorld) {
|
|
@@ -243403,13 +243445,13 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243403
243445
|
return undefined;
|
|
243404
243446
|
}
|
|
243405
243447
|
/**
|
|
243406
|
-
*
|
|
243407
|
-
* * pointArray[i] is an array of 3 or 4 points
|
|
243408
|
-
* * paramArray[i] is an array of matching number of params
|
|
243448
|
+
* Add facets to the builder given arrays of coordinates for multiple facets.
|
|
243449
|
+
* * pointArray[i] is an array of 3 or 4 points.
|
|
243450
|
+
* * paramArray[i] is an array of matching number of params.
|
|
243409
243451
|
* * normalArray[i] is an array of matching number of normals.
|
|
243410
|
-
* @param pointArray array of arrays of point coordinates
|
|
243411
|
-
* @param paramArray array of arrays of uv parameters
|
|
243412
|
-
* @param normalArray array of arrays of normals
|
|
243452
|
+
* @param pointArray array of arrays of point coordinates.
|
|
243453
|
+
* @param paramArray (optional) array of arrays of uv parameters.
|
|
243454
|
+
* @param normalArray (optional) array of arrays of normals.
|
|
243413
243455
|
* @param endFace if true, call this.endFace after adding all the facets.
|
|
243414
243456
|
*/
|
|
243415
243457
|
addCoordinateFacets(pointArray, paramArray, normalArray, endFace = false) {
|
|
@@ -243425,15 +243467,16 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243425
243467
|
this.endFace();
|
|
243426
243468
|
}
|
|
243427
243469
|
/**
|
|
243470
|
+
* Add facets from the parametric surface.
|
|
243428
243471
|
* * Evaluate `(numU + 1) * (numV + 1)` grid points (in 0..1 in both u and v) on a surface.
|
|
243429
243472
|
* * Add the facets for `numU * numV` quads.
|
|
243430
243473
|
* * uv params are the 0..1 fractions.
|
|
243431
|
-
* *
|
|
243432
|
-
* @param surface
|
|
243433
|
-
* @param numU number of intervals (edges) in the u direction
|
|
243434
|
-
* @param numV number of intervals (edges) in the v direction
|
|
243435
|
-
* @param uMap optional mapping from u fraction to parameter space (such as texture)
|
|
243436
|
-
* @param vMap optional mapping from v fraction to parameter space (such as texture)
|
|
243474
|
+
* * Normals are cross products of u and v direction partial derivatives.
|
|
243475
|
+
* @param surface UV surface to evaluate.
|
|
243476
|
+
* @param numU number of intervals (edges) in the u direction (number of points is `numU + 1`).
|
|
243477
|
+
* @param numV number of intervals (edges) in the v direction (number of points is `numV + 1`).
|
|
243478
|
+
* @param uMap optional mapping from u fraction to parameter space (such as texture).
|
|
243479
|
+
* @param vMap optional mapping from v fraction to parameter space (such as texture).
|
|
243437
243480
|
*/
|
|
243438
243481
|
addUVGridBody(surface, numU, numV, uMap, vMap) {
|
|
243439
243482
|
let xyzIndex0 = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_27__.GrowableFloat64Array(numU);
|
|
@@ -243462,7 +243505,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243462
243505
|
const dv = 1.0 / numV;
|
|
243463
243506
|
const plane = _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_28__.Plane3dByOriginAndVectors.createXYPlane();
|
|
243464
243507
|
for (let v = 0; v <= numV; v++) {
|
|
243465
|
-
// evaluate new points
|
|
243508
|
+
// evaluate new points
|
|
243466
243509
|
xyzIndex1.clear();
|
|
243467
243510
|
if (needNormals)
|
|
243468
243511
|
normalIndex1.clear();
|
|
@@ -243512,23 +243555,26 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243512
243555
|
indexSwap = xyzIndex1;
|
|
243513
243556
|
xyzIndex1 = xyzIndex0;
|
|
243514
243557
|
xyzIndex0 = indexSwap;
|
|
243515
|
-
if (needParams)
|
|
243558
|
+
if (needParams)
|
|
243516
243559
|
indexSwap = paramIndex1;
|
|
243517
|
-
|
|
243518
|
-
|
|
243519
|
-
|
|
243520
|
-
if (needNormals) {
|
|
243560
|
+
paramIndex1 = paramIndex0;
|
|
243561
|
+
paramIndex0 = indexSwap;
|
|
243562
|
+
if (needNormals)
|
|
243521
243563
|
indexSwap = normalIndex1;
|
|
243522
|
-
|
|
243523
|
-
|
|
243524
|
-
}
|
|
243564
|
+
normalIndex1 = normalIndex0;
|
|
243565
|
+
normalIndex0 = indexSwap;
|
|
243525
243566
|
}
|
|
243526
243567
|
xyzIndex0.clear();
|
|
243527
243568
|
xyzIndex1.clear();
|
|
243528
243569
|
}
|
|
243529
243570
|
/**
|
|
243530
|
-
*
|
|
243531
|
-
*
|
|
243571
|
+
* Create a polyface from a triangulation of the points.
|
|
243572
|
+
* * The triangulation is computed as seen in the top view: z-coordinates are ignored.
|
|
243573
|
+
* @param points an array of points.
|
|
243574
|
+
* @param options (optional) stroke options. Currently only two options are supported. If `options.needNormals` is
|
|
243575
|
+
* true, all facets are assigned the single normal 001. If `options.needParams` is true, all facet vertices are
|
|
243576
|
+
* assigned uv-parameters equal to their xy-coordinates. These options are rarely useful.
|
|
243577
|
+
* @returns triangulated polyface or `undefined` if triangulation was not possible.
|
|
243532
243578
|
*/
|
|
243533
243579
|
static pointsToTriangulatedPolyface(points, options) {
|
|
243534
243580
|
const graph = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_26__.Triangulator.createTriangulatedGraphFromPoints(points);
|
|
@@ -243536,21 +243582,20 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243536
243582
|
return PolyfaceBuilder.graphToPolyface(graph, options);
|
|
243537
243583
|
return undefined;
|
|
243538
243584
|
}
|
|
243539
|
-
/**
|
|
243540
|
-
*
|
|
243585
|
+
/**
|
|
243586
|
+
* Add triangular facets between two linestrings.
|
|
243587
|
+
* * Each triangle will have 1 vertex on one of the linestrings and 2 on the other.
|
|
243541
243588
|
* * Choice of triangles is heuristic, hence does not have a unique solution.
|
|
243542
|
-
* * Logic
|
|
243543
|
-
* * Make near-coplanar facets
|
|
243544
|
-
* *
|
|
243589
|
+
* * Logic for choosing among the various possible triangles prefers:
|
|
243590
|
+
* * Make near-coplanar facets.
|
|
243591
|
+
* * Make facets with good aspect ratio.
|
|
243545
243592
|
* * This is exercised with a limited number of lookahead points, i.e. greedy to make first-available decision.
|
|
243546
243593
|
* @param pointsA points of first linestring.
|
|
243547
243594
|
* @param pointsB points of second linestring.
|
|
243548
243595
|
*/
|
|
243549
243596
|
addGreedyTriangulationBetweenLineStrings(pointsA, pointsB) {
|
|
243550
243597
|
const context = _GreedyTriangulationBetweenLineStrings__WEBPACK_IMPORTED_MODULE_29__.GreedyTriangulationBetweenLineStrings.createContext();
|
|
243551
|
-
context.emitTriangles(resolveToIndexedXYZCollectionOrCarrier(pointsA), resolveToIndexedXYZCollectionOrCarrier(pointsB), (triangle) => {
|
|
243552
|
-
this.addTriangleFacet(triangle.points);
|
|
243553
|
-
});
|
|
243598
|
+
context.emitTriangles(resolveToIndexedXYZCollectionOrCarrier(pointsA), resolveToIndexedXYZCollectionOrCarrier(pointsB), (triangle) => { this.addTriangleFacet(triangle.points); });
|
|
243554
243599
|
}
|
|
243555
243600
|
addMiteredPipesFromPoints(centerline, sectionData, numFacetAround = 12) {
|
|
243556
243601
|
const sections = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_30__.CurveFactory.createMiteredPipeSections(centerline, sectionData);
|
|
@@ -243575,13 +243620,14 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243575
243620
|
}
|
|
243576
243621
|
}
|
|
243577
243622
|
/**
|
|
243578
|
-
*
|
|
243579
|
-
* * Circular or elliptical pipe cross sections can be specified by supplying either a radius, a pair of semi-axis
|
|
243623
|
+
* Add quad facets along a mitered pipe that follows a centerline curve.
|
|
243624
|
+
* * Circular or elliptical pipe cross sections can be specified by supplying either a radius, a pair of semi-axis
|
|
243625
|
+
* lengths, or a full Arc3d:
|
|
243580
243626
|
* * For semi-axis length input, x corresponds to an ellipse local axis nominally situated parallel to the xy-plane.
|
|
243581
|
-
* *
|
|
243627
|
+
* * For Arc3d input, the center is translated to the centerline start point to act as initial cross section.
|
|
243582
243628
|
* @param centerline centerline of pipe. If curved, it will be stroked using the builder's StrokeOptions.
|
|
243583
|
-
* @param sectionData circle radius, ellipse semi-axis lengths, or full Arc3d
|
|
243584
|
-
* @param numFacetAround how many equal parameter-space chords around each section
|
|
243629
|
+
* @param sectionData circle radius, ellipse semi-axis lengths, or full Arc3d.
|
|
243630
|
+
* @param numFacetAround how many equal parameter-space chords around each section.
|
|
243585
243631
|
*/
|
|
243586
243632
|
addMiteredPipes(centerline, sectionData, numFacetAround = 12) {
|
|
243587
243633
|
if (Array.isArray(centerline)) {
|
|
@@ -243602,7 +243648,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243602
243648
|
this.addMiteredPipesFromPoints(linestring.packedPoints, sectionData, numFacetAround);
|
|
243603
243649
|
}
|
|
243604
243650
|
}
|
|
243605
|
-
/** Return the polyface index array indices corresponding to the given edge, or undefined if error. */
|
|
243651
|
+
/** Return the polyface index array indices corresponding to the given edge, or `undefined` if error. */
|
|
243606
243652
|
getEdgeIndices(edge) {
|
|
243607
243653
|
let indexA = -1;
|
|
243608
243654
|
let indexB = -1;
|
|
@@ -243614,8 +243660,10 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243614
243660
|
}
|
|
243615
243661
|
return (indexA < 0 || indexB < 0) ? undefined : { edgeIndexA: indexA, edgeIndexB: indexB };
|
|
243616
243662
|
}
|
|
243617
|
-
/**
|
|
243618
|
-
*
|
|
243663
|
+
/**
|
|
243664
|
+
* Create a side face between base and swept facets along a base boundary edge.
|
|
243665
|
+
* * Assumes numBaseFacets base facets were added to this builder, immediately followed by the same number of swept
|
|
243666
|
+
* facets with opposite orientation (first index not preserved).
|
|
243619
243667
|
*/
|
|
243620
243668
|
addSweptFace(baseBoundaryEdge, numBaseFacets) {
|
|
243621
243669
|
const edge = this.getEdgeIndices(baseBoundaryEdge);
|
|
@@ -243634,7 +243682,12 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243634
243682
|
const edgeIndexOffsetInFaceLoopB = edge.edgeIndexB - baseFacetIndexStart;
|
|
243635
243683
|
const sweptEdgeIndexOffsetInFaceLoopA = (numBaseFacetEdges - 1) - edgeIndexOffsetInFaceLoopA;
|
|
243636
243684
|
const sweptEdgeIndexOffsetInFaceLoopB = (numBaseFacetEdges - 1) - edgeIndexOffsetInFaceLoopB;
|
|
243637
|
-
const indices = [
|
|
243685
|
+
const indices = [
|
|
243686
|
+
edge.edgeIndexB,
|
|
243687
|
+
edge.edgeIndexA,
|
|
243688
|
+
sweptFacetIndexStart + sweptEdgeIndexOffsetInFaceLoopA,
|
|
243689
|
+
sweptFacetIndexStart + sweptEdgeIndexOffsetInFaceLoopB,
|
|
243690
|
+
];
|
|
243638
243691
|
const vertices = [];
|
|
243639
243692
|
let colors; // try to re-use colors; missing normals and params will be computed if needed
|
|
243640
243693
|
if (undefined !== this.options.needColors && undefined !== this._polyface.data.color && undefined !== this._polyface.data.colorIndex)
|
|
@@ -243655,11 +243708,13 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
243655
243708
|
return true;
|
|
243656
243709
|
}
|
|
243657
243710
|
/**
|
|
243658
|
-
* Add facets from the source polyface, from its translation along the vector, and from its swept boundary edges,
|
|
243659
|
-
*
|
|
243660
|
-
* @param
|
|
243661
|
-
* @param
|
|
243662
|
-
* @
|
|
243711
|
+
* Add facets from the source polyface, from its translation along the vector, and from its swept boundary edges,
|
|
243712
|
+
* to form a polyface that encloses a volume.
|
|
243713
|
+
* @param source the surface mesh to sweep.
|
|
243714
|
+
* @param sweepVector the direction and length to sweep the surface mesh.
|
|
243715
|
+
* @param triangulateSides whether to triangulate side facets, or leave as quads.
|
|
243716
|
+
* @returns whether the added facets comprise a simple sweep. If false, the resulting mesh may have self-intersections,
|
|
243717
|
+
* be non-manifold, have inconsistently oriented facets, etc.
|
|
243663
243718
|
*/
|
|
243664
243719
|
addSweptIndexedPolyface(source, sweepVector, triangulateSides = false) {
|
|
243665
243720
|
let isSimpleSweep = true;
|
|
@@ -291225,7 +291280,7 @@ class TestContext {
|
|
|
291225
291280
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
291226
291281
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
291227
291282
|
await core_frontend_1.NoRenderApp.startup({
|
|
291228
|
-
applicationVersion: "4.8.0-dev.
|
|
291283
|
+
applicationVersion: "4.8.0-dev.23",
|
|
291229
291284
|
applicationId: this.settings.gprid,
|
|
291230
291285
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
291231
291286
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -294166,6 +294221,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
294166
294221
|
|
|
294167
294222
|
|
|
294168
294223
|
|
|
294224
|
+
const NESTED_CONTENT_DESCRIPTION_SYMBOL = Symbol();
|
|
294169
294225
|
/**
|
|
294170
294226
|
* An utility for traversing field hierarchy. Stops traversal as soon as `cb` returns `false`.
|
|
294171
294227
|
* @public
|
|
@@ -294335,7 +294391,8 @@ function traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedField
|
|
|
294335
294391
|
}
|
|
294336
294392
|
function traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValues, displayValues) {
|
|
294337
294393
|
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(valueType.valueFormat === _TypeDescription__WEBPACK_IMPORTED_MODULE_4__.PropertyValueFormat.Struct);
|
|
294338
|
-
|
|
294394
|
+
const description = rawValues[NESTED_CONTENT_DESCRIPTION_SYMBOL];
|
|
294395
|
+
if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues, description })) {
|
|
294339
294396
|
return;
|
|
294340
294397
|
}
|
|
294341
294398
|
try {
|
|
@@ -294570,6 +294627,7 @@ function convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy,
|
|
|
294570
294627
|
const values = { ...ncv.values };
|
|
294571
294628
|
const displayValues = { ...ncv.displayValues };
|
|
294572
294629
|
const mergedFieldNames = [...ncv.mergedFieldNames];
|
|
294630
|
+
values[NESTED_CONTENT_DESCRIPTION_SYMBOL] = ncv.label;
|
|
294573
294631
|
fieldHierarchy.childFields.forEach((childFieldHierarchy) => {
|
|
294574
294632
|
const childFieldName = childFieldHierarchy.field.name;
|
|
294575
294633
|
if (-1 !== ncv.mergedFieldNames.indexOf(childFieldName)) {
|
|
@@ -299462,13 +299520,13 @@ class FavoritePropertiesManager {
|
|
|
299462
299520
|
if (missingClasses.size === 0) {
|
|
299463
299521
|
return baseClasses;
|
|
299464
299522
|
}
|
|
299465
|
-
const query = `
|
|
299466
|
-
SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
|
|
299467
|
-
FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
|
|
299468
|
-
INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
|
|
299469
|
-
INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
|
|
299470
|
-
INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
|
|
299471
|
-
INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
|
|
299523
|
+
const query = `
|
|
299524
|
+
SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
|
|
299525
|
+
FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
|
|
299526
|
+
INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
|
|
299527
|
+
INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
|
|
299528
|
+
INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
|
|
299529
|
+
INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
|
|
299472
299530
|
WHERE (derivedSchema.Name || ':' || derivedClass.Name) IN (${[...missingClasses].map((className) => `'${className}'`).join(",")})`;
|
|
299473
299531
|
const reader = imodel.createQueryReader(query, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames });
|
|
299474
299532
|
while (await reader.step()) {
|
|
@@ -315218,7 +315276,7 @@ function __disposeResources(env) {
|
|
|
315218
315276
|
/***/ ((module) => {
|
|
315219
315277
|
|
|
315220
315278
|
"use strict";
|
|
315221
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.8.0-dev.
|
|
315279
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.8.0-dev.23","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.8.0-dev.23","@itwin/core-bentley":"workspace:^4.8.0-dev.23","@itwin/core-common":"workspace:^4.8.0-dev.23","@itwin/core-geometry":"workspace:^4.8.0-dev.23","@itwin/core-orbitgt":"workspace:^4.8.0-dev.23","@itwin/core-quantity":"workspace:^4.8.0-dev.23"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"^4.0.2","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.2","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7.1.1","cpx2":"^3.0.0","eslint":"^8.56.0","glob":"^10.3.12","mocha":"^10.2.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^17.0.1","source-map-loader":"^4.0.0","typescript":"~5.3.3","typemoq":"^2.1.0","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.2.2","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
|
|
315222
315280
|
|
|
315223
315281
|
/***/ }),
|
|
315224
315282
|
|