@wemap/providers 14.6.0-beta.2 → 14.6.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +23 -0
  2. package/dist/index.js +59 -1187
  3. package/dist/src/events/Types.d.ts +2 -2
  4. package/dist/src/events/Types.d.ts.map +1 -1
  5. package/dist/src/mapmatching/MapMatchingHandler.d.ts +2 -2
  6. package/dist/src/providers/attitude/EkfAttitude.d.ts +1 -1
  7. package/dist/src/providers/attitude/EkfAttitude.d.ts.map +1 -1
  8. package/dist/src/providers/attitude/absolute/AbsoluteAttitudeFromBrowserProvider.d.ts +1 -1
  9. package/dist/src/providers/attitude/absolute/AbsoluteAttitudeFromBrowserProvider.d.ts.map +1 -1
  10. package/dist/src/providers/attitude/absolute/AbsoluteAttitudeProvider.d.ts +2 -2
  11. package/dist/src/providers/attitude/absolute/AbsoluteAttitudeProvider.d.ts.map +1 -1
  12. package/dist/src/providers/inclination/InclinationFromRelativeAttitudeProvider.d.ts +1 -1
  13. package/dist/src/providers/inclination/InclinationFromRelativeAttitudeProvider.d.ts.map +1 -1
  14. package/dist/src/providers/legacy/helpers/ThugDetector.d.ts +1 -1
  15. package/dist/src/providers/legacy/helpers/ThugDetector.d.ts.map +1 -1
  16. package/dist/src/providers/position/absolute/AbsolutePositionProvider.d.ts +9 -1
  17. package/dist/src/providers/position/absolute/AbsolutePositionProvider.d.ts.map +1 -1
  18. package/dist/src/providers/position/relative/GeoRelativePositionFromArCoreProvider.d.ts +1 -1
  19. package/dist/src/providers/position/relative/GeoRelativePositionProvider.d.ts +1 -1
  20. package/dist/src/providers/position/relative/PdrProvider.d.ts +1 -1
  21. package/dist/src/providers/steps/StepDetectionLadetto.d.ts +1 -1
  22. package/dist/src/providers/steps/StepDetectionLadetto.d.ts.map +1 -1
  23. package/dist/src/providers/steps/StepDetectionMinMaxPeaks.d.ts +1 -1
  24. package/dist/src/providers/steps/StepDetectionMinMaxPeaks.d.ts.map +1 -1
  25. package/dist/src/providers/steps/StepDetectionMinMaxPeaks2.d.ts +1 -1
  26. package/dist/src/providers/steps/StepDetectionMinMaxPeaks2.d.ts.map +1 -1
  27. package/dist/src/providers/steps/StepDetectionMinMaxPeaks3.d.ts +1 -1
  28. package/dist/src/providers/steps/StepDetectionMinMaxPeaks3.d.ts.map +1 -1
  29. package/dist/src/providers/steps/StepProvider.d.ts +1 -1
  30. package/dist/src/providers/steps/StepProvider.d.ts.map +1 -1
  31. package/dist/src/providers/vision/ArCoreProvider.d.ts +1 -1
  32. package/dist/src/providers/vision/vps/ImageRelocalization.d.ts +2 -2
  33. package/dist/src/providers/vision/vps/ImageRelocalization.d.ts.map +1 -1
  34. package/dist/src/providers/vision/vps/RelativeRotationCalc.d.ts +1 -1
  35. package/dist/src/providers/vision/vps/VpsMetadata.d.ts +3 -3
  36. package/dist/src/providers/vision/vps/VpsProvider.d.ts +3 -3
  37. package/dist/src/providers/vision/vps/VpsProvider.d.ts.map +1 -1
  38. package/dist/src/providers/vision/vps/VpsRequest.d.ts +1 -1
  39. package/dist/src/providers/vision/vps/VpsResponse.d.ts +1 -1
  40. package/dist/src/smoothers/AttitudeSmoother.d.ts +1 -1
  41. package/dist/src/smoothers/PositionSmoother.d.ts +1 -1
  42. package/dist/vitest.config.d.ts.map +1 -1
  43. package/package.json +27 -8
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AbsoluteHeading, Attitude, Constants, GeoRelativePosition, Level, RelativePosition, UserPosition } from "@wemap/geo";
2
+ import { Matrix, Matrix3, Matrix4, Quaternion, Rotations, Vector, Vector3, deg2rad, diffAngle, diffAngleLines, rad2deg, std } from "@wemap/maths";
2
3
  import { Edge, ItineraryInfoManager } from "@wemap/routers";
3
4
  import { Browser, BrowserUtils, TimeUtils, UserAgentUtils } from "@wemap/utils";
4
5
  import { Camera, SharedCameras, base64ToCanvas, canvasToBase64, reduceImageSize } from "@wemap/camera";
@@ -11,1154 +12,6 @@ var RelativeAttitude = class extends Attitude {}, AbsoluteAttitude = class exten
11
12
  get hasPoleStar() {
12
13
  return this.optionalProviders.includes("PoleStar");
13
14
  }
14
- }, __defProp$1 = Object.defineProperty, __defNormalProp$1 = (e, C, w) => C in e ? __defProp$1(e, C, {
15
- enumerable: !0,
16
- configurable: !0,
17
- writable: !0,
18
- value: w
19
- }) : e[C] = w, __publicField$1 = (e, C, w) => (__defNormalProp$1(e, typeof C == "symbol" ? C : C + "", w), w), Matrix = class {
20
- static sum(e, C) {
21
- let w = e.length, T = e[0].length, E = Array(w);
22
- for (let D = 0; D < w; ++D) {
23
- E[D] = Array(T);
24
- for (let w = 0; w < T; ++w) E[D][w] = e[D][w] + C[D][w];
25
- }
26
- return E;
27
- }
28
- static concatRow(e, C) {
29
- let w = e.length, T = C.length, E = Array(w + T);
30
- for (let C = 0; C < w; ++C) E[C] = e[C].slice();
31
- for (let e = 0; e < T; ++e) E[w + e] = C[e].slice();
32
- return E;
33
- }
34
- static concatLine(e, C) {
35
- let w = e.length, T = Array(w);
36
- for (let E = 0; E < w; ++E) T[E] = e[E].concat(C[E]);
37
- return T;
38
- }
39
- static diag(e) {
40
- let C = Array(e.length);
41
- for (let w = 0; w < e.length; w++) {
42
- C[w] = Array(e.length);
43
- for (let T = 0; T < e.length; T++) C[w][T] = w === T ? e[w] : 0;
44
- }
45
- return C;
46
- }
47
- static transpose(e) {
48
- let C = e.length, w = e[0].length, T = Array(w);
49
- for (let E = 0; E < w; E++) {
50
- T[E] = Array(C);
51
- for (let w = 0; w < C; w++) T[E][w] = e[w][E];
52
- }
53
- return T;
54
- }
55
- static multiply(e, C) {
56
- let w = e.length, T = e[0].length, E = C[0].length, D = Array(w);
57
- for (let O = 0; O < w; ++O) {
58
- D[O] = Array(E);
59
- for (let w = 0; w < E; ++w) {
60
- D[O][w] = 0;
61
- for (let E = 0; E < T; ++E) D[O][w] += e[O][E] * C[E][w];
62
- }
63
- }
64
- return D;
65
- }
66
- static multiplyScalar(e, C) {
67
- let w = e.length, T = e[0].length, E = Array(w);
68
- for (let D = 0; D < w; ++D) {
69
- E[D] = Array(T);
70
- for (let w = 0; w < T; ++w) E[D][w] = e[D][w] * C;
71
- }
72
- return E;
73
- }
74
- static multiplyVector(e, C) {
75
- let w = e.length, T = e[0].length, E = Array(w);
76
- for (let D = 0; D < w; ++D) {
77
- E[D] = 0;
78
- for (let w = 0; w < T; ++w) E[D] += e[D][w] * C[w];
79
- }
80
- return E;
81
- }
82
- static inverse(e) {
83
- if (e.length !== e[0].length) return null;
84
- let C = 0, w = 0, T = 0, E = 0, D = e.length, O = [], k = [];
85
- for (C = 0; C < D; C += 1) for (O[O.length] = [], k[k.length] = [], T = 0; T < D; T += 1) C === T ? O[C][T] = 1 : O[C][T] = 0, k[C][T] = e[C][T];
86
- for (C = 0; C < D; C += 1) {
87
- if (E = k[C][C], E === 0) {
88
- for (w = C + 1; w < D; w += 1) if (k[w][C] !== 0) {
89
- for (T = 0; T < D; T++) E = k[C][T], k[C][T] = k[w][T], k[w][T] = E, E = O[C][T], O[C][T] = O[w][T], O[w][T] = E;
90
- break;
91
- }
92
- if (E = k[C][C], E === 0) return null;
93
- }
94
- for (T = 0; T < D; T++) k[C][T] = k[C][T] / E, O[C][T] = O[C][T] / E;
95
- for (w = 0; w < D; w++) if (w !== C) for (E = k[w][C], T = 0; T < D; T++) k[w][T] -= E * k[C][T], O[w][T] -= E * O[C][T];
96
- }
97
- return O;
98
- }
99
- }, Matrix3 = class {
100
- static get identity() {
101
- return [
102
- [
103
- 1,
104
- 0,
105
- 0
106
- ],
107
- [
108
- 0,
109
- 1,
110
- 0
111
- ],
112
- [
113
- 0,
114
- 0,
115
- 1
116
- ]
117
- ];
118
- }
119
- static get zeros() {
120
- return [
121
- [
122
- 0,
123
- 0,
124
- 0
125
- ],
126
- [
127
- 0,
128
- 0,
129
- 0
130
- ],
131
- [
132
- 0,
133
- 0,
134
- 0
135
- ]
136
- ];
137
- }
138
- static diag(e) {
139
- return [
140
- [
141
- e[0],
142
- 0,
143
- 0
144
- ],
145
- [
146
- 0,
147
- e[1],
148
- 0
149
- ],
150
- [
151
- 0,
152
- 0,
153
- e[2]
154
- ]
155
- ];
156
- }
157
- static sum(e, C) {
158
- return [
159
- [
160
- e[0][0] + C[0][0],
161
- e[0][1] + C[0][1],
162
- e[0][2] + C[0][2]
163
- ],
164
- [
165
- e[1][0] + C[1][0],
166
- e[1][1] + C[1][1],
167
- e[1][2] + C[1][2]
168
- ],
169
- [
170
- e[2][0] + C[2][0],
171
- e[2][1] + C[2][1],
172
- e[2][2] + C[2][2]
173
- ]
174
- ];
175
- }
176
- static subtract(e, C) {
177
- return [
178
- [
179
- e[0][0] - C[0][0],
180
- e[0][1] - C[0][1],
181
- e[0][2] - C[0][2]
182
- ],
183
- [
184
- e[1][0] - C[1][0],
185
- e[1][1] - C[1][1],
186
- e[1][2] - C[1][2]
187
- ],
188
- [
189
- e[2][0] - C[2][0],
190
- e[2][1] - C[2][1],
191
- e[2][2] - C[2][2]
192
- ]
193
- ];
194
- }
195
- static rotX(e) {
196
- return [
197
- [
198
- 1,
199
- 0,
200
- 0
201
- ],
202
- [
203
- 0,
204
- Math.cos(e),
205
- -Math.sin(e)
206
- ],
207
- [
208
- 0,
209
- Math.sin(e),
210
- Math.cos(e)
211
- ]
212
- ];
213
- }
214
- static rotY(e) {
215
- return [
216
- [
217
- Math.cos(e),
218
- 0,
219
- Math.sin(e)
220
- ],
221
- [
222
- 0,
223
- 1,
224
- 0
225
- ],
226
- [
227
- -Math.sin(e),
228
- 0,
229
- Math.cos(e)
230
- ]
231
- ];
232
- }
233
- static rotZ(e) {
234
- return [
235
- [
236
- Math.cos(e),
237
- -Math.sin(e),
238
- 0
239
- ],
240
- [
241
- Math.sin(e),
242
- Math.cos(e),
243
- 0
244
- ],
245
- [
246
- 0,
247
- 0,
248
- 1
249
- ]
250
- ];
251
- }
252
- static transpose(e) {
253
- return [
254
- [
255
- e[0][0],
256
- e[1][0],
257
- e[2][0]
258
- ],
259
- [
260
- e[0][1],
261
- e[1][1],
262
- e[2][1]
263
- ],
264
- [
265
- e[0][2],
266
- e[1][2],
267
- e[2][2]
268
- ]
269
- ];
270
- }
271
- static multiplyScalar(e, C) {
272
- return [
273
- [
274
- e[0][0] * C,
275
- e[0][1] * C,
276
- e[0][2] * C
277
- ],
278
- [
279
- e[1][0] * C,
280
- e[1][1] * C,
281
- e[1][2] * C
282
- ],
283
- [
284
- e[2][0] * C,
285
- e[2][1] * C,
286
- e[2][2] * C
287
- ]
288
- ];
289
- }
290
- static multiplyVector(e, C) {
291
- let w = [
292
- ,
293
- ,
294
- ,
295
- ];
296
- for (let T = 0; T < 3; ++T) {
297
- w[T] = 0;
298
- for (let E = 0; E < 3; ++E) w[T] += e[T][E] * C[E];
299
- }
300
- return w;
301
- }
302
- static multiply(e, C) {
303
- let w = [
304
- ,
305
- ,
306
- ,
307
- ];
308
- for (let T = 0; T < 3; ++T) {
309
- w[T] = [
310
- ,
311
- ,
312
- ,
313
- ];
314
- for (let E = 0; E < 3; ++E) {
315
- w[T][E] = 0;
316
- for (let D = 0; D < 3; ++D) w[T][E] += e[T][D] * C[D][E];
317
- }
318
- }
319
- return w;
320
- }
321
- static skew(e) {
322
- return [
323
- [
324
- 0,
325
- -e[2],
326
- e[1]
327
- ],
328
- [
329
- e[2],
330
- 0,
331
- -e[0]
332
- ],
333
- [
334
- -e[1],
335
- e[0],
336
- 0
337
- ]
338
- ];
339
- }
340
- static inverse(e) {
341
- let C = [
342
- ,
343
- ,
344
- ,
345
- ], w = e[0][0], T = e[0][1], E = e[0][2], D = e[1][0], O = e[1][1], k = e[1][2], A = e[2][0], j = e[2][1], M = e[2][2], N = M * O - k * j, F = k * A - M * D, I = j * D - O * A, L = w * N + T * F + E * I;
346
- if (L === 0) return null;
347
- C[0] = [
348
- ,
349
- ,
350
- ,
351
- ], C[1] = [
352
- ,
353
- ,
354
- ,
355
- ], C[2] = [
356
- ,
357
- ,
358
- ,
359
- ];
360
- let R = 1 / L;
361
- return C[0][0] = N * R, C[0][1] = (E * j - M * T) * R, C[0][2] = (k * T - E * O) * R, C[1][0] = F * R, C[1][1] = (M * w - E * A) * R, C[1][2] = (E * D - k * w) * R, C[2][0] = I * R, C[2][1] = (T * A - j * w) * R, C[2][2] = (O * w - T * D) * R, C;
362
- }
363
- static determinant(e) {
364
- let C = e[0][0], w = e[1][0], T = e[2][0], E = e[0][1], D = e[1][1], O = e[2][1], k = e[0][2], A = e[1][2], j = e[2][2];
365
- return C * D * j - C * O * A - w * E * j + w * O * k + T * E * A - T * D * k;
366
- }
367
- static trace(e) {
368
- return e[0][0] + e[1][1] + e[2][2];
369
- }
370
- }, Vector = class {
371
- static concat(e, C) {
372
- return e.concat(C);
373
- }
374
- }, Vector3 = class e extends Vector {
375
- static norm(e) {
376
- return Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]);
377
- }
378
- static normalize(e) {
379
- let C = this.norm(e), w = [
380
- ,
381
- ,
382
- ,
383
- ];
384
- for (let T = 0; T < 3; T++) w[T] = e[T] / C;
385
- return w;
386
- }
387
- static sum(e, C) {
388
- return [
389
- e[0] + C[0],
390
- e[1] + C[1],
391
- e[2] + C[2]
392
- ];
393
- }
394
- static subtract(e, C) {
395
- return [
396
- e[0] - C[0],
397
- e[1] - C[1],
398
- e[2] - C[2]
399
- ];
400
- }
401
- static distance(C, w) {
402
- return e.norm(e.subtract(C, w));
403
- }
404
- static cross(e, C) {
405
- return [
406
- e[1] * C[2] - e[2] * C[1],
407
- e[2] * C[0] - e[0] * C[2],
408
- e[0] * C[1] - e[1] * C[0]
409
- ];
410
- }
411
- static dot(e, C) {
412
- return e[0] * C[0] + e[1] * C[1] + e[2] * C[2];
413
- }
414
- static multiplyScalar(e, C) {
415
- let w = [
416
- ,
417
- ,
418
- ,
419
- ];
420
- for (let T = 0; T < 3; T++) w[T] = e[T] * C;
421
- return w;
422
- }
423
- }, Matrix4 = class e {
424
- static get identity() {
425
- return [
426
- [
427
- 1,
428
- 0,
429
- 0,
430
- 0
431
- ],
432
- [
433
- 0,
434
- 1,
435
- 0,
436
- 0
437
- ],
438
- [
439
- 0,
440
- 0,
441
- 1,
442
- 0
443
- ],
444
- [
445
- 0,
446
- 0,
447
- 0,
448
- 1
449
- ]
450
- ];
451
- }
452
- static clone(e) {
453
- return [
454
- e[0].slice(0),
455
- e[1].slice(0),
456
- e[2].slice(0),
457
- e[3].slice(0)
458
- ];
459
- }
460
- static sum(e, C) {
461
- return [
462
- [
463
- e[0][0] + C[0][0],
464
- e[0][1] + C[0][1],
465
- e[0][2] + C[0][2],
466
- e[0][3] + C[0][3]
467
- ],
468
- [
469
- e[1][0] + C[1][0],
470
- e[1][1] + C[1][1],
471
- e[1][2] + C[1][2],
472
- e[1][3] + C[1][3]
473
- ],
474
- [
475
- e[2][0] + C[2][0],
476
- e[2][1] + C[2][1],
477
- e[2][2] + C[2][2],
478
- e[2][3] + C[2][3]
479
- ],
480
- [
481
- e[3][0] + C[3][0],
482
- e[3][1] + C[3][1],
483
- e[3][2] + C[3][2],
484
- e[3][3] + C[3][3]
485
- ]
486
- ];
487
- }
488
- static subtract(e, C) {
489
- return [
490
- [
491
- e[0][0] - C[0][0],
492
- e[0][1] - C[0][1],
493
- e[0][2] - C[0][2],
494
- e[0][3] - C[0][3]
495
- ],
496
- [
497
- e[1][0] - C[1][0],
498
- e[1][1] - C[1][1],
499
- e[1][2] - C[1][2],
500
- e[1][3] - C[1][3]
501
- ],
502
- [
503
- e[2][0] - C[2][0],
504
- e[2][1] - C[2][1],
505
- e[2][2] - C[2][2],
506
- e[2][3] - C[2][3]
507
- ],
508
- [
509
- e[3][0] - C[3][0],
510
- e[3][1] - C[3][1],
511
- e[3][2] - C[3][2],
512
- e[3][3] - C[3][3]
513
- ]
514
- ];
515
- }
516
- static fromMatrix3(e) {
517
- return [
518
- [
519
- e[0][0],
520
- e[0][1],
521
- e[0][2],
522
- 0
523
- ],
524
- [
525
- e[1][0],
526
- e[1][1],
527
- e[1][2],
528
- 0
529
- ],
530
- [
531
- e[2][0],
532
- e[2][1],
533
- e[2][2],
534
- 0
535
- ],
536
- [
537
- 0,
538
- 0,
539
- 0,
540
- 1
541
- ]
542
- ];
543
- }
544
- static fromDiagVector(e) {
545
- return [
546
- [
547
- e[0],
548
- 0,
549
- 0,
550
- 0
551
- ],
552
- [
553
- 0,
554
- e[1],
555
- 0,
556
- 0
557
- ],
558
- [
559
- 0,
560
- 0,
561
- e[2],
562
- 0
563
- ],
564
- [
565
- 0,
566
- 0,
567
- 0,
568
- e[3]
569
- ]
570
- ];
571
- }
572
- static fromVector(e) {
573
- return [
574
- [
575
- e[0],
576
- e[4],
577
- e[8],
578
- e[12]
579
- ],
580
- [
581
- e[1],
582
- e[5],
583
- e[9],
584
- e[13]
585
- ],
586
- [
587
- e[2],
588
- e[6],
589
- e[10],
590
- e[14]
591
- ],
592
- [
593
- e[3],
594
- e[7],
595
- e[11],
596
- e[15]
597
- ]
598
- ];
599
- }
600
- static toVector(e) {
601
- return [
602
- e[0][0],
603
- e[1][0],
604
- e[2][0],
605
- e[3][0],
606
- e[0][1],
607
- e[1][1],
608
- e[2][1],
609
- e[3][1],
610
- e[0][2],
611
- e[1][2],
612
- e[2][2],
613
- e[3][2],
614
- e[0][3],
615
- e[1][3],
616
- e[2][3],
617
- e[3][3]
618
- ];
619
- }
620
- static multiply(e, C) {
621
- let w = [
622
- ,
623
- ,
624
- ,
625
- ,
626
- ];
627
- for (let T = 0; T < 4; ++T) {
628
- w[T] = [
629
- ,
630
- ,
631
- ,
632
- ,
633
- ];
634
- for (let E = 0; E < 4; ++E) {
635
- w[T][E] = 0;
636
- for (let D = 0; D < 4; ++D) w[T][E] += e[T][D] * C[D][E];
637
- }
638
- }
639
- return w;
640
- }
641
- static multiplyScalar(e, C) {
642
- let w = [
643
- ,
644
- ,
645
- ,
646
- ,
647
- ];
648
- for (let T = 0; T < 4; ++T) {
649
- w[T] = [
650
- ,
651
- ,
652
- ,
653
- ,
654
- ];
655
- for (let E = 0; E < 4; ++E) w[T][E] = e[T][E] * C;
656
- }
657
- return w;
658
- }
659
- static multiplyVector(e, C) {
660
- let w = [
661
- ,
662
- ,
663
- ,
664
- ,
665
- ];
666
- for (let T = 0; T < 4; ++T) {
667
- w[T] = 0;
668
- for (let E = 0; E < 4; ++E) w[T] += e[T][E] * C[E];
669
- }
670
- return w;
671
- }
672
- static multiplyVector3(C, w) {
673
- return e.multiplyVector(C, [...w, 1]).slice(0, 3);
674
- }
675
- static transpose(e) {
676
- return [
677
- [
678
- e[0][0],
679
- e[1][0],
680
- e[2][0],
681
- e[3][0]
682
- ],
683
- [
684
- e[0][1],
685
- e[1][1],
686
- e[2][1],
687
- e[3][1]
688
- ],
689
- [
690
- e[0][2],
691
- e[1][2],
692
- e[2][2],
693
- e[3][2]
694
- ],
695
- [
696
- e[0][3],
697
- e[1][3],
698
- e[2][3],
699
- e[3][3]
700
- ]
701
- ];
702
- }
703
- static invert(C) {
704
- let w = e.toVector(C), T = w[0], E = w[1], D = w[2], O = w[3], k = w[4], A = w[5], j = w[6], M = w[7], N = w[8], F = w[9], I = w[10], L = w[11], R = w[12], z = w[13], B = w[14], V = w[15], H = F * B * M - z * I * M + z * j * L - A * B * L - F * j * V + A * I * V, U = R * I * M - N * B * M - R * j * L + k * B * L + N * j * V - k * I * V, W = N * z * M - R * F * M + R * A * L - k * z * L - N * A * V + k * F * V, G = R * F * j - N * z * j - R * A * I + k * z * I + N * A * B - k * F * B, K = T * H + E * U + D * W + O * G;
705
- if (K === 0) return null;
706
- let q = 1 / K;
707
- return w[0] = H * q, w[1] = (z * I * O - F * B * O - z * D * L + E * B * L + F * D * V - E * I * V) * q, w[2] = (A * B * O - z * j * O + z * D * M - E * B * M - A * D * V + E * j * V) * q, w[3] = (F * j * O - A * I * O - F * D * M + E * I * M + A * D * L - E * j * L) * q, w[4] = U * q, w[5] = (N * B * O - R * I * O + R * D * L - T * B * L - N * D * V + T * I * V) * q, w[6] = (R * j * O - k * B * O - R * D * M + T * B * M + k * D * V - T * j * V) * q, w[7] = (k * I * O - N * j * O + N * D * M - T * I * M - k * D * L + T * j * L) * q, w[8] = W * q, w[9] = (R * F * O - N * z * O - R * E * L + T * z * L + N * E * V - T * F * V) * q, w[10] = (k * z * O - R * A * O + R * E * M - T * z * M - k * E * V + T * A * V) * q, w[11] = (N * A * O - k * F * O - N * E * M + T * F * M + k * E * L - T * A * L) * q, w[12] = G * q, w[13] = (N * z * D - R * F * D + R * E * I - T * z * I - N * E * B + T * F * B) * q, w[14] = (R * A * D - k * z * D - R * E * j + T * z * j + k * E * B - T * A * B) * q, w[15] = (k * F * D - N * A * D + N * E * j - T * F * j - k * E * I + T * A * I) * q, e.fromVector(w);
708
- }
709
- static determinant(e) {
710
- let C = e[0][0], w = e[1][0], T = e[2][0], E = e[3][0], D = e[0][1], O = e[1][1], k = e[2][1], A = e[3][1], j = e[0][2], M = e[1][2], N = e[2][2], F = e[3][2], I = e[0][3], L = e[1][3], R = e[2][3], z = e[3][3];
711
- return I * (Number(E) * k * M - T * A * M - E * O * N + w * A * N + T * O * F - w * k * F) + L * (Number(C) * k * F - C * A * N + E * D * N - T * D * F + T * A * j - E * k * j) + R * (Number(C) * A * M - C * O * F - E * D * M + w * D * F + E * O * j - w * A * j) + z * (-T * O * j - C * k * M + C * O * N + T * D * M - w * D * N + w * k * j);
712
- }
713
- static compose(e, C, w = [
714
- 1,
715
- 1,
716
- 1
717
- ]) {
718
- let [T, E, D] = w;
719
- return [
720
- [
721
- C[0][0] * T,
722
- C[0][1] * E,
723
- C[0][2] * D,
724
- e[0]
725
- ],
726
- [
727
- C[1][0] * T,
728
- C[1][1] * E,
729
- C[1][2] * D,
730
- e[1]
731
- ],
732
- [
733
- C[2][0] * T,
734
- C[2][1] * E,
735
- C[2][2] * D,
736
- e[2]
737
- ],
738
- [
739
- 0,
740
- 0,
741
- 0,
742
- 1
743
- ]
744
- ];
745
- }
746
- static decompose(C) {
747
- let w = [
748
- Vector3.norm([
749
- C[0][0],
750
- C[1][0],
751
- C[2][0]
752
- ]),
753
- Vector3.norm([
754
- C[0][1],
755
- C[1][1],
756
- C[2][1]
757
- ]),
758
- Vector3.norm([
759
- C[0][2],
760
- C[1][2],
761
- C[2][2]
762
- ])
763
- ];
764
- e.determinant(C) < 0 && (w[0] = -w[0]);
765
- let T = [
766
- C[0][3],
767
- C[1][3],
768
- C[2][3]
769
- ], E = 1 / w[0], D = 1 / w[1], O = 1 / w[2];
770
- return {
771
- translation: T,
772
- scale: w,
773
- rotation: [
774
- [
775
- C[0][0] * E,
776
- C[0][1] * D,
777
- C[0][2] * O
778
- ],
779
- [
780
- C[1][0] * E,
781
- C[1][1] * D,
782
- C[1][2] * O
783
- ],
784
- [
785
- C[2][0] * E,
786
- C[2][1] * D,
787
- C[2][2] * O
788
- ]
789
- ]
790
- };
791
- }
792
- static extractRotation(e) {
793
- let C = 1 / Vector3.norm([
794
- e[0][0],
795
- e[1][0],
796
- e[2][0]
797
- ]), w = 1 / Vector3.norm([
798
- e[0][1],
799
- e[1][1],
800
- e[2][1]
801
- ]), T = 1 / Vector3.norm([
802
- e[0][2],
803
- e[1][2],
804
- e[2][2]
805
- ]);
806
- return [
807
- [
808
- e[0][0] * C,
809
- e[0][1] * w,
810
- e[0][2] * T
811
- ],
812
- [
813
- e[1][0] * C,
814
- e[1][1] * w,
815
- e[1][2] * T
816
- ],
817
- [
818
- e[2][0] * C,
819
- e[2][1] * w,
820
- e[2][2] * T
821
- ]
822
- ];
823
- }
824
- static extractTranslation(e) {
825
- return [
826
- e[0][3],
827
- e[1][3],
828
- e[2][3]
829
- ];
830
- }
831
- static scaleTranslation(e, C) {
832
- return [
833
- [
834
- e[0][0],
835
- e[0][1],
836
- e[0][2],
837
- e[0][3] * C[0]
838
- ],
839
- [
840
- e[1][0],
841
- e[1][1],
842
- e[1][2],
843
- e[1][3] * C[1]
844
- ],
845
- [
846
- e[2][0],
847
- e[2][1],
848
- e[2][2],
849
- e[2][3] * C[2]
850
- ],
851
- [
852
- e[3][0],
853
- e[3][1],
854
- e[3][2],
855
- e[3][3]
856
- ]
857
- ];
858
- }
859
- static setTranslation(e, C) {
860
- return e[0][3] = C[0], e[1][3] = C[1], e[2][3] = C[2], e;
861
- }
862
- static toString(e) {
863
- return "[\n" + e.map((e) => " [" + e.map((e) => e.toFixed(2)).join(", ") + "]").join(",\n") + "\n]";
864
- }
865
- }, _Quaternion = class e {
866
- static get identity() {
867
- return [
868
- 1,
869
- 0,
870
- 0,
871
- 0
872
- ];
873
- }
874
- static sum(e, C) {
875
- return [
876
- e[0] + C[0],
877
- e[1] + C[1],
878
- e[2] + C[2],
879
- e[3] + C[3]
880
- ];
881
- }
882
- static rotateMatlab(e, C) {
883
- let [w, T, E, D] = e, [O, k, A] = C;
884
- return [
885
- w * (w * O - E * A + D * k) - E * (w * A - T * k + E * O) + T * (T * O + E * k + D * A) + D * (w * k + T * A - D * O),
886
- w * (w * k + T * A - D * O) + T * (w * A - T * k + E * O) + E * (T * O + E * k + D * A) - D * (w * O - E * A + D * k),
887
- w * (w * A - T * k + E * O) - T * (w * k + T * A - D * O) + E * (w * O - E * A + D * k) + D * (T * O + E * k + D * A)
888
- ];
889
- }
890
- static rotate(e, C) {
891
- let [w, T, E, D] = e, O = [
892
- T,
893
- E,
894
- D
895
- ], k = Vector3.cross(O, C);
896
- k = Vector3.sum(k, k);
897
- let A = Vector3.sum(C, Vector3.multiplyScalar(k, w));
898
- return Vector3.sum(A, Vector3.cross(O, k));
899
- }
900
- static inverse(e) {
901
- return [
902
- -e[0],
903
- e[1],
904
- e[2],
905
- e[3]
906
- ];
907
- }
908
- static multiply(...C) {
909
- if (C.length === 2) {
910
- let [e, w, T, E] = C[0], [D, O, k, A] = C[1];
911
- return [
912
- e * D - w * O - T * k - E * A,
913
- e * O + D * w + T * A - E * k,
914
- e * k + D * T + E * O - w * A,
915
- e * A + D * E + w * k - T * O
916
- ];
917
- }
918
- return C.reduce((e, C) => this.multiply(e, C), e.identity);
919
- }
920
- static fromAxisAngle(e, C) {
921
- let w = Math.sin(C / 2);
922
- return [
923
- Math.cos(C / 2),
924
- e[0] * w,
925
- e[1] * w,
926
- e[2] * w
927
- ];
928
- }
929
- static rotX(e) {
930
- return this.fromAxisAngle([
931
- 1,
932
- 0,
933
- 0
934
- ], e);
935
- }
936
- static rotY(e) {
937
- return this.fromAxisAngle([
938
- 0,
939
- 1,
940
- 0
941
- ], e);
942
- }
943
- static rotZ(e) {
944
- return this.fromAxisAngle([
945
- 0,
946
- 0,
947
- 1
948
- ], e);
949
- }
950
- static fromMatrix3(e) {
951
- let C = Math.sqrt(1 + e[0][0] + e[1][1] + e[2][2]) / 2;
952
- return [
953
- C,
954
- (e[2][1] - e[1][2]) / (4 * C),
955
- (e[0][2] - e[2][0]) / (4 * C),
956
- (e[1][0] - e[0][1]) / (4 * C)
957
- ];
958
- }
959
- static fromMatrix3Matlab(e) {
960
- let C = Math.sqrt(1 + e[0][0] + e[1][1] + e[2][2]) / 2;
961
- return [
962
- C,
963
- (e[1][2] - e[2][1]) / (4 * C),
964
- (e[2][0] - e[0][2]) / (4 * C),
965
- (e[0][1] - e[1][0]) / (4 * C)
966
- ];
967
- }
968
- static toMatrix3(e) {
969
- let [C, w, T, E] = e, D = C * w, O = C * T, k = C * E, A = w * w, j = w * T, M = w * E, N = T * T, F = T * E, I = E * E;
970
- return [
971
- [
972
- 1 - 2 * (N + I),
973
- 2 * (j - k),
974
- 2 * (M + O)
975
- ],
976
- [
977
- 2 * (j + k),
978
- 1 - 2 * (A + I),
979
- 2 * (F - D)
980
- ],
981
- [
982
- 2 * (M - O),
983
- 2 * (F + D),
984
- 1 - 2 * (A + N)
985
- ]
986
- ];
987
- }
988
- static wxyz2xyzw(e) {
989
- return [
990
- e[1],
991
- e[2],
992
- e[3],
993
- e[0]
994
- ];
995
- }
996
- static xyzw2wxyz(e) {
997
- return [
998
- e[3],
999
- e[0],
1000
- e[1],
1001
- e[2]
1002
- ];
1003
- }
1004
- static distance(C, w) {
1005
- return Math.acos(Math.min(2 * e.dot(C, w) ** 2 - 1, 1));
1006
- }
1007
- static equals(C, w) {
1008
- return e.distance(C, w) < 1e-8;
1009
- }
1010
- static normalize(e) {
1011
- let C = this.norm(e), w = [
1012
- ,
1013
- ,
1014
- ,
1015
- ,
1016
- ];
1017
- for (let T = 0; T < 4; T++) w[T] = e[T] / C;
1018
- return w;
1019
- }
1020
- static norm(e) {
1021
- return Math.sqrt(e[0] ** 2 + e[1] ** 2 + e[2] ** 2 + e[3] ** 2);
1022
- }
1023
- static dot(e, C) {
1024
- return e[0] * C[0] + e[1] * C[1] + e[2] * C[2] + e[3] * C[3];
1025
- }
1026
- static getRotationBetweenTwoVectors(C, w) {
1027
- let T = Vector3.normalize(C), E = Vector3.normalize(w), D = Vector3.dot(T, E), O;
1028
- if (D < -.999999) return O = Vector3.cross([
1029
- 1,
1030
- 0,
1031
- 0
1032
- ], T), Vector3.norm(O) < 1e-6 && (O = Vector3.cross([
1033
- 0,
1034
- 1,
1035
- 0
1036
- ], T)), O = Vector3.normalize(O), e.fromAxisAngle(O, Math.PI);
1037
- if (D > .999999) return e.identity;
1038
- O = Vector3.cross(T, E);
1039
- let k = [
1040
- 1 + D,
1041
- O[0],
1042
- O[1],
1043
- O[2]
1044
- ];
1045
- return e.normalize(k);
1046
- }
1047
- static slerp(C, w, T) {
1048
- let E = C[1], D = C[2], O = C[3], k = C[0], A = w[1], j = w[2], M = w[3], N = w[0], F, I, L;
1049
- F = E * A + D * j + O * M + k * N, F < 0 && (F = -F, N = -N, A = -A, j = -j, M = -M);
1050
- let R = 1 - F < 1e-6;
1051
- if (R) I = 1 - T, L = T;
1052
- else {
1053
- let e = Math.acos(F), C = Math.sin(e);
1054
- I = Math.sin((1 - T) * e) / C, L = Math.sin(T * e) / C;
1055
- }
1056
- let z = [
1057
- I * k + L * N,
1058
- I * E + L * A,
1059
- I * D + L * j,
1060
- I * O + L * M
1061
- ];
1062
- return R && (z = e.normalize(z)), z;
1063
- }
1064
- static toString(e) {
1065
- return `[${e[0].toFixed(2)}, ${e[1].toFixed(2)}, ${e[2].toFixed(2)}, ${e[3].toFixed(2)}]`;
1066
- }
1067
- static fromUnitVectors(C, w) {
1068
- let T = Vector3.dot(C, w) + 1, E, D, O, k;
1069
- T < 2 ** -52 ? (T = 0, Math.abs(C[1]) > Math.abs(C[2]) ? (E = -C[1], D = C[0], O = 0, k = T) : (E = 0, D = -C[2], O = C[1], k = T)) : (E = C[1] * w[2] - C[2] * w[1], D = C[2] * w[0] - C[0] * w[2], O = C[0] * w[1] - C[1] * w[0], k = T);
1070
- let A = [
1071
- k,
1072
- E,
1073
- D,
1074
- O
1075
- ];
1076
- return e.normalize(A);
1077
- }
1078
- };
1079
- __publicField$1(_Quaternion, "ROTX_PI2", _Quaternion.rotX(Math.PI / 2)), __publicField$1(_Quaternion, "ROTX_PI", _Quaternion.rotX(Math.PI)), __publicField$1(_Quaternion, "ROTX_MPI2", _Quaternion.rotX(-Math.PI / 2)), __publicField$1(_Quaternion, "ROTY_PI2", _Quaternion.rotY(Math.PI / 2)), __publicField$1(_Quaternion, "ROTY_PI", _Quaternion.rotY(Math.PI)), __publicField$1(_Quaternion, "ROTY_MPI2", _Quaternion.rotY(-Math.PI / 2)), __publicField$1(_Quaternion, "ROTZ_PI2", _Quaternion.rotZ(Math.PI / 2)), __publicField$1(_Quaternion, "ROTZ_PI", _Quaternion.rotZ(Math.PI)), __publicField$1(_Quaternion, "ROTZ_MPI2", _Quaternion.rotZ(-Math.PI / 2));
1080
- var Quaternion = _Quaternion;
1081
- function deg2rad(e) {
1082
- return e * (Math.PI / 180);
1083
- }
1084
- function rad2deg(e) {
1085
- return e * 180 / Math.PI;
1086
- }
1087
- function diffAngle(e, C) {
1088
- return Math.atan2(Math.sin(e - C), Math.cos(e - C));
1089
- }
1090
- function diffAngleLines(e, C) {
1091
- let w = Math.abs(diffAngle(e, C));
1092
- return w > Math.PI / 2 && (w = Math.PI - w), w;
1093
- }
1094
- function std(e) {
1095
- let C = e.length, w = e.reduce((e, C) => e + C) / C;
1096
- return Math.sqrt(e.map((e) => (e - w) ** 2).reduce((e, C) => e + C) / C);
1097
- }
1098
- var Rotations = class e {
1099
- static eulerToQuaternionZXYDegrees(C) {
1100
- let w = C.map((e) => deg2rad(e));
1101
- return e.eulerToQuaternionZXY(w);
1102
- }
1103
- static eulerToQuaternionZXY(e) {
1104
- let C = e[0], w = e[1], T = e[2], E = Math.cos(C / 2), D = Math.cos(w / 2), O = Math.cos(T / 2), k = Math.sin(C / 2), A = Math.sin(w / 2), j = Math.sin(T / 2), M = E * D * O - k * A * j, N = E * A * O - k * D * j, F = k * A * O + E * D * j, I = k * D * O + E * A * j;
1105
- return M < 0 && (M = -M, N = -N, F = -F, I = -I), [
1106
- M,
1107
- N,
1108
- F,
1109
- I
1110
- ];
1111
- }
1112
- static quaternionToEulerZXYDegrees(C) {
1113
- return e.quaternionToEulerZXY(C).map((e) => rad2deg(e));
1114
- }
1115
- static quaternionToEulerZXY(e) {
1116
- let C = e[0], w = e[1], T = e[2], E = e[3], D, O, k, A = T * E + w * C;
1117
- return A > .499 ? (D = 2 * Math.atan2(T, C), O = Math.PI / 2, k = 0) : A < -.499 ? (D = -2 * Math.atan2(T, C), O = -Math.PI / 2, k = 0) : (D = Math.atan2(2 * E * C - 2 * T * w, 1 - 2 * E ** 2 - 2 * w ** 2), O = Math.asin(2 * A), k = Math.atan2(2 * T * C - 2 * E * w, 1 - 2 * T ** 2 - 2 * w ** 2)), D %= 2 * Math.PI, O %= Math.PI, k %= 2 * Math.PI, [
1118
- D,
1119
- O,
1120
- k
1121
- ];
1122
- }
1123
- static quaternionToEulerDegrees(C, w) {
1124
- return e.quaternionToEuler(C, w).map((e) => rad2deg(e));
1125
- }
1126
- static quaternionToEuler(C, w) {
1127
- let T = C[0], E = C[1], D = C[2], O = C[3];
1128
- switch (w.toLowerCase()) {
1129
- case "zyx": return e._threeaxisrot(2 * (E * D + T * O), T ** 2 + E ** 2 - D ** 2 - O ** 2, -2 * (E * O - T * D), 2 * (D * O + T * E), T ** 2 - E ** 2 - D ** 2 + O ** 2);
1130
- case "zyz": return e._twoaxisrot(2 * (D * O - T * E), 2 * (E * O + T * D), T ** 2 - E ** 2 - D ** 2 + O ** 2, 2 * (D * O + T * E), -2 * (E * O - T * D));
1131
- case "zxy": return e._threeaxisrot(-2 * (E * D - T * O), T ** 2 - E ** 2 + D ** 2 - O ** 2, 2 * (D * O + T * E), -2 * (E * O - T * D), T ** 2 - E ** 2 - D ** 2 + O ** 2);
1132
- case "zxz": return e._twoaxisrot(2 * (E * O + T * D), -2 * (D * O - T * E), T ** 2 - E ** 2 - D ** 2 + O ** 2, 2 * (E * O - T * D), 2 * (D * O + T * E));
1133
- case "yxz": return e._threeaxisrot(2 * (E * O + T * D), T ** 2 - E ** 2 - D ** 2 + O ** 2, -2 * (D * O - T * E), 2 * (E * D + T * O), T ** 2 - E ** 2 + D ** 2 - O ** 2);
1134
- case "yxy": return e._twoaxisrot(2 * (E * D - T * O), 2 * (D * O + T * E), T ** 2 - E ** 2 + D ** 2 - O ** 2, 2 * (E * D + T * O), -2 * (D * O - T * E));
1135
- case "yzx": return e._threeaxisrot(-2 * (E * O - T * D), T ** 2 + E ** 2 - D ** 2 - O ** 2, 2 * (E * D + T * O), -2 * (D * O - T * E), T ** 2 - E ** 2 + D ** 2 - O ** 2);
1136
- case "yzy": return e._twoaxisrot(2 * (D * O + T * E), -2 * (E * D - T * O), T ** 2 - E ** 2 + D ** 2 - O ** 2, 2 * (D * O - T * E), 2 * (E * D + T * O));
1137
- case "xyz": return e._threeaxisrot(-2 * (D * O - T * E), T ** 2 - E ** 2 - D ** 2 + O ** 2, 2 * (E * O + T * D), -2 * (E * D - T * O), T ** 2 + E ** 2 - D ** 2 - O ** 2);
1138
- case "xyx": return e._twoaxisrot(2 * (E * D + T * O), -2 * (E * O - T * D), T ** 2 + E ** 2 - D ** 2 - O ** 2, 2 * (E * D - T * O), 2 * (E * O + T * D));
1139
- case "xzy": return e._threeaxisrot(2 * (D * O + T * E), T ** 2 - E ** 2 + D ** 2 - O ** 2, -2 * (E * D - T * O), 2 * (E * O + T * D), T ** 2 + E ** 2 - D ** 2 - O ** 2);
1140
- case "xzx": return e._twoaxisrot(2 * (E * O - T * D), 2 * (E * D + T * O), T ** 2 + E ** 2 - D ** 2 - O ** 2, 2 * (E * O + T * D), -2 * (E * D - T * O));
1141
- }
1142
- throw Error("unknown order");
1143
- }
1144
- static _threeaxisrot(e, C, w, T, E) {
1145
- return [
1146
- Math.atan2(e, C),
1147
- Math.asin(w),
1148
- Math.atan2(T, E)
1149
- ];
1150
- }
1151
- static _twoaxisrot(e, C, w, T, E) {
1152
- return [
1153
- Math.atan2(e, C),
1154
- Math.acos(w),
1155
- Math.atan2(T, E)
1156
- ];
1157
- }
1158
- static getHeadingFromQuaternion(e) {
1159
- let [C, w, T, E] = e, D = C * w, O = T * E, k = w ** 2;
1160
- return Math.asin(2 * (D + O)) < Math.PI / 4 && k + T ** 2 < .5 ? -Math.atan2(C * E - w * T, .5 - k - E ** 2) : -Math.atan2(w * E + C * T, D - O);
1161
- }
1162
15
  }, __defProp = Object.defineProperty, __defNormalProp = (e, C, w) => C in e ? __defProp(e, C, {
1163
16
  enumerable: !0,
1164
17
  configurable: !0,
@@ -2522,39 +1375,39 @@ var field = function(e, C, w) {
2522
1375
  }
2523
1376
  update(e, C, w, T) {
2524
1377
  if (!this.quaternion) return this.tryInitialize(C, T);
2525
- let E = this.quaternion, D = E, O = Vector3.multiplyScalar(w, .5 * e), k = this.computeC([
1378
+ let E = this.quaternion, D = E, O = Vector3.multiplyScalar(w, .5 * e), N = this.computeC([
2526
1379
  1,
2527
1380
  O[0],
2528
1381
  O[1],
2529
1382
  O[2]
2530
- ]), A = Matrix4.multiplyVector(k, E), j = Matrix3.diag([
1383
+ ]), L = Matrix4.multiplyVector(N, E), R = Matrix3.diag([
2531
1384
  D[0],
2532
1385
  D[0],
2533
1386
  D[0]
2534
- ]), M = Matrix3.skew([
1387
+ ]), z = Matrix3.skew([
2535
1388
  D[1],
2536
1389
  D[2],
2537
1390
  D[3]
2538
- ]), N = [
1391
+ ]), B = [
2539
1392
  -1 * D[1],
2540
1393
  -1 * D[2],
2541
1394
  -1 * D[3]
2542
- ], F = Matrix.concatRow([N], Matrix3.sum(M, j)), I = Matrix4.multiplyScalar(Matrix.multiply(Matrix.multiply(F, this.noises[T ? "absolute" : "relative"].gyr), Matrix.transpose(F)), (e / 2) ** 2), L = Matrix4.sum(Matrix4.multiply(Matrix4.multiply(k, this.P), Matrix4.transpose(k)), I), R = Vector3.normalize(C), z, B, V;
1395
+ ], V = Matrix.concatRow([B], Matrix3.sum(z, R)), H = Matrix4.multiplyScalar(Matrix.multiply(Matrix.multiply(V, this.noises[T ? "absolute" : "relative"].gyr), Matrix.transpose(V)), (e / 2) ** 2), U = Matrix4.sum(Matrix4.multiply(Matrix4.multiply(N, this.P), Matrix4.transpose(N)), H), W = Vector3.normalize(C), G, K, q;
2543
1396
  if (T) {
2544
- let e = Vector3.normalize(T), C = Vector3.cross(R, e), w = Vector3.normalize(C), E = Vector3.subtract(w, Quaternion.rotateMatlab(A, this.cRef)), D = Vector3.subtract(R, Quaternion.rotateMatlab(A, this.accRef));
2545
- z = Vector.concat(E, D);
2546
- let O = this.jacobianES(A, this.cRef), k = this.jacobianES(A, this.accRef);
2547
- V = Matrix.concatRow(O, k);
2548
- let j = Matrix.concatLine(this.noises.absolute.yc, Matrix3.zeros), M = Matrix.concatLine(Matrix3.zeros, this.noises.absolute.acc), N = Matrix.concatRow(j, M);
2549
- B = Matrix.multiply(Matrix.multiply(L, Matrix.transpose(V)), Matrix.inverse(Matrix.sum(Matrix.multiply(Matrix.multiply(V, L), Matrix.transpose(V)), N)));
1397
+ let e = Vector3.normalize(T), C = Vector3.cross(W, e), w = Vector3.normalize(C), E = Vector3.subtract(w, Quaternion.rotateMatlab(L, this.cRef)), D = Vector3.subtract(W, Quaternion.rotateMatlab(L, this.accRef));
1398
+ G = Vector.concat(E, D);
1399
+ let O = this.jacobianES(L, this.cRef), j = this.jacobianES(L, this.accRef);
1400
+ q = Matrix.concatRow(O, j);
1401
+ let N = Matrix.concatLine(this.noises.absolute.yc, Matrix3.zeros), R = Matrix.concatLine(Matrix3.zeros, this.noises.absolute.acc), z = Matrix.concatRow(N, R);
1402
+ K = Matrix.multiply(Matrix.multiply(U, Matrix.transpose(q)), Matrix.inverse(Matrix.sum(Matrix.multiply(Matrix.multiply(q, U), Matrix.transpose(q)), z)));
2550
1403
  } else {
2551
- z = Vector3.subtract(R, Quaternion.rotateMatlab(A, this.accRef)), V = this.jacobianES(A, this.accRef);
1404
+ G = Vector3.subtract(W, Quaternion.rotateMatlab(L, this.accRef)), q = this.jacobianES(L, this.accRef);
2552
1405
  let e = this.noises.relative.acc;
2553
- B = Matrix.multiply(Matrix.multiply(L, Matrix.transpose(V)), Matrix3.inverse(Matrix3.sum(Matrix.multiply(Matrix.multiply(V, L), Matrix.transpose(V)), e)));
1406
+ K = Matrix.multiply(Matrix.multiply(U, Matrix.transpose(q)), Matrix3.inverse(Matrix3.sum(Matrix.multiply(Matrix.multiply(q, U), Matrix.transpose(q)), e)));
2554
1407
  }
2555
- E = Quaternion.sum(A, Matrix.multiplyVector(B, z));
2556
- let H = Matrix4.multiply(Matrix4.subtract(Matrix4.identity, Matrix.multiply(B, V)), L);
2557
- return E = Quaternion.normalize(E), this.quaternion = E, this.P = H, E;
1408
+ E = Quaternion.sum(L, Matrix.multiplyVector(K, G));
1409
+ let J = Matrix4.multiply(Matrix4.subtract(Matrix4.identity, Matrix.multiply(K, q)), U);
1410
+ return E = Quaternion.normalize(E), this.quaternion = E, this.P = J, E;
2558
1411
  }
2559
1412
  computeC(e) {
2560
1413
  return [
@@ -3052,7 +1905,23 @@ var field = function(e, C, w) {
3052
1905
  }
3053
1906
  }(), package_default = {
3054
1907
  name: "@wemap/providers",
3055
- version: "14.6.0-beta.1",
1908
+ version: "14.6.0-beta.3",
1909
+ description: "Sensor, positioning and VPS providers for the Wemap SDK.",
1910
+ license: "UNLICENSED",
1911
+ author: "Wemap SAS",
1912
+ homepage: "https://github.com/wemap/wemap-sdk-js#readme",
1913
+ repository: {
1914
+ type: "git",
1915
+ url: "git+https://github.com/wemap/wemap-sdk-js.git",
1916
+ directory: "packages/providers"
1917
+ },
1918
+ bugs: { url: "https://github.com/wemap/wemap-sdk-js/issues" },
1919
+ keywords: [
1920
+ "wemap",
1921
+ "sdk",
1922
+ "providers",
1923
+ "vps"
1924
+ ],
3056
1925
  type: "module",
3057
1926
  publishConfig: { access: "public" },
3058
1927
  main: "./dist/index.js",
@@ -3061,18 +1930,19 @@ var field = function(e, C, w) {
3061
1930
  import: "./dist/index.js",
3062
1931
  types: "./dist/index.d.ts"
3063
1932
  } },
1933
+ sideEffects: !1,
3064
1934
  files: ["dist"],
3065
1935
  dependencies: {
3066
- "@wemap/camera": "14.6.0-beta.1",
3067
- "@wemap/core": "14.6.0-beta.1",
3068
- "@wemap/geo": "14.6.0-beta.1",
3069
- "@wemap/osm": "14.6.0-beta.1",
3070
- "@wemap/routers": "14.6.0-beta.1",
3071
- "@wemap/utils": "14.6.0-beta.1"
1936
+ "@wemap/camera": "14.6.0-beta.3",
1937
+ "@wemap/core": "14.6.0-beta.3",
1938
+ "@wemap/geo": "14.6.0-beta.3",
1939
+ "@wemap/maths": "14.6.0-beta.3",
1940
+ "@wemap/osm": "14.6.0-beta.3",
1941
+ "@wemap/routers": "14.6.0-beta.3",
1942
+ "@wemap/utils": "14.6.0-beta.3"
3072
1943
  },
3073
1944
  devDependencies: {
3074
1945
  "@wemap/logger-legacy": "^13.3.0",
3075
- "@wemap/maths-legacy": "^13.3.0",
3076
1946
  geomag: "^1.0.0"
3077
1947
  }
3078
1948
  }, InclinationFromAccProvider_default = new class extends Provider_default {
@@ -3233,8 +2103,8 @@ var field = function(e, C, w) {
3233
2103
  return Logger.debug("[VPS] Server respond error"), null;
3234
2104
  }
3235
2105
  if (j.status !== 200) return Logger.debug("[VPS] Server respond error"), null;
3236
- let M = await j.json(), F = VpsResponse_default.fromJson(M, k);
3237
- return Logger.debug(`[VPS] Server respond ${F.success ? "success" : "not found"}`), F;
2106
+ let M = await j.json(), N = VpsResponse_default.fromJson(M, k);
2107
+ return Logger.debug(`[VPS] Server respond ${N.success ? "success" : "not found"}`), N;
3238
2108
  }
3239
2109
  static getHeadingFromQuaternion(e) {
3240
2110
  let [C, w, T, E] = e, D = Math.sqrt(2) / 2, O = [
@@ -3411,7 +2281,7 @@ var field = function(e, C, w) {
3411
2281
  ...k && { position: k },
3412
2282
  ...AbsoluteAttitudeProvider_default.lastEvent && { attitude: AbsoluteAttitudeProvider_default.lastEvent }
3413
2283
  }), this._currentAttemptId === null && (this._attemptIdCounter += 1, this._currentAttemptId = this._attemptIdCounter);
3414
- let A = RelativeAttitudeProvider_default.lastEvent, j = GeoRelativePositionProvider_default.lastEvent, M = A && j ? {
2284
+ let A = RelativeAttitudeProvider_default.lastEvent, j = GeoRelativePositionProvider_default.lastEvent, N = A && j ? {
3415
2285
  position: Quaternion.rotate(e.ENU_TO_ARCORE_ROT, [
3416
2286
  j.x,
3417
2287
  j.y,
@@ -3423,7 +2293,7 @@ var field = function(e, C, w) {
3423
2293
  installation_id: null,
3424
2294
  ...this._currentAttemptId !== null && { attempt_id: this._currentAttemptId },
3425
2295
  caller: this._requestCaller
3426
- }, M);
2296
+ }, N);
3427
2297
  if (!F || !F.success) {
3428
2298
  this._scanFailureCallbacks.forEach(({ id: e, callback: C }) => C({
3429
2299
  listenerId: e,
@@ -3433,20 +2303,20 @@ var field = function(e, C, w) {
3433
2303
  continue;
3434
2304
  }
3435
2305
  this._currentAttemptId = null;
3436
- let I = F.attitude.quaternion, L = Quaternion.multiply(I, e.CAMERA_TO_SMARTPHONE_ROT), R = Quaternion.multiply(Quaternion.fromAxisAngle([
2306
+ let I = F.attitude.quaternion, R = Quaternion.multiply(I, e.CAMERA_TO_SMARTPHONE_ROT), z = Quaternion.multiply(Quaternion.fromAxisAngle([
3437
2307
  0,
3438
2308
  0,
3439
2309
  1
3440
- ], deg2rad(window.orientation || 0)), L), z = this._relativeRotationCalc?.tickEnd() || new Attitude([
2310
+ ], deg2rad(window.orientation || 0)), R), B = this._relativeRotationCalc?.tickEnd() || new Attitude([
3441
2311
  1,
3442
2312
  0,
3443
2313
  0,
3444
2314
  0
3445
- ]), B = new AbsoluteAttitude(Quaternion.multiply(R, z.quaternion), F.attitude.time, F.attitude.accuracy), V = F.position.clone();
3446
- if (V.accuracy === null && (V.accuracy = 5), T()) break;
2315
+ ]), V = new AbsoluteAttitude(Quaternion.multiply(z, B.quaternion), F.attitude.time, F.attitude.accuracy), H = F.position.clone();
2316
+ if (H.accuracy === null && (H.accuracy = 5), T()) break;
3447
2317
  this.notify({
3448
- absoluteAttitude: B,
3449
- absolutePosition: V
2318
+ absoluteAttitude: V,
2319
+ absolutePosition: H
3450
2320
  });
3451
2321
  }
3452
2322
  };
@@ -3511,6 +2381,7 @@ var field = function(e, C, w) {
3511
2381
  useAllAbsolutePositions = !1;
3512
2382
  _waitUntilNextVpsPosition = !1;
3513
2383
  _lastPolestarFix = null;
2384
+ ignoreGnssWifi = !1;
3514
2385
  getName = () => "AbsolutePosition";
3515
2386
  availability() {
3516
2387
  return AvailabilityHelper.some([
@@ -3524,6 +2395,7 @@ var field = function(e, C, w) {
3524
2395
  GeoRelativePositionProvider_default.getAvailability().then((e) => {
3525
2396
  e || (this._relativePositionProviderId = GeoRelativePositionProvider_default.addEventListener((e) => this._onRelativePosition(e)));
3526
2397
  }), this._gnssWifiProviderId = GnssWifiProvider_default.addEventListener((e) => {
2398
+ if (this.ignoreGnssWifi) return;
3527
2399
  let C = e.clone();
3528
2400
  C.bearing = null, this._onAbsolutePosition(C, !1);
3529
2401
  }), this._vpsProviderId = VpsProvider_default.addEventListener((e) => this._onAbsolutePosition(e.absolutePosition), this.notifyError, !1), ProvidersOptions_default.hasPoleStar && (this._polestarProviderId = PoleStarProvider_default.addEventListener((e) => {
@@ -3970,8 +2842,8 @@ var field = function(e, C, w) {
3970
2842
  if (!(w instanceof Edge)) return;
3971
2843
  let E, D = diffAngle(w.bearing, T.bearing), O = diffAngle(w.bearing + Math.PI, T.bearing);
3972
2844
  E = Math.abs(D) < Math.abs(O) ? w.bearing : (w.bearing + Math.PI) % (2 * Math.PI);
3973
- let A = new AbsoluteHeading(E, T.time, 0);
3974
- AbsoluteAttitudeProvider_default._forceHeadingForRelative(A), this._countStepsFromLastMatching = 0;
2845
+ let k = new AbsoluteHeading(E, T.time, 0);
2846
+ AbsoluteAttitudeProvider_default._forceHeadingForRelative(k), this._countStepsFromLastMatching = 0;
3975
2847
  }
3976
2848
  getProjection(e, C, w) {
3977
2849
  let T = {
@@ -4103,11 +2975,11 @@ var field = function(e, C, w) {
4103
2975
  return;
4104
2976
  }
4105
2977
  if (e.isJump(T, w)) {
4106
- let E = this._smoothing === null ? T : this._smoothing.interpAttitude(T), D = E.heading, O = w.heading, k = diffAngle(O, D), A = Math.abs(k) < e.HIGH_JUMP_THRESHOLD ? e.ROTATION_SPEED_CONVERGENCE : e.ROTATION_SPEED_HIGH_JUMP_CONVERGENCE, j = E.time, M = Math.abs(k) / A, N = k < 0 ? -1 : 1;
2978
+ let E = this._smoothing === null ? T : this._smoothing.interpAttitude(T), D = E.heading, O = w.heading, k = diffAngle(O, D), A = Math.abs(k) < e.HIGH_JUMP_THRESHOLD ? e.ROTATION_SPEED_CONVERGENCE : e.ROTATION_SPEED_HIGH_JUMP_CONVERGENCE, j = E.time, N = Math.abs(k) / A, F = k < 0 ? -1 : 1;
4107
2979
  this._smoothing = {
4108
- toTime: j + M,
2980
+ toTime: j + N,
4109
2981
  interpAttitude: (e) => {
4110
- let w = D + A * (e.time - j) * N, T = Quaternion.fromAxisAngle([
2982
+ let w = D + A * (e.time - j) * F, T = Quaternion.fromAxisAngle([
4111
2983
  0,
4112
2984
  0,
4113
2985
  1