@itwin/core-geometry 4.0.0-dev.51 → 4.0.0-dev.52

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.
@@ -14,15 +14,18 @@ import { TransformProps, XAndY, XYAndZ } from "./XYZProps";
14
14
  * * The math for a Transform `T` consisting of a Matrix3d `M` and a Point3d `o` on a Vector3d `p` is: `Tp = M*p + o`.
15
15
  * In other words, `T` is a combination of two operations on `p`: the action of matrix multiplication, followed by a
16
16
  * translation. `Origin` is a traditional term for `o`, because `T` can be interpreted as a change of basis from the
17
- * global axes centered at the global origin, to a new set of axes centered at `o`.
18
- * * Beware that for common transformations (e.g. scale about point, rotate around an axis, mirror across a
19
- * plane) the "fixed point" that is used when describing the transform is NOT the "origin" stored in the
20
- * transform. Setup methods (e.g createFixedPointAndMatrix, createScaleAboutPoint) take care of determining
21
- * the appropriate origin coordinates.
17
+ * global axes centered at the global origin, to a new set of axes specified by matrix M columns centered at `o`.
18
+ * * Beware that for common transformations (e.g. scale about point, rotate around an axis) the `fixed point` that
19
+ * is used when describing the transform is NOT the `origin` stored in the transform. Setup methods (e.g
20
+ * createFixedPointAndMatrix, createScaleAboutPoint) take care of determining the appropriate origin coordinates.
21
+ * * If `T` is a translation, no point is fixed by `T`.
22
+ * * If `T` is the identity, all points are fixed by `T`.
23
+ * * If `T` is a scale about a point, one point is fixed by `T`.
24
+ * * If `T` is a rotation about an axis, a line is fixed by `T`.
25
+ * * If `T` is a projection to the plane, a plane is fixed by `T`.
22
26
  * @public
23
27
  */
24
28
  export declare class Transform implements BeJSONFunctions {
25
- private static _scratchPoint;
26
29
  private _origin;
27
30
  private _matrix;
28
31
  private constructor();
@@ -148,13 +151,25 @@ export declare class Transform implements BeJSONFunctions {
148
151
  * where `f` is the fixedPoint and M is the scale matrix (i.e., `Tp = M*(p-f) + f`).
149
152
  */
150
153
  static createScaleAboutPoint(fixedPoint: Point3d, scale: number, result?: Transform): Transform;
151
- /** Transform the input 2d point. Return as a new point or in the pre-allocated result (if result is given). */
154
+ /**
155
+ * Transform the input 2d point (using `Tp = M*p + o`).
156
+ * Return as a new point or in the pre-allocated result (if result is given).
157
+ */
152
158
  multiplyPoint2d(point: XAndY, result?: Point2d): Point2d;
153
- /** Transform the input 3d point. Return as a new point or in the pre-allocated result (if result is given). */
159
+ /**
160
+ * Transform the input 3d point (using `Tp = M*p + o`).
161
+ * Return as a new point or in the pre-allocated result (if result is given).
162
+ */
154
163
  multiplyPoint3d(point: XYAndZ, result?: Point3d): Point3d;
155
- /** Transform the input 3d point in place (override the input point by the transformed point). */
164
+ /**
165
+ * Transform the input 3d point in place (using `Tp = M*p + o`).
166
+ * Return as a new point or in the pre-allocated result (if result is given).
167
+ */
156
168
  multiplyXYAndZInPlace(point: XYAndZ): void;
157
- /** Transform the input point. Return as a new point or in the pre-allocated result (if result is given). */
169
+ /**
170
+ * Transform the input 3d point (using `Tp = M*p + o`).
171
+ * Return as a new point or in the pre-allocated result (if result is given).
172
+ */
158
173
  multiplyXYZ(x: number, y: number, z?: number, result?: Point3d): Point3d;
159
174
  /**
160
175
  * Multiply a specific row (component) of the transform matrix times xyz and add it to the origin element
@@ -183,14 +198,14 @@ export declare class Transform implements BeJSONFunctions {
183
198
  */
184
199
  multiplyXYZToFloat64Array(x: number, y: number, z: number, result?: Float64Array): Float64Array;
185
200
  /**
186
- * Treat the 3x3 matrix and origin as upper 3x4 part of a 4x4 matrix, with 0001 as the final row. Now multiply
201
+ * Treat the 3x3 `matrix` and `origin` as upper 3x4 part of a 4x4 matrix, with 0001 as the final row. Now multiply
187
202
  * the transposed of this 4x4 matrix by Point4d given as xyzw. Return as a new point4d (`M*p` as first 3 elements
188
203
  * and `o*p + w` as last element where `p = (x,y,z)`) or in the pre-allocated result (if result is given).
189
204
  */
190
205
  multiplyTransposeXYZW(x: number, y: number, z: number, w: number, result?: Point4d): Point4d;
191
- /** For each point in the array, replace point by the transformed point (by `Tp = M*p + o`) */
206
+ /** For each point in the array, replace point by the transformed point (using `Tp = M*p + o`) */
192
207
  multiplyPoint3dArrayInPlace(points: Point3d[]): void;
193
- /** For each point in the 2d array, replace point by the transformed point (by `Tp = M*p + o`) */
208
+ /** For each point in the 2d array, replace point by the transformed point (using `Tp = M*p + o`) */
194
209
  multiplyPoint3dArrayArrayInPlace(chains: Point3d[][]): void;
195
210
  /**
196
211
  * If for a point `p` we have `Tp = M*p + o = point` (where `point` is the transformed point), then
@@ -217,115 +232,137 @@ export declare class Transform implements BeJSONFunctions {
217
232
  */
218
233
  multiplyInverseXYZ(x: number, y: number, z: number, result?: Point3d): Point3d | undefined;
219
234
  /**
220
- * * for each point: multiply transform * point
221
- * * if result is given, resize to match source and replace each corresponding pi
222
- * * if result is not given, return a new array.
235
+ * * Compute (if needed) the inverse of the `matrix` part of the Transform, thereby ensuring inverse
236
+ * operations can complete.
237
+ * @param useCached If true, accept prior cached inverse if available.
238
+ * @returns `true` if matrix inverse completes, `false` otherwise.
223
239
  */
224
- multiplyInversePoint3dArray(source: Point3d[], result?: Point3d[]): Point3d[] | undefined;
240
+ computeCachedInverse(useCached?: boolean): boolean;
225
241
  /**
226
- * * For each point in source: multiply transformInverse * point in place in the point.
227
- * * Return false if not invertible.
242
+ * Match the length of destination array with the length of source array
243
+ * * If destination has more elements than source, remove the extra elements.
244
+ * * If destination has fewer elements than source, use `constructionFunction` to create new elements.
245
+ * *
246
+ * @param source the source array
247
+ * @param dest the destination array
248
+ * @param constructionFunction function to call to create new elements.
228
249
  */
229
- multiplyInversePoint3dArrayInPlace(source: Point3d[]): boolean;
250
+ static matchArrayLengths(source: any[], dest: any[], constructionFunction: () => any): number;
230
251
  /**
231
- * * Compute (if needed) the inverse of the matrix part, thereby ensuring inverse operations can complete.
232
- * * Return true if matrix inverse completes.
233
- * @param useCached If true, accept prior cached inverse if available.
252
+ * If for each point `p` we have `Tp = M*p + o = point` (where `point` is the transformed point), then
253
+ * `p = MInverse * (point - o)`. This function returns the array of original points `p[]` if `points`
254
+ * is the array of transformed point (`Tp = point` for each `p` and `point`).
255
+ * * If `results` is given, resize it to match the input `points` array and update it with original points `p[]`.
256
+ * * If `results` is not given, return a new array.
257
+ * * Returns `undefined` if the `matrix` part if this Transform is singular.
234
258
  */
235
- computeCachedInverse(useCached?: boolean): boolean;
259
+ multiplyInversePoint3dArray(points: Point3d[], results?: Point3d[]): Point3d[] | undefined;
236
260
  /**
237
- * * If destination has more values than source, remove the extras.
238
- * * If destination has fewer values, use the constructionFunction to create new ones.
239
- * @param source array
240
- * @param dest destination array, to be modified to match source length
241
- * @param constructionFunction function to call to create new entries.
261
+ * If for each point `p` we have `Tp = M*p + o = point` (where `point` is the transformed point), then
262
+ * `p = MInverse * (point - o)`. This function calculates the array of original points `p[]` if `points`
263
+ * is the array of transformed point (`Tp = point` for each `p` and `point`) and replaces `points`
264
+ * with the array of original points.
265
+ * * Returns `true` if the `matrix` part if this Transform is invertible and `false if singular.
242
266
  */
243
- static matchArrayLengths(source: any[], dest: any[], constructionFunction: () => any): number;
267
+ multiplyInversePoint3dArrayInPlace(points: Point3d[]): boolean;
244
268
  /**
245
- * * For each point: multiply transform * point
246
- * * If result is given, resize to match source and replace each corresponding pi
247
- * * If result is not given, return a new array.
269
+ * Transform the input 2d point array (using `Tp = M*p + o`).
270
+ * * If `result` is given, resize it to match the input `points` array and update it with transformed points.
271
+ * * If `result` is not given, return a new array.
248
272
  */
249
- multiplyPoint2dArray(source: Point2d[], result?: Point2d[]): Point2d[];
273
+ multiplyPoint2dArray(points: Point2d[], result?: Point2d[]): Point2d[];
250
274
  /**
251
- * * For each point: multiply transform * point
252
- * * If result is given, resize to match source and replace each corresponding pi
253
- * * If result is not given, return a new array.
275
+ * Transform the input 3d point array (using `Tp = M*p + o`).
276
+ * * If `result` is given, resize it to match the input `points` array and update it with transformed points.
277
+ * * If `result` is not given, return a new array.
254
278
  */
255
- multiplyPoint3dArray(source: Point3d[], result?: Point3d[]): Point3d[];
279
+ multiplyPoint3dArray(points: Point3d[], result?: Point3d[]): Point3d[];
256
280
  /**
257
- * Multiply the vector by the Matrix3d part of the transform.
258
- * * The transform's origin is not used.
259
- * * Return as new or result by usual optional result convention
281
+ * Multiply the vector by the `matrix` part of the Transform.
282
+ * * The `origin` part of Transform is not used.
283
+ * * If `result` is given, update it with the multiplication. Otherwise, create a new Vector3d.
260
284
  */
261
285
  multiplyVector(vector: Vector3d, result?: Vector3d): Vector3d;
262
286
  /**
263
- * Multiply the vector in place by the Matrix3d part of the transform.
264
- * * The transform's origin is not used.
287
+ * Multiply the vector by the `matrix` part of the Transform in place.
288
+ * * The `origin` part of Transform is not used.
265
289
  */
266
290
  multiplyVectorInPlace(vector: Vector3d): void;
267
291
  /**
268
- * Multiply the vector (x,y,z) by the Matrix3d part of the transform.
269
- * * The transform's origin is not used.
270
- * * Return as new or result by usual optional result convention
292
+ * Multiply the vector (x,y,z) by the `matrix` part of the Transform.
293
+ * * The `origin` part of Transform is not used.
294
+ * * If `result` is given, update it with the multiplication. Otherwise, create a new Vector3d.
271
295
  */
272
296
  multiplyVectorXYZ(x: number, y: number, z: number, result?: Vector3d): Vector3d;
273
- /** Multiply this Transform times other Transform.
297
+ /**
298
+ * Calculate `transformA * transformB` and store it into the calling instance (`this`).
299
+ * * **Note:** If `transformA = [A a]` and `transformB = [B b]` then `transformA * transformB` is defined as
300
+ * `[A*B Ab+a]`. See `multiplyTransformTransform` doc for math details.
301
+ * @param transformA first operand
302
+ * @param transformB second operand
303
+ */
304
+ setMultiplyTransformTransform(transformA: Transform, transformB: Transform): void;
305
+ /**
306
+ * Multiply `this` Transform times `other` Transform.
307
+ * **Note:** If `this = [A a]` and `other = [B b]` then `this * other` is defined as [A*B Ab+a].
308
+ * That's because we create a 4x4 matrix for each Transform with the 3x3 `matrix` and `origin`
309
+ * as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we multiply those two 4x4 matrixes:
274
310
  * ```
275
311
  * equation
276
312
  * \begin{matrix}
277
- * \text{`this` transform with matrix part }\bold{A}\text{ and translation }\bold{a} & \blockTransform{A}{a}\\
278
- * \text{`other` transform with matrix part }\bold{B}\text{ and translation part }\bold{b}\text{ promoted to block transform} & \blockTransform{B}{b} \\
313
+ * \text{`this` Transform with `matrix` part }\bold{A}\text{ and `origin` part }\bold{a} & \blockTransform{A}{a}\\
314
+ * \text{`other` Transform with `matrix` part }\bold{B}\text{ and `origin` part }\bold{b} & \blockTransform{B}{b} \\
279
315
  * \text{product}& \blockTransform{A}{a}\blockTransform{B}{b}=\blockTransform{AB}{Ab + a}
280
316
  * \end{matrix}
281
317
  * ```
282
- * @param other right hand transform for multiplication.
318
+ * @param other the 'other` Transform to be multiplied to `this` Transform.
283
319
  * @param result optional preallocated result to reuse.
284
320
  */
285
321
  multiplyTransformTransform(other: Transform, result?: Transform): Transform;
286
322
  /**
287
- * Multiply transformA * transformB, store to calling instance.
288
- * @param transformA left operand
289
- * @param transformB right operand
290
- */
291
- setMultiplyTransformTransform(transformA: Transform, transformB: Transform): void;
292
- /**
293
- * Multiply this Transform times other Matrix3d, with other considered to be a Transform with 0 translation.
323
+ * Multiply `this` Transform times `other` Matrix3d (considered to be a Transform with 0 `origin`).
324
+ * **Note:** If `this = [A a]`, then we promote `other` matrix to be a Transform [B 0].
325
+ * Then `this * other` is defined as [A*B a]. That's because we create a 4x4 matrix for each Transform
326
+ * with the 3x3 `matrix` and `origin` as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we
327
+ * multiply those two 4x4 matrixes:
294
328
  * ```
295
329
  * equation
296
330
  * \begin{matrix}
297
- * \text{`this` transform with matrix part }\bold{A}\text{ and translation }\bold{b} & \blockTransform{B}{b}\\
298
- * \text{`other` matrix }\bold{B}\text{ promoted to block transform} & \blockTransform{B}{0} \\
331
+ * \text{`this` Transform with `matrix` part }\bold{A}\text{ and `origin` part }\bold{a} & \blockTransform{A}{a}\\
332
+ * \text{`other` matrix }\bold{B}\text{ promoted to block Transform} & \blockTransform{B}{0} \\
299
333
  * \text{product}& \blockTransform{A}{a}\blockTransform{B}{0}=\blockTransform{AB}{a}
300
334
  * \end{matrix}
301
335
  * ```
302
- * @param other right hand Matrix3d for multiplication.
336
+ * @param other the `other` Matrix3d to be multiplied to `this` Transform.
303
337
  * @param result optional preallocated result to reuse.
304
338
  */
305
339
  multiplyTransformMatrix3d(other: Matrix3d, result?: Transform): Transform;
306
340
  /**
307
- * Return the range of the transformed corners.
341
+ * Return the Range of the transformed corners.
308
342
  * * The 8 corners are transformed individually.
309
- * * Note that if there is anything other than translation and principal axis scaling in the transform, the volume of the range rotation will increase.
310
- * * Hence to get a "tight" range on rotated geometry, a range computation must be made on the rotated geometry itself.
343
+ * * **Note:** Suppose you have a geometry, a range box around that geometry, and your Transform is a rotation.
344
+ * If you rotate the range box and recompute a new range box around the rotated range box, then the new range
345
+ * box will have a larger volume than the original range box. However, if you rotate the geometry itself and
346
+ * then recompute the range box, it will be a tighter range box around the rotated geometry. `multiplyRange`
347
+ * function creates the larger range box because it only has access to the range box and the geometry itself.
311
348
  */
312
349
  multiplyRange(range: Range3d, result?: Range3d): Range3d;
313
350
  /**
314
- * * Return a Transform which is the inverse of this transform.
315
- * @param result optional pre-allocated result
316
- * @return the inverse Transform, or undefined if the matrix is singular
351
+ * Return a Transform which is the inverse of `this` Transform.
352
+ * * If `transform = [M o]` then `transformInverse = [MInverse MInverse*-o]`
353
+ * * Return `undefined` if this Transform's matrix is singular.
317
354
  */
318
355
  inverse(result?: Transform): Transform | undefined;
319
356
  /**
320
- * Initialize transforms that map each direction of a box (axis aligned) to `[0,1]`.
321
- * * The corner coordinates do _not_ need to be in order in any of the x,y,z directions.
322
- * * The npcToGlobalTransform (if supplied) maps 000 to the point named point000.
323
- * * The npcToGlobalTransform (if supplied) maps 11 to the point named point000.
324
- * * The globalToNpc transform is the inverse.
325
- * @param min the "000" corner of the box
326
- * @param max the "111" corner of the box
327
- * @param npcToGlobal (object created by caller, re-initialized here) transform that carries 01 coordinates into the min,max box.
328
- * @param globalToNpc (object created by caller, re-initialized here) transform that carries world coordinates into 01
357
+ * Initialize 2 Transforms: First Transform maps a box (axis aligned) specified by `min` and `max` to
358
+ * the unit box specified by 000 and 111 and inverse of it. Second Transform is the reverse of first.
359
+ * @param min the min corner of the box
360
+ * @param max the max corner of the box
361
+ * @param npcToGlobal maps global (the unit box specified by 000 and 111) to NPC (a box specified by `min`
362
+ * and `max`). Object created by caller, re-initialized here.
363
+ * @param globalToNpc maps NPC (a box specified by `min` and `max`) to global (the unit box specified by
364
+ * 000 and 111). Object created by caller, re-initialized here.
365
+ * * NPC stands for `Normalized Projection Coordinate`
329
366
  */
330
367
  static initFromRange(min: Point3d, max: Point3d, npcToGlobal?: Transform, globalToNpc?: Transform): void;
331
368
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"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"}