@itwin/core-geometry 4.0.0-dev.6 → 4.0.0-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/Geometry.d.ts +3 -3
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +27 -11
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.d.ts +11 -8
- package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCurve.js +16 -12
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveCurveIntersectXY.d.ts +5 -1
- package/lib/cjs/curve/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCurveIntersectXY.js +11 -10
- package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.d.ts +18 -0
- package/lib/cjs/geometry3d/Angle.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Angle.js +38 -0
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +1 -0
- package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js +3 -0
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +171 -118
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +448 -417
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +12 -13
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +15 -13
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.d.ts +1 -1
- package/lib/cjs/geometry3d/Segment1d.js +1 -1
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.d.ts +12 -0
- package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/Polynomials.js +14 -0
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +1 -0
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +46 -6
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +54 -0
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +71 -1
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts +202 -0
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -0
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +1038 -0
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -0
- package/lib/cjs/serialization/GeometrySamples.d.ts +4 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +14 -6
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +113 -7
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +185 -7
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +38 -0
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -0
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +82 -0
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -0
- package/lib/esm/Geometry.d.ts +3 -3
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +27 -11
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/curve/CurveCurve.d.ts +11 -8
- package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
- package/lib/esm/curve/CurveCurve.js +16 -12
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveCurveIntersectXY.d.ts +5 -1
- package/lib/esm/curve/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/esm/curve/CurveCurveIntersectXY.js +11 -10
- package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/geometry3d/Angle.d.ts +18 -0
- package/lib/esm/geometry3d/Angle.d.ts.map +1 -1
- package/lib/esm/geometry3d/Angle.js +38 -0
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +1 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js +3 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +171 -118
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +448 -417
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +12 -13
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +15 -13
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.d.ts +1 -1
- package/lib/esm/geometry3d/Segment1d.js +1 -1
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/numerics/Polynomials.d.ts +12 -0
- package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
- package/lib/esm/numerics/Polynomials.js +14 -0
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +1 -0
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +46 -6
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +54 -0
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +69 -0
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts +202 -0
- package/lib/esm/polyface/multiclip/OffsetMeshContext.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js +1032 -0
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -0
- package/lib/esm/serialization/GeometrySamples.d.ts +4 -1
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +14 -6
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +113 -7
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +185 -7
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +38 -0
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +78 -0
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Polyface
|
|
3
|
+
*/
|
|
4
|
+
import { GrowableXYZArray } from "../../geometry3d/GrowableXYZArray";
|
|
5
|
+
import { Point3d, Vector3d } from "../../geometry3d/Point3dVector3d";
|
|
6
|
+
import { Ray3d } from "../../geometry3d/Ray3d";
|
|
7
|
+
import { HalfEdge, HalfEdgeGraph, HalfEdgeMask } from "../../topology/Graph";
|
|
8
|
+
import { IndexedPolyface } from "../Polyface";
|
|
9
|
+
import { PolyfaceBuilder } from "../PolyfaceBuilder";
|
|
10
|
+
import { XYAndZ } from "../../geometry3d/XYZProps";
|
|
11
|
+
import { OffsetMeshOptions } from "../PolyfaceQuery";
|
|
12
|
+
/**
|
|
13
|
+
* Function to be called for debugging observations at key times during offset computation.
|
|
14
|
+
*/
|
|
15
|
+
declare type FacetOffsetGraphDebugFunction = (message: string, Graph: HalfEdgeGraph, breakMaskA: HalfEdgeMask, breakMaskB: HalfEdgeMask) => void;
|
|
16
|
+
declare type FacetOffsetDebugString = (message: string) => void;
|
|
17
|
+
export declare class FacetOffsetProperties {
|
|
18
|
+
constructor(facetIndex: number, normal: Ray3d);
|
|
19
|
+
facetIndex: number;
|
|
20
|
+
facetNormal: Ray3d;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Sector properties during offset.
|
|
24
|
+
* * this.normal may be initially assigned as the facet normal but can mutate by
|
|
25
|
+
* averaging with neighbors.
|
|
26
|
+
* * this.xyz is initially the base mesh xyz but is expected to move along the normal.
|
|
27
|
+
* * this.count is used locally in computations.
|
|
28
|
+
*/
|
|
29
|
+
export declare class SectorOffsetProperties {
|
|
30
|
+
constructor(normal: Vector3d, xyz: Point3d);
|
|
31
|
+
normal: Vector3d;
|
|
32
|
+
xyz: Point3d;
|
|
33
|
+
count: number;
|
|
34
|
+
/**
|
|
35
|
+
* Compute the angle between plane normals on opposite sides of the edge.
|
|
36
|
+
* * parallel normals have zero angle.
|
|
37
|
+
* * if the edge cuts inward to the volume behind the faces, the angle is negative.
|
|
38
|
+
* * if the edge is outward (a convex edge) the the volume, the angle is positive.
|
|
39
|
+
* @param edgeNodeA node on one side of the edge
|
|
40
|
+
* @param edgeVector pre-allocated vector to receive vector along edge.
|
|
41
|
+
* @param averageNormal pre-allocated vector to receive the average normal for a chamfer of the offset edge.
|
|
42
|
+
* @param offsetDistance distance of offset being constructed. The sign of this resolves angle ambiguity.
|
|
43
|
+
* @param radiansTolerance tolerance for large angle between normals.
|
|
44
|
+
* @returns true if this edge has SectorOffsetProperties on both sides and the angle between normals angle exceeds radiansTolerance.
|
|
45
|
+
*/
|
|
46
|
+
static edgeHasLargeExteriorAngleBetweenNormals(edgeNodeA: HalfEdge, edgeVector: Vector3d, averageNormal: Vector3d, offsetDistance: number, radiansTolerance?: number): boolean;
|
|
47
|
+
static almostEqualNormals(sectorA: SectorOffsetProperties, sectorB: SectorOffsetProperties, radiansTolerance?: number): boolean;
|
|
48
|
+
static radiansBetweenNormals(sectorA: SectorOffsetProperties, sectorB: SectorOffsetProperties): number;
|
|
49
|
+
setOffsetPointAtDistanceAtHalfEdge(halfEdge: HalfEdge, distance: number): void;
|
|
50
|
+
static setXYZAtHalfEdge(halfEdge: HalfEdge, xyz: Vector3d | undefined): void;
|
|
51
|
+
setXYAndZ(xyz: XYAndZ): void;
|
|
52
|
+
static setNormalAtHalfEdge(halfEdge: HalfEdge, uvw: Vector3d, distance?: number): void;
|
|
53
|
+
static sweepRadiansAroundNormal(nodeA: HalfEdge, upVector: Vector3d): number | undefined;
|
|
54
|
+
static getSectorPointAtHalfEdge(halfEdge: HalfEdge, xyz: Point3d | undefined, xyzArray: GrowableXYZArray | undefined): boolean;
|
|
55
|
+
static pushXYZ(xyzArray: GrowableXYZArray, halfEdge: HalfEdge): SectorOffsetProperties;
|
|
56
|
+
static accumulateScaledNormalAtHalfEdge(halfEdge: HalfEdge, scale: number, accumulatingVector: Vector3d): void;
|
|
57
|
+
}
|
|
58
|
+
export declare class OffsetMeshContext {
|
|
59
|
+
private constructor();
|
|
60
|
+
private _basePolyface;
|
|
61
|
+
private _baseGraph;
|
|
62
|
+
/** "Exterior" side of a bare edge of the mesh */
|
|
63
|
+
get exteriorMask(): HalfEdgeMask;
|
|
64
|
+
private _exteriorMask;
|
|
65
|
+
/** Mask indicating a a sector's coordinates have been reassigned at offset distance. */
|
|
66
|
+
private _offsetCoordinatesReassigned;
|
|
67
|
+
/** "First" sector of a smooth sequence. */
|
|
68
|
+
get breakMaskA(): HalfEdgeMask;
|
|
69
|
+
private _breakMaskA;
|
|
70
|
+
/** "Last" sector of a smooth sequence. */
|
|
71
|
+
get breakMaskB(): HalfEdgeMask;
|
|
72
|
+
private _breakMaskB;
|
|
73
|
+
/** This edge is on a chamfered face, and along the original edge */
|
|
74
|
+
get insideOfChamferFace(): HalfEdgeMask;
|
|
75
|
+
private _insideOfChamferFace;
|
|
76
|
+
/** This is the original edge of a chamfer face */
|
|
77
|
+
get outsideOfChamferFace(): HalfEdgeMask;
|
|
78
|
+
private _outsideOfChamferFace;
|
|
79
|
+
/** This edge is on a chamfered face, and at the end -- other side may be a sling */
|
|
80
|
+
get insideChamferSling(): HalfEdgeMask;
|
|
81
|
+
private _insideChamferSling;
|
|
82
|
+
/** This is the outside of the end of a chamfer face -- i.e. the inside of a new face-at-vertex */
|
|
83
|
+
get outsideEndOfChamferFace(): HalfEdgeMask;
|
|
84
|
+
private _outsideEndOfChamferFace;
|
|
85
|
+
private _smoothRadiansBetweenNormals;
|
|
86
|
+
private _smoothAccumulatedRadiansBetweenNormals;
|
|
87
|
+
private _chamferTurnRadians;
|
|
88
|
+
static graphDebugFunction?: FacetOffsetGraphDebugFunction;
|
|
89
|
+
static stringDebugFunction?: FacetOffsetDebugString;
|
|
90
|
+
private applyFaceNormalOffsetsToSectorData;
|
|
91
|
+
/**
|
|
92
|
+
* * build a mesh offset by given distance.
|
|
93
|
+
* * output the mesh to the given builder.
|
|
94
|
+
* @param basePolyface original mesh
|
|
95
|
+
* @param builder polyface builder to receive the new mesh.
|
|
96
|
+
* @param distance signed offset distance.
|
|
97
|
+
*/
|
|
98
|
+
static buildOffsetMeshWithEdgeChamfers(basePolyface: IndexedPolyface, builder: PolyfaceBuilder, distance: number, options: OffsetMeshOptions): void;
|
|
99
|
+
/**
|
|
100
|
+
* For each face of the graph, shift vertices by offsetDistance and emit to the builder as a facet
|
|
101
|
+
* @param polyfaceBuilder
|
|
102
|
+
*/
|
|
103
|
+
announceSimpleOffsetFromFaces(polyfaceBuilder: PolyfaceBuilder, offsetDistance: number): void;
|
|
104
|
+
/**
|
|
105
|
+
* For each face of the graph, output the xyz of the sector data
|
|
106
|
+
* @param polyfaceBuilder
|
|
107
|
+
*/
|
|
108
|
+
announceFacetsWithSectorCoordinatesAroundFaces(polyfaceBuilder: PolyfaceBuilder): void;
|
|
109
|
+
private countBits;
|
|
110
|
+
/**
|
|
111
|
+
* For each edge of the graph . .
|
|
112
|
+
* * Collect coordinates in 4 sectors going around the edge
|
|
113
|
+
* * Compress with tight tolerance so adjacent sectors with clean point match reduce to a single point.
|
|
114
|
+
* * Emit as a facet.
|
|
115
|
+
* @param polyfaceBuilder
|
|
116
|
+
*/
|
|
117
|
+
announceFacetsWithSectorCoordinatesAroundEdges(polyfaceBuilder: PolyfaceBuilder): void;
|
|
118
|
+
private getCoordinateString;
|
|
119
|
+
private inspectMasks;
|
|
120
|
+
/**
|
|
121
|
+
* For each face of the graph, output the xyz of the sector data
|
|
122
|
+
* @param polyfaceBuilder
|
|
123
|
+
*/
|
|
124
|
+
announceFacetsWithSectorCoordinatesAroundVertices(polyfaceBuilder: PolyfaceBuilder): void;
|
|
125
|
+
/**
|
|
126
|
+
* * Exterior half edges have HalfEdgeMask.EXTERIOR
|
|
127
|
+
* * All interior half edge around a facet have facetTag pointing to a facetProperties object for that facet.
|
|
128
|
+
* * the facetOffsetProperties object has the simple facet normal.
|
|
129
|
+
* * Each half edge has edgeTag pointing to to a sectorOffsetProperties object
|
|
130
|
+
* * the sectorOffsetProperties has a copy of the facet normal.
|
|
131
|
+
* @param polyface
|
|
132
|
+
* @returns graph
|
|
133
|
+
*/
|
|
134
|
+
static buildBaseGraph(polyface: IndexedPolyface): HalfEdgeGraph | undefined;
|
|
135
|
+
private setOffsetAtDistanceAroundVertex;
|
|
136
|
+
private setOffsetXYAndZAroundVertex;
|
|
137
|
+
/**
|
|
138
|
+
* * start at vertexSeed.
|
|
139
|
+
* * set the offset point at up to (and including) one with (a) this._breakMaskB or (b) this._exteriorMask
|
|
140
|
+
* *
|
|
141
|
+
* @param vertexSeed first node to mark.
|
|
142
|
+
* @param f function to call to announce each node and its sector properties.
|
|
143
|
+
* @returns number of nodes marked.
|
|
144
|
+
*/
|
|
145
|
+
private announceNodeAndSectorPropertiesInSmoothSector;
|
|
146
|
+
private computeAverageNormalAndMaxDeviationAroundVertex;
|
|
147
|
+
private assignOffsetByAverageNormalAroundVertex;
|
|
148
|
+
/** Search around a vertex for a sector which has a different normal from its vertexPredecessor.
|
|
149
|
+
* * The seed will be the first candidate considered
|
|
150
|
+
*/
|
|
151
|
+
private markBreakEdgesAndSaveAverageNormalsAroundVertex;
|
|
152
|
+
/** Compute the point of intersection of the planes in the sectors of 3 half edges */
|
|
153
|
+
private compute3SectorIntersection;
|
|
154
|
+
/** Compute the point of intersection of the planes in the sectors of 3 half edges */
|
|
155
|
+
private compute3SectorIntersectionDebug;
|
|
156
|
+
/** Compute the point of intersection of the planes in the sectors of 2 half edges, using cross product of their normals to resolve */
|
|
157
|
+
private compute2SectorIntersection;
|
|
158
|
+
/**
|
|
159
|
+
* * at input, graph has all original faces and edges
|
|
160
|
+
* * each sector points to a faceProperties with original facet normal
|
|
161
|
+
* * at exit:
|
|
162
|
+
* * new "chamfer faces" are added outside of edges with angle between normal sin excess of options.chamferTurnAngleBetweenNormals
|
|
163
|
+
* * the original edge is split along its length to create space
|
|
164
|
+
* * one edge "along" each direction inside the slit.
|
|
165
|
+
* * a sling edge at each end of the slit.
|
|
166
|
+
* * outside of the sling is part of the slit face loop.
|
|
167
|
+
* * inside is a single-node face
|
|
168
|
+
* * thus the slit itself has 4 nodes.
|
|
169
|
+
* * the two nodes at each end can thus contain the two distinct points at that end of the chamfer.
|
|
170
|
+
* * all 4 nodes of the slit face point to a new FacetOffsetProperties with the average normal.
|
|
171
|
+
* * the inside of each sling face has
|
|
172
|
+
* * original vertex coordinates in the node
|
|
173
|
+
* * face properties with a normal pointing outward from that end of the original edge -- hence define a plane that can clip the chamfer
|
|
174
|
+
* * the two points at each end of the chamfer are computed as the intersection of
|
|
175
|
+
* * chamfer plane
|
|
176
|
+
* * sling plane
|
|
177
|
+
* * adjacent plane of the face on the other side of the edge being chamfered.
|
|
178
|
+
* @param distance distance to offset. The sign of this is important in the chamfer construction.
|
|
179
|
+
*/
|
|
180
|
+
private addChamferTopologyToAllEdges;
|
|
181
|
+
/**
|
|
182
|
+
* * at input:
|
|
183
|
+
* * Each node points to sectorOffsetProperties with previously computed XYZ (presumably mismatched)
|
|
184
|
+
* * at exit:
|
|
185
|
+
* * Each sectorOffsetProperties has an offset point computed with consideration of offset planes in the neighborhood.
|
|
186
|
+
* @param distance distance to offset.
|
|
187
|
+
*/
|
|
188
|
+
private computeOffsetFacetIntersections;
|
|
189
|
+
private isInsideSling;
|
|
190
|
+
private isInsideChamferOrSling;
|
|
191
|
+
private isOffsetAssigned;
|
|
192
|
+
/**
|
|
193
|
+
*
|
|
194
|
+
* @param sourceNode node with good xyz
|
|
195
|
+
* @param destinationStartNode first of a sequence of nodes to set (delimited by masks)
|
|
196
|
+
* @param description string for debug
|
|
197
|
+
* @param workPoint point to use for coordinate transfer.
|
|
198
|
+
*/
|
|
199
|
+
private transferXYZFromNodeToSmoothSector;
|
|
200
|
+
}
|
|
201
|
+
export {};
|
|
202
|
+
//# sourceMappingURL=OffsetMeshContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OffsetMeshContext.d.ts","sourceRoot":"","sources":["../../../../src/polyface/multiclip/OffsetMeshContext.ts"],"names":[],"mappings":"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"}
|