@itwin/ecschema-rpcinterface-tests 4.3.0-dev.14 → 4.3.0-dev.16
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/bundled-tests.js +201 -91
- 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_4_14_node_modules_loaders_gl_draco_d-aa4ff5.bundled-tests.js.map +1 -1
- package/package.json +16 -16
|
@@ -76594,8 +76594,11 @@ class SectionAttachmentInfo {
|
|
|
76594
76594
|
displaySpatialView: this._displaySpatialView,
|
|
76595
76595
|
};
|
|
76596
76596
|
}
|
|
76597
|
-
clone() {
|
|
76598
|
-
|
|
76597
|
+
clone(iModel) {
|
|
76598
|
+
let spatialView = this._spatialView;
|
|
76599
|
+
if (spatialView instanceof _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewState3d)
|
|
76600
|
+
spatialView = spatialView.clone(iModel);
|
|
76601
|
+
return new SectionAttachmentInfo(spatialView, this._drawingToSpatialTransform, this._displaySpatialView);
|
|
76599
76602
|
}
|
|
76600
76603
|
preload(options) {
|
|
76601
76604
|
if (!this.wantDisplayed)
|
|
@@ -76789,7 +76792,7 @@ class DrawingViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewStat
|
|
|
76789
76792
|
if (categories instanceof DrawingViewState) {
|
|
76790
76793
|
this._viewedExtents = categories._viewedExtents.clone();
|
|
76791
76794
|
this._modelLimits = { ...categories._modelLimits };
|
|
76792
|
-
this._attachmentInfo = categories._attachmentInfo.clone();
|
|
76795
|
+
this._attachmentInfo = categories._attachmentInfo.clone(iModel);
|
|
76793
76796
|
}
|
|
76794
76797
|
else {
|
|
76795
76798
|
this._viewedExtents = extents;
|
|
@@ -85275,6 +85278,7 @@ class SheetBorder {
|
|
|
85275
85278
|
* SheetViewState.load(). The Attachments object is created in SheetViewState.attachToViewport and disposed of in SheetViewState.detachFromViewport.
|
|
85276
85279
|
*/
|
|
85277
85280
|
class ViewAttachmentsInfo {
|
|
85281
|
+
get attachments() { return this._attachments; }
|
|
85278
85282
|
constructor(attachments) {
|
|
85279
85283
|
this._attachments = attachments;
|
|
85280
85284
|
}
|
|
@@ -85298,9 +85302,19 @@ class ViewAttachmentsInfo {
|
|
|
85298
85302
|
toJSON() {
|
|
85299
85303
|
return this.isLoaded ? this._props.map((x) => x.id) : [...this._ids];
|
|
85300
85304
|
}
|
|
85301
|
-
clone() {
|
|
85302
|
-
|
|
85303
|
-
|
|
85305
|
+
clone(iModel) {
|
|
85306
|
+
let attachments = this._attachments;
|
|
85307
|
+
if (this.isLoaded) {
|
|
85308
|
+
// Need to clone the attached ViewStates.
|
|
85309
|
+
attachments = attachments.map((attachment) => {
|
|
85310
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof attachment !== "string");
|
|
85311
|
+
return {
|
|
85312
|
+
...attachment,
|
|
85313
|
+
attachedView: attachment.attachedView.clone(iModel),
|
|
85314
|
+
};
|
|
85315
|
+
});
|
|
85316
|
+
}
|
|
85317
|
+
return new ViewAttachmentsInfo(attachments);
|
|
85304
85318
|
}
|
|
85305
85319
|
preload(options) {
|
|
85306
85320
|
if (this.isLoaded)
|
|
@@ -85463,7 +85477,16 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_13__.ViewState2
|
|
|
85463
85477
|
}
|
|
85464
85478
|
/** Strictly for testing. @internal */
|
|
85465
85479
|
get viewAttachmentProps() {
|
|
85466
|
-
return this._attachmentsInfo.viewAttachmentProps
|
|
85480
|
+
return this._attachmentsInfo.viewAttachmentProps.map((x) => {
|
|
85481
|
+
return {
|
|
85482
|
+
...x,
|
|
85483
|
+
attachedView: undefined,
|
|
85484
|
+
};
|
|
85485
|
+
});
|
|
85486
|
+
}
|
|
85487
|
+
/** Strictly for testing. @internal */
|
|
85488
|
+
get viewAttachmentInfos() {
|
|
85489
|
+
return this._attachmentsInfo.attachments;
|
|
85467
85490
|
}
|
|
85468
85491
|
/** Strictly for testing. @internal */
|
|
85469
85492
|
get attachments() {
|
|
@@ -85478,7 +85501,7 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_13__.ViewState2
|
|
|
85478
85501
|
if (categories instanceof SheetViewState) {
|
|
85479
85502
|
// we are coming from clone...
|
|
85480
85503
|
this.sheetSize = categories.sheetSize.clone();
|
|
85481
|
-
this._attachmentsInfo = categories._attachmentsInfo.clone();
|
|
85504
|
+
this._attachmentsInfo = categories._attachmentsInfo.clone(iModel);
|
|
85482
85505
|
this._viewedExtents = categories._viewedExtents.clone();
|
|
85483
85506
|
}
|
|
85484
85507
|
else {
|
|
@@ -86081,6 +86104,7 @@ class SpatialViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_6__.ViewState
|
|
|
86081
86104
|
this.registerModelSelectorListeners();
|
|
86082
86105
|
this.onViewedModelsChanged.raiseEvent();
|
|
86083
86106
|
}
|
|
86107
|
+
this.markModelSelectorChanged();
|
|
86084
86108
|
}
|
|
86085
86109
|
/** Create a new *blank* SpatialViewState. The returned SpatialViewState will nave non-persistent empty [[CategorySelectorState]] and [[ModelSelectorState]],
|
|
86086
86110
|
* and a non-persistent [[DisplayStyle3dState]] with default values for all of its components. Generally after creating a blank SpatialViewState,
|
|
@@ -148453,7 +148477,7 @@ class ArcGisUtilities {
|
|
|
148453
148477
|
// and return information needed to initiate the authentification process... the end-user
|
|
148454
148478
|
// will have to provide his credentials before we can fully validate this source.
|
|
148455
148479
|
if (json.error.code === ArcGisErrorCode.TokenRequired) {
|
|
148456
|
-
return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
|
|
148480
|
+
return (userName || password) ? { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials } : { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
|
|
148457
148481
|
}
|
|
148458
148482
|
else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
|
|
148459
148483
|
return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials };
|
|
@@ -178724,28 +178748,31 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
178724
178748
|
/* harmony export */ ClipStepAction: () => (/* binding */ ClipStepAction),
|
|
178725
178749
|
/* harmony export */ ClipUtilities: () => (/* binding */ ClipUtilities)
|
|
178726
178750
|
/* harmony export */ });
|
|
178727
|
-
/* harmony import */ var
|
|
178728
|
-
/* harmony import */ var
|
|
178729
|
-
/* harmony import */ var
|
|
178730
|
-
/* harmony import */ var
|
|
178731
|
-
/* harmony import */ var
|
|
178732
|
-
/* harmony import */ var
|
|
178733
|
-
/* harmony import */ var
|
|
178734
|
-
/* harmony import */ var
|
|
178735
|
-
/* harmony import */ var
|
|
178736
|
-
/* harmony import */ var
|
|
178737
|
-
/* harmony import */ var
|
|
178738
|
-
/* harmony import */ var
|
|
178739
|
-
/* harmony import */ var
|
|
178740
|
-
/* harmony import */ var
|
|
178741
|
-
/* harmony import */ var
|
|
178742
|
-
/* harmony import */ var
|
|
178743
|
-
/* harmony import */ var
|
|
178744
|
-
/* harmony import */ var
|
|
178745
|
-
/* harmony import */ var
|
|
178746
|
-
/* harmony import */ var
|
|
178747
|
-
/* harmony import */ var
|
|
178748
|
-
/* harmony import */ var
|
|
178751
|
+
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
178752
|
+
/* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
|
|
178753
|
+
/* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
|
|
178754
|
+
/* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
|
|
178755
|
+
/* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
178756
|
+
/* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
178757
|
+
/* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
|
|
178758
|
+
/* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
|
|
178759
|
+
/* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
|
|
178760
|
+
/* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
|
|
178761
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
178762
|
+
/* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
|
|
178763
|
+
/* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
|
|
178764
|
+
/* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
|
|
178765
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
178766
|
+
/* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
|
|
178767
|
+
/* harmony import */ var _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/ReusableObjectCache */ "../../core/geometry/lib/esm/geometry3d/ReusableObjectCache.js");
|
|
178768
|
+
/* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
|
|
178769
|
+
/* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
|
|
178770
|
+
/* harmony import */ var _ClipPlane__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
|
|
178771
|
+
/* harmony import */ var _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
|
|
178772
|
+
/* harmony import */ var _ClipVector__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
|
|
178773
|
+
/* harmony import */ var _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
|
|
178774
|
+
/* harmony import */ var _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./internalContexts/LineStringOffsetClipperContext */ "../../core/geometry/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js");
|
|
178775
|
+
/* harmony import */ var _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
|
|
178749
178776
|
/*---------------------------------------------------------------------------------------------
|
|
178750
178777
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
178751
178778
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -178771,6 +178798,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
178771
178798
|
|
|
178772
178799
|
|
|
178773
178800
|
|
|
178801
|
+
|
|
178802
|
+
|
|
178803
|
+
|
|
178774
178804
|
|
|
178775
178805
|
|
|
178776
178806
|
|
|
@@ -178836,7 +178866,7 @@ class ClipUtilities {
|
|
|
178836
178866
|
const n = unsortedFractions.length;
|
|
178837
178867
|
for (let i = 1; i < n; i++) {
|
|
178838
178868
|
f1 = unsortedFractions.atUncheckedIndex(i);
|
|
178839
|
-
if (f1 > f0 +
|
|
178869
|
+
if (f1 > f0 + _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallFraction) {
|
|
178840
178870
|
fMid = 0.5 * (f0 + f1);
|
|
178841
178871
|
if (fMid >= 0.0 && fMid <= 1.0) {
|
|
178842
178872
|
curve.fractionToPoint(fMid, testPoint);
|
|
@@ -178893,7 +178923,7 @@ class ClipUtilities {
|
|
|
178893
178923
|
let result;
|
|
178894
178924
|
// Create "local region" which is the result of rotating region to make
|
|
178895
178925
|
// it parallel to the xy-plane and then translating it to the xy-plane.
|
|
178896
|
-
const localToWorld = ClipUtilities._workTransform =
|
|
178926
|
+
const localToWorld = ClipUtilities._workTransform = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_2__.FrameBuilder.createRightHandedFrame(undefined, region, ClipUtilities._workTransform);
|
|
178897
178927
|
if (!localToWorld)
|
|
178898
178928
|
return result;
|
|
178899
178929
|
const worldToLocal = localToWorld?.inverse();
|
|
@@ -178910,24 +178940,24 @@ class ClipUtilities {
|
|
|
178910
178940
|
const localRegionRange = ClipUtilities._workRange = localRegion.range();
|
|
178911
178941
|
const xLength = localRegionRange.xLength();
|
|
178912
178942
|
const yLength = localRegionRange.yLength();
|
|
178913
|
-
const rectangle =
|
|
178943
|
+
const rectangle = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createRectangleXY(localRegionRange.low, xLength, yLength, true);
|
|
178914
178944
|
rectangle.tryTransformInPlace(localToWorld);
|
|
178915
178945
|
// Clip the rectangle to produce fragment(s) which we can Boolean intersect with the input region.
|
|
178916
178946
|
const insideFragments = [];
|
|
178917
178947
|
const outsideFragments = [];
|
|
178918
|
-
const cache = new
|
|
178948
|
+
const cache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
|
|
178919
178949
|
clipper.appendPolygonClip?.(rectangle.packedPoints, insideFragments, outsideFragments, cache);
|
|
178920
178950
|
if (insideFragments.length === 0)
|
|
178921
178951
|
return result;
|
|
178922
178952
|
// Create the "clipped region".
|
|
178923
178953
|
for (const fragment of insideFragments) {
|
|
178924
|
-
const loop =
|
|
178954
|
+
const loop = _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(fragment);
|
|
178925
178955
|
loop.tryTransformInPlace(worldToLocal);
|
|
178926
|
-
const clippedLocalRegion =
|
|
178956
|
+
const clippedLocalRegion = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__.RegionOps.regionBooleanXY(localRegion, loop, _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__.RegionBinaryOpType.Intersection);
|
|
178927
178957
|
if (clippedLocalRegion) {
|
|
178928
178958
|
clippedLocalRegion.tryTransformInPlace(localToWorld);
|
|
178929
178959
|
if (!result)
|
|
178930
|
-
result = (clippedLocalRegion instanceof
|
|
178960
|
+
result = (clippedLocalRegion instanceof _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__.UnionRegion) ? clippedLocalRegion : _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__.UnionRegion.create(clippedLocalRegion);
|
|
178931
178961
|
else if (!result.tryAddChild(clippedLocalRegion))
|
|
178932
178962
|
result.children.push(...clippedLocalRegion.children);
|
|
178933
178963
|
}
|
|
@@ -178941,14 +178971,14 @@ class ClipUtilities {
|
|
|
178941
178971
|
* @return array of clipped components of the input curve or region that lie inside the clipper
|
|
178942
178972
|
*/
|
|
178943
178973
|
static clipAnyCurve(curve, clipper) {
|
|
178944
|
-
if (curve instanceof
|
|
178974
|
+
if (curve instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_8__.CurvePrimitive)
|
|
178945
178975
|
return ClipUtilities.collectClippedCurves(curve, clipper);
|
|
178946
178976
|
if (curve.isAnyRegion()) {
|
|
178947
178977
|
const ret = ClipUtilities.clipAnyRegion(curve, clipper);
|
|
178948
178978
|
return ret ? [ret] : [];
|
|
178949
178979
|
}
|
|
178950
178980
|
const result = [];
|
|
178951
|
-
if (curve instanceof
|
|
178981
|
+
if (curve instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_9__.Path || curve instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_10__.BagOfCurves) {
|
|
178952
178982
|
for (const child of curve.children) {
|
|
178953
178983
|
const partialClip = ClipUtilities.clipAnyCurve(child, clipper);
|
|
178954
178984
|
result.push(...partialClip);
|
|
@@ -178994,8 +179024,8 @@ class ClipUtilities {
|
|
|
178994
179024
|
for (const plane of convexSet.planes) {
|
|
178995
179025
|
let numInside = 0, numOutside = 0;
|
|
178996
179026
|
const planeDistance = plane.distance - tolerance;
|
|
178997
|
-
const currPt =
|
|
178998
|
-
const currVec =
|
|
179027
|
+
const currPt = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Point3d.create();
|
|
179028
|
+
const currVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Vector3d.create();
|
|
178999
179029
|
for (let i = 0; i < points.length; i++) {
|
|
179000
179030
|
points.getPoint3dAtUncheckedPointIndex(i, currPt);
|
|
179001
179031
|
currVec.setFrom(currPt);
|
|
@@ -179023,15 +179053,15 @@ class ClipUtilities {
|
|
|
179023
179053
|
* @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
|
|
179024
179054
|
*/
|
|
179025
179055
|
static announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, loopFunction, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
|
|
179026
|
-
const work = new
|
|
179056
|
+
const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
|
|
179027
179057
|
if (includeConvexSetFaces) {
|
|
179028
179058
|
// Clip convexSet planes to the range and to the rest of the convexSet . .
|
|
179029
|
-
if (convexSet instanceof
|
|
179059
|
+
if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet) {
|
|
179030
179060
|
for (const plane of convexSet.planes) {
|
|
179031
179061
|
if (ignoreInvisiblePlanes && plane.invisible)
|
|
179032
179062
|
continue;
|
|
179033
179063
|
const pointsClippedToRange = plane.intersectRange(range, true);
|
|
179034
|
-
const finalPoints = new
|
|
179064
|
+
const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
|
|
179035
179065
|
if (pointsClippedToRange) {
|
|
179036
179066
|
convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
|
|
179037
179067
|
if (finalPoints.length > 0)
|
|
@@ -179054,10 +179084,10 @@ class ClipUtilities {
|
|
|
179054
179084
|
// clip range faces to the convex set . . .
|
|
179055
179085
|
const corners = range.corners();
|
|
179056
179086
|
for (let i = 0; i < 6; i++) {
|
|
179057
|
-
const indices =
|
|
179058
|
-
const finalPoints = new
|
|
179059
|
-
const lineString =
|
|
179060
|
-
if (convexSet instanceof
|
|
179087
|
+
const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.faceCornerIndices(i);
|
|
179088
|
+
const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
|
|
179089
|
+
const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createIndexedPoints(corners, indices);
|
|
179090
|
+
if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet) {
|
|
179061
179091
|
convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
|
|
179062
179092
|
if (finalPoints.length > 0)
|
|
179063
179093
|
loopFunction(finalPoints);
|
|
@@ -179082,18 +179112,18 @@ class ClipUtilities {
|
|
|
179082
179112
|
*/
|
|
179083
179113
|
static loopsOfConvexClipPlaneIntersectionWithRange(allClippers, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
|
|
179084
179114
|
const result = [];
|
|
179085
|
-
if (allClippers instanceof
|
|
179115
|
+
if (allClippers instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
|
|
179086
179116
|
for (const clipper of allClippers.convexSets) {
|
|
179087
179117
|
this.announceLoopsOfConvexClipPlaneSetIntersectRange(clipper, range, (points) => {
|
|
179088
179118
|
if (points.length > 0)
|
|
179089
|
-
result.push(
|
|
179119
|
+
result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(points));
|
|
179090
179120
|
}, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
|
|
179091
179121
|
}
|
|
179092
179122
|
}
|
|
179093
|
-
else if (allClippers instanceof
|
|
179123
|
+
else if (allClippers instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet || allClippers instanceof _ClipPlane__WEBPACK_IMPORTED_MODULE_16__.ClipPlane) {
|
|
179094
179124
|
this.announceLoopsOfConvexClipPlaneSetIntersectRange(allClippers, range, (points) => {
|
|
179095
179125
|
if (points.length > 0)
|
|
179096
|
-
result.push(
|
|
179126
|
+
result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(points));
|
|
179097
179127
|
}, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
|
|
179098
179128
|
}
|
|
179099
179129
|
return result;
|
|
@@ -179105,7 +179135,7 @@ class ClipUtilities {
|
|
|
179105
179135
|
* @param range range to intersect
|
|
179106
179136
|
*/
|
|
179107
179137
|
static rangeOfConvexClipPlaneSetIntersectionWithRange(convexSet, range) {
|
|
179108
|
-
const result =
|
|
179138
|
+
const result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
|
|
179109
179139
|
this.announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, (points) => {
|
|
179110
179140
|
if (points.length > 0)
|
|
179111
179141
|
result.extendArray(points);
|
|
@@ -179128,22 +179158,22 @@ class ClipUtilities {
|
|
|
179128
179158
|
static rangeOfClipperIntersectionWithRange(clipper, range, observeInvisibleFlag = true) {
|
|
179129
179159
|
if (clipper === undefined)
|
|
179130
179160
|
return range.clone();
|
|
179131
|
-
if (clipper instanceof
|
|
179161
|
+
if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet)
|
|
179132
179162
|
return this.rangeOfConvexClipPlaneSetIntersectionWithRange(clipper, range);
|
|
179133
|
-
if (clipper instanceof
|
|
179134
|
-
const rangeUnion =
|
|
179163
|
+
if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
|
|
179164
|
+
const rangeUnion = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
|
|
179135
179165
|
for (const c of clipper.convexSets) {
|
|
179136
179166
|
const rangeC = this.rangeOfConvexClipPlaneSetIntersectionWithRange(c, range);
|
|
179137
179167
|
rangeUnion.extendRange(rangeC);
|
|
179138
179168
|
}
|
|
179139
179169
|
return rangeUnion;
|
|
179140
179170
|
}
|
|
179141
|
-
if (clipper instanceof
|
|
179171
|
+
if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__.ClipPrimitive) {
|
|
179142
179172
|
if (observeInvisibleFlag && clipper.invisible)
|
|
179143
179173
|
return range.clone();
|
|
179144
179174
|
return this.rangeOfClipperIntersectionWithRange(clipper.fetchClipPlanesRef(), range);
|
|
179145
179175
|
}
|
|
179146
|
-
if (clipper instanceof
|
|
179176
|
+
if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_18__.ClipVector) {
|
|
179147
179177
|
const rangeIntersection = range.clone();
|
|
179148
179178
|
for (const c of clipper.clips) {
|
|
179149
179179
|
if (observeInvisibleFlag && c.invisible) {
|
|
@@ -179175,21 +179205,21 @@ class ClipUtilities {
|
|
|
179175
179205
|
static doesClipperIntersectRange(clipper, range, observeInvisibleFlag = true) {
|
|
179176
179206
|
if (clipper === undefined)
|
|
179177
179207
|
return true;
|
|
179178
|
-
if (clipper instanceof
|
|
179208
|
+
if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet)
|
|
179179
179209
|
return this.doesConvexClipPlaneSetIntersectRange(clipper, range);
|
|
179180
|
-
if (clipper instanceof
|
|
179210
|
+
if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
|
|
179181
179211
|
for (const c of clipper.convexSets) {
|
|
179182
179212
|
if (this.doesConvexClipPlaneSetIntersectRange(c, range))
|
|
179183
179213
|
return true;
|
|
179184
179214
|
}
|
|
179185
179215
|
return false;
|
|
179186
179216
|
}
|
|
179187
|
-
if (clipper instanceof
|
|
179217
|
+
if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__.ClipPrimitive) {
|
|
179188
179218
|
if (observeInvisibleFlag && clipper.invisible) // um is there an easy way to detect range-completely-inside?
|
|
179189
179219
|
return true;
|
|
179190
179220
|
return this.doesClipperIntersectRange(clipper.fetchClipPlanesRef(), range);
|
|
179191
179221
|
}
|
|
179192
|
-
if (clipper instanceof
|
|
179222
|
+
if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_18__.ClipVector) {
|
|
179193
179223
|
const rangeIntersection = range.clone();
|
|
179194
179224
|
for (const c of clipper.clips) {
|
|
179195
179225
|
if (observeInvisibleFlag && c.invisible) {
|
|
@@ -179214,7 +179244,7 @@ class ClipUtilities {
|
|
|
179214
179244
|
* @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
|
|
179215
179245
|
*/
|
|
179216
179246
|
static doesConvexClipPlaneSetIntersectRange(convexSet, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
|
|
179217
|
-
const work = new
|
|
179247
|
+
const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
|
|
179218
179248
|
if (includeConvexSetFaces) {
|
|
179219
179249
|
// Clip convexSet planes to the range and to the rest of the convexSet . .
|
|
179220
179250
|
for (const plane of convexSet.planes) {
|
|
@@ -179222,7 +179252,7 @@ class ClipUtilities {
|
|
|
179222
179252
|
continue;
|
|
179223
179253
|
const pointsClippedToRange = plane.intersectRange(range, true);
|
|
179224
179254
|
if (pointsClippedToRange) {
|
|
179225
|
-
const finalPoints = new
|
|
179255
|
+
const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
|
|
179226
179256
|
convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
|
|
179227
179257
|
if (finalPoints.length > 0)
|
|
179228
179258
|
return true;
|
|
@@ -179233,9 +179263,9 @@ class ClipUtilities {
|
|
|
179233
179263
|
// clip range faces to the convex set . . .
|
|
179234
179264
|
const corners = range.corners();
|
|
179235
179265
|
for (let i = 0; i < 6; i++) {
|
|
179236
|
-
const indices =
|
|
179237
|
-
const finalPoints = new
|
|
179238
|
-
const lineString =
|
|
179266
|
+
const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.faceCornerIndices(i);
|
|
179267
|
+
const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
|
|
179268
|
+
const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createIndexedPoints(corners, indices);
|
|
179239
179269
|
convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
|
|
179240
179270
|
if (finalPoints.length > 0)
|
|
179241
179271
|
return true;
|
|
@@ -179243,32 +179273,110 @@ class ClipUtilities {
|
|
|
179243
179273
|
}
|
|
179244
179274
|
return false;
|
|
179245
179275
|
}
|
|
179276
|
+
/**
|
|
179277
|
+
* Create a clipper from the transformed range.
|
|
179278
|
+
* @param range input range to create clipper from
|
|
179279
|
+
* @param transform how to transform the range (NOTE: applied to the range faces without swelling the range volume)
|
|
179280
|
+
* @param degeneratePoints optionally populated with the 1 or 2 points defining the transformed range if it is degenerate (all points colinear/coincident); otherwise untouched
|
|
179281
|
+
* @returns newly constructed clipper. If no clip planes could be computed, fill `degeneratePoints` and return undefined.
|
|
179282
|
+
*/
|
|
179283
|
+
static createClipperFromTransformedRange3d(range, transform, degeneratePoints) {
|
|
179284
|
+
if (!transform)
|
|
179285
|
+
transform = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_19__.Transform.createIdentity();
|
|
179286
|
+
const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_20__.PolyfaceBuilder.create();
|
|
179287
|
+
builder.addTransformedRangeMesh(transform, range);
|
|
179288
|
+
const mesh = builder.claimPolyface();
|
|
179289
|
+
const clipper = this._workClipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createConvexPolyface(mesh, this._workClipper).clipper;
|
|
179290
|
+
if (clipper.planes.length > 0)
|
|
179291
|
+
return clipper;
|
|
179292
|
+
// no faces found in the compressed mesh
|
|
179293
|
+
if (degeneratePoints) {
|
|
179294
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(mesh.data.point.length <= 2);
|
|
179295
|
+
for (let i = 0; i < 2; ++i) {
|
|
179296
|
+
const point = mesh.data.point.getPoint3dAtCheckedPointIndex(i);
|
|
179297
|
+
if (point)
|
|
179298
|
+
degeneratePoints.push(point);
|
|
179299
|
+
}
|
|
179300
|
+
}
|
|
179301
|
+
return undefined;
|
|
179302
|
+
}
|
|
179303
|
+
/**
|
|
179304
|
+
* Handle pathological cases of range-range intersection, where one of the ranges defines no area or volume (is a line segment or single point).
|
|
179305
|
+
* @param range local range to intersect with the point/segment
|
|
179306
|
+
* @param points isolated local point, or local segment's start and end
|
|
179307
|
+
* @param localToWorld optional transform for output range
|
|
179308
|
+
* @param intersection optional range of the intersection, in world coordinates, or null range if no intersection.
|
|
179309
|
+
* @returns whether the point/segment intersects the range
|
|
179310
|
+
*/
|
|
179311
|
+
static rangeIntersectPointOrSegment(range, points, localToWorld, intersection) {
|
|
179312
|
+
const announceInterval = intersection ?
|
|
179313
|
+
(f0, f1, cp) => {
|
|
179314
|
+
intersection.extendPoint(cp.fractionToPoint(f0), localToWorld);
|
|
179315
|
+
intersection.extendPoint(cp.fractionToPoint(f1), localToWorld);
|
|
179316
|
+
} : undefined;
|
|
179317
|
+
let hasIntersection = false;
|
|
179318
|
+
if (points.length > 1) {
|
|
179319
|
+
const segment = _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_21__.LineSegment3d.createCapture(points[0], points[1]);
|
|
179320
|
+
const clipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createRange3dPlanes(range);
|
|
179321
|
+
hasIntersection = segment.announceClipIntervals(clipper, announceInterval);
|
|
179322
|
+
}
|
|
179323
|
+
else if (points.length > 0) {
|
|
179324
|
+
hasIntersection = range.containsPoint(points[0]);
|
|
179325
|
+
if (hasIntersection && intersection)
|
|
179326
|
+
intersection.extendPoint(points[0], localToWorld);
|
|
179327
|
+
}
|
|
179328
|
+
return hasIntersection;
|
|
179329
|
+
}
|
|
179246
179330
|
/**
|
|
179247
179331
|
* Test for intersection of two ranges in different local coordinates.
|
|
179248
179332
|
* * Useful for clash detection of elements in iModels, using their stored (tight) local ranges and placement transforms.
|
|
179249
|
-
* @param range0 range in local coordinates
|
|
179250
|
-
* @param local0ToWorld placement transform for first
|
|
179251
|
-
* @param range1 range in local coordinates
|
|
179252
|
-
* @param local1ToWorld placement transform for second
|
|
179333
|
+
* @param range0 first range in local coordinates
|
|
179334
|
+
* @param local0ToWorld placement transform for first range
|
|
179335
|
+
* @param range1 second range in local coordinates
|
|
179336
|
+
* @param local1ToWorld placement transform for second range. Assumed to be invertible.
|
|
179253
179337
|
* @param range1Margin optional signed local distance to expand/contract the second range before intersection. Positive expands.
|
|
179254
179338
|
* @return whether the local ranges are adjacent or intersect. Also returns false if local1ToWorld is singular.
|
|
179255
179339
|
*/
|
|
179256
179340
|
static doLocalRangesIntersect(range0, local0ToWorld, range1, local1ToWorld, range1Margin) {
|
|
179257
|
-
const worldToLocal1 =
|
|
179341
|
+
const worldToLocal1 = this._workTransform = local1ToWorld.inverse(this._workTransform);
|
|
179258
179342
|
if (!worldToLocal1)
|
|
179259
179343
|
return false;
|
|
179260
179344
|
let myRange1 = range1;
|
|
179261
179345
|
if (range1Margin) {
|
|
179262
|
-
myRange1 =
|
|
179346
|
+
myRange1 = this._workRange = range1.clone(this._workRange);
|
|
179263
179347
|
myRange1.expandInPlace(range1Margin);
|
|
179264
179348
|
}
|
|
179349
|
+
const degeneratePoints = [];
|
|
179350
|
+
const local0ToLocal1 = worldToLocal1.multiplyTransformTransform(local0ToWorld, worldToLocal1);
|
|
179265
179351
|
// convert range0 into a clipper in local1 coordinates, then intersect with range1
|
|
179352
|
+
const clipper = this.createClipperFromTransformedRange3d(range0, local0ToLocal1, degeneratePoints);
|
|
179353
|
+
if (clipper)
|
|
179354
|
+
return this.doesClipperIntersectRange(clipper, myRange1);
|
|
179355
|
+
return this.rangeIntersectPointOrSegment(myRange1, degeneratePoints, local1ToWorld);
|
|
179356
|
+
}
|
|
179357
|
+
/**
|
|
179358
|
+
* Compute the range of the intersection between two local (e.g., element-aligned) ranges.
|
|
179359
|
+
* @param range0 first range in local coordinates
|
|
179360
|
+
* @param local0ToWorld placement transform for first range
|
|
179361
|
+
* @param range1 second range in local coordinates
|
|
179362
|
+
* @param local1ToWorld placement transform for second range. Assumed to be invertible.
|
|
179363
|
+
* @param result optional pre-allocated range to fill and return
|
|
179364
|
+
* @return range of the intersection (aligned to world axes). Returns null range if local1ToWorld is singular.
|
|
179365
|
+
*/
|
|
179366
|
+
static rangeOfIntersectionOfLocalRanges(range0, local0ToWorld, range1, local1ToWorld, result) {
|
|
179367
|
+
const myResult = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull(result);
|
|
179368
|
+
const worldToLocal1 = this._workTransform = local1ToWorld.inverse(this._workTransform);
|
|
179369
|
+
if (!worldToLocal1)
|
|
179370
|
+
return myResult;
|
|
179371
|
+
const degeneratePoints = [];
|
|
179266
179372
|
const local0ToLocal1 = worldToLocal1.multiplyTransformTransform(local0ToWorld, worldToLocal1);
|
|
179267
|
-
|
|
179268
|
-
|
|
179269
|
-
|
|
179270
|
-
|
|
179271
|
-
|
|
179373
|
+
// convert range0 into a clipper in local1 coordinates, then intersect with range1
|
|
179374
|
+
const clipper = this.createClipperFromTransformedRange3d(range0, local0ToLocal1, degeneratePoints);
|
|
179375
|
+
if (clipper)
|
|
179376
|
+
this.announceLoopsOfConvexClipPlaneSetIntersectRange(clipper, range1, (loopPoints) => { loopPoints.extendRange(myResult, local1ToWorld); });
|
|
179377
|
+
else
|
|
179378
|
+
this.rangeIntersectPointOrSegment(range1, degeneratePoints, local1ToWorld, myResult);
|
|
179379
|
+
return myResult;
|
|
179272
179380
|
}
|
|
179273
179381
|
/**
|
|
179274
179382
|
* Test if `obj` is a `Clipper` object.
|
|
@@ -179319,9 +179427,9 @@ class ClipUtilities {
|
|
|
179319
179427
|
*/
|
|
179320
179428
|
static createXYOffsetClipFromLineString(points, leftOffset, rightOffset, z0, z1) {
|
|
179321
179429
|
if (Array.isArray(points)) {
|
|
179322
|
-
return
|
|
179430
|
+
return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__.LineStringOffsetClipperContext.createClipBetweenOffsets(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_23__.Point3dArrayCarrier(points), leftOffset, rightOffset, z0, z1);
|
|
179323
179431
|
}
|
|
179324
|
-
return
|
|
179432
|
+
return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__.LineStringOffsetClipperContext.createClipBetweenOffsets(points, leftOffset, rightOffset, z0, z1);
|
|
179325
179433
|
}
|
|
179326
179434
|
/** If data.length >= minLength threshold, push it to destination; if smaller drop it back to the cache. */
|
|
179327
179435
|
static captureOrDrop(data, minLength, destination, cache) {
|
|
@@ -179511,7 +179619,7 @@ class ClipUtilities {
|
|
|
179511
179619
|
*/
|
|
179512
179620
|
static doPolygonClipSequence(xyz, clippers, acceptedIn, acceptedOut, finalCandidates, inAction, outAction, finalFragmentAction, arrayCache) {
|
|
179513
179621
|
if (arrayCache === undefined)
|
|
179514
|
-
arrayCache = new
|
|
179622
|
+
arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
|
|
179515
179623
|
let candidates = [arrayCache.grabAndFill(xyz)];
|
|
179516
179624
|
let nextCandidates = [];
|
|
179517
179625
|
const intermediateIn = [];
|
|
@@ -179548,7 +179656,7 @@ class ClipUtilities {
|
|
|
179548
179656
|
/** Pass polygon `xyz` through a sequence of PolygonClip steps with "parity" rules */
|
|
179549
179657
|
static doPolygonClipParitySequence(xyz, clippers, acceptedIn, acceptedOut, arrayCache) {
|
|
179550
179658
|
if (arrayCache === undefined)
|
|
179551
|
-
arrayCache = new
|
|
179659
|
+
arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
|
|
179552
179660
|
let candidatesOut = [arrayCache.grabAndFill(xyz)];
|
|
179553
179661
|
let candidatesIn = [];
|
|
179554
179662
|
let nextCandidatesIn = [];
|
|
@@ -179600,22 +179708,22 @@ class ClipUtilities {
|
|
|
179600
179708
|
*/
|
|
179601
179709
|
static createComplementaryClips(clipper) {
|
|
179602
179710
|
const planes = clipper.planes;
|
|
179603
|
-
const interval =
|
|
179711
|
+
const interval = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range1d.createNull();
|
|
179604
179712
|
const n = planes.length;
|
|
179605
179713
|
const newClippers = [];
|
|
179606
179714
|
for (const p of planes) {
|
|
179607
|
-
const outerSet =
|
|
179715
|
+
const outerSet = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createEmpty();
|
|
179608
179716
|
outerSet.addPlaneToConvexSet(p.cloneNegated());
|
|
179609
179717
|
newClippers.push(outerSet);
|
|
179610
179718
|
}
|
|
179611
179719
|
for (let i = 0; i < n; i++) {
|
|
179612
179720
|
for (let j = i + 1; j < n; j++) {
|
|
179613
|
-
const ray =
|
|
179721
|
+
const ray = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_24__.CurveFactory.planePlaneIntersectionRay(planes[i], planes[j]);
|
|
179614
179722
|
if (ray) {
|
|
179615
179723
|
if (clipper.hasIntersectionWithRay(ray, interval)) {
|
|
179616
179724
|
// the normal-to-normal vector is bisector (or close to bisector?)
|
|
179617
179725
|
const newNormal = planes[j].inwardNormalRef.minus(planes[i].inwardNormalRef);
|
|
179618
|
-
const plane1 =
|
|
179726
|
+
const plane1 = _ClipPlane__WEBPACK_IMPORTED_MODULE_16__.ClipPlane.createNormalAndPoint(newNormal, ray.origin);
|
|
179619
179727
|
if (plane1) {
|
|
179620
179728
|
const plane2 = plane1.cloneNegated();
|
|
179621
179729
|
newClippers[i].addPlaneToConvexSet(plane1);
|
|
@@ -179625,10 +179733,10 @@ class ClipUtilities {
|
|
|
179625
179733
|
}
|
|
179626
179734
|
}
|
|
179627
179735
|
}
|
|
179628
|
-
return
|
|
179736
|
+
return _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets.createConvexSets(newClippers);
|
|
179629
179737
|
}
|
|
179630
179738
|
}
|
|
179631
|
-
ClipUtilities._selectIntervals01TestPoint =
|
|
179739
|
+
ClipUtilities._selectIntervals01TestPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Point3d.create();
|
|
179632
179740
|
|
|
179633
179741
|
function moveFragments(fragments, destination, arrayCache) {
|
|
179634
179742
|
if (destination === undefined)
|
|
@@ -226186,7 +226294,8 @@ class Newton2dUnboundedWithDerivative extends AbstractNewtonIterator {
|
|
|
226186
226294
|
computeStep() {
|
|
226187
226295
|
if (this._func.evaluate(this._currentUV.x, this._currentUV.y)) {
|
|
226188
226296
|
const fA = this._func.currentF;
|
|
226189
|
-
if (
|
|
226297
|
+
if ( // Given X_{n+1} = X_n - dX = X_n - JInv(X_n) F(X_n), we solve J(X_n) dX = F(X_n) for dX:
|
|
226298
|
+
_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.linearSystem2d(fA.vectorU.x, fA.vectorV.x, fA.vectorU.y, fA.vectorV.y, fA.origin.x, fA.origin.y, this._currentStep))
|
|
226190
226299
|
return true;
|
|
226191
226300
|
}
|
|
226192
226301
|
return false;
|
|
@@ -231871,6 +231980,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
|
|
|
231871
231980
|
this.addTransformedRangeMesh(transform, _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__.Range3d.createXYZXYZ(0, 0, 0, 1, 1, 1));
|
|
231872
231981
|
}
|
|
231873
231982
|
/** Add facets for a transformed range box.
|
|
231983
|
+
* * For best results, the transformed range corners should define a nonzero volume or area.
|
|
231874
231984
|
* @param transform applied to the range points before adding to the polyface
|
|
231875
231985
|
* @param range sides become 6 quad polyface facets
|
|
231876
231986
|
* @param faceSelector for each face in the order of BoxTopology.cornerIndexCCW, faceSelector[i]===false skips that facet.
|
|
@@ -289384,7 +289494,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
|
|
|
289384
289494
|
/***/ ((module) => {
|
|
289385
289495
|
|
|
289386
289496
|
"use strict";
|
|
289387
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.
|
|
289497
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.16","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 -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -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.3.0-dev.16","@itwin/core-bentley":"workspace:^4.3.0-dev.16","@itwin/core-common":"workspace:^4.3.0-dev.16","@itwin/core-geometry":"workspace:^4.3.0-dev.16","@itwin/core-orbitgt":"workspace:^4.3.0-dev.16","@itwin/core-quantity":"workspace:^4.3.0-dev.16"},"//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.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","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.1.0","@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","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
|
|
289388
289498
|
|
|
289389
289499
|
/***/ })
|
|
289390
289500
|
|