@mentra/miniapp 0.3.0-dev.0
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/README.md +259 -0
- package/dist/background/index.d.ts +59 -0
- package/dist/background/index.d.ts.map +1 -0
- package/dist/background/index.js +25 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/register.d.ts +38 -0
- package/dist/background/register.d.ts.map +1 -0
- package/dist/background/register.js +75 -0
- package/dist/background/register.js.map +1 -0
- package/dist/dev-reload.d.ts +21 -0
- package/dist/dev-reload.d.ts.map +1 -0
- package/dist/dev-reload.js +62 -0
- package/dist/dev-reload.js.map +1 -0
- package/dist/envelope.d.ts +23 -0
- package/dist/envelope.d.ts.map +1 -0
- package/dist/envelope.js +47 -0
- package/dist/envelope.js.map +1 -0
- package/dist/globals.d.ts +54 -0
- package/dist/globals.d.ts.map +1 -0
- package/dist/globals.js +12 -0
- package/dist/globals.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/actions.d.ts +54 -0
- package/dist/modules/actions.d.ts.map +1 -0
- package/dist/modules/actions.js +122 -0
- package/dist/modules/actions.js.map +1 -0
- package/dist/modules/auth.d.ts +25 -0
- package/dist/modules/auth.d.ts.map +1 -0
- package/dist/modules/auth.js +52 -0
- package/dist/modules/auth.js.map +1 -0
- package/dist/modules/base64.d.ts +16 -0
- package/dist/modules/base64.d.ts.map +1 -0
- package/dist/modules/base64.js +92 -0
- package/dist/modules/base64.js.map +1 -0
- package/dist/modules/blob.d.ts +161 -0
- package/dist/modules/blob.d.ts.map +1 -0
- package/dist/modules/blob.js +277 -0
- package/dist/modules/blob.js.map +1 -0
- package/dist/modules/camera.d.ts +137 -0
- package/dist/modules/camera.d.ts.map +1 -0
- package/dist/modules/camera.js +104 -0
- package/dist/modules/camera.js.map +1 -0
- package/dist/modules/cloud.d.ts +34 -0
- package/dist/modules/cloud.d.ts.map +1 -0
- package/dist/modules/cloud.js +70 -0
- package/dist/modules/cloud.js.map +1 -0
- package/dist/modules/dashboard.d.ts +16 -0
- package/dist/modules/dashboard.d.ts.map +1 -0
- package/dist/modules/dashboard.js +27 -0
- package/dist/modules/dashboard.js.map +1 -0
- package/dist/modules/display.d.ts +106 -0
- package/dist/modules/display.d.ts.map +1 -0
- package/dist/modules/display.js +57 -0
- package/dist/modules/display.js.map +1 -0
- package/dist/modules/events.d.ts +167 -0
- package/dist/modules/events.d.ts.map +1 -0
- package/dist/modules/events.js +123 -0
- package/dist/modules/events.js.map +1 -0
- package/dist/modules/glasses.d.ts +28 -0
- package/dist/modules/glasses.d.ts.map +1 -0
- package/dist/modules/glasses.js +39 -0
- package/dist/modules/glasses.js.map +1 -0
- package/dist/modules/heading.d.ts +16 -0
- package/dist/modules/heading.d.ts.map +1 -0
- package/dist/modules/heading.js +20 -0
- package/dist/modules/heading.js.map +1 -0
- package/dist/modules/imu.d.ts +31 -0
- package/dist/modules/imu.d.ts.map +1 -0
- package/dist/modules/imu.js +40 -0
- package/dist/modules/imu.js.map +1 -0
- package/dist/modules/input.d.ts +34 -0
- package/dist/modules/input.d.ts.map +1 -0
- package/dist/modules/input.js +50 -0
- package/dist/modules/input.js.map +1 -0
- package/dist/modules/led.d.ts +35 -0
- package/dist/modules/led.d.ts.map +1 -0
- package/dist/modules/led.js +39 -0
- package/dist/modules/led.js.map +1 -0
- package/dist/modules/location.d.ts +27 -0
- package/dist/modules/location.d.ts.map +1 -0
- package/dist/modules/location.js +35 -0
- package/dist/modules/location.js.map +1 -0
- package/dist/modules/mic.d.ts +44 -0
- package/dist/modules/mic.d.ts.map +1 -0
- package/dist/modules/mic.js +67 -0
- package/dist/modules/mic.js.map +1 -0
- package/dist/modules/miniapps.d.ts +72 -0
- package/dist/modules/miniapps.d.ts.map +1 -0
- package/dist/modules/miniapps.js +48 -0
- package/dist/modules/miniapps.js.map +1 -0
- package/dist/modules/navigation.d.ts +326 -0
- package/dist/modules/navigation.d.ts.map +1 -0
- package/dist/modules/navigation.js +386 -0
- package/dist/modules/navigation.js.map +1 -0
- package/dist/modules/permissions.d.ts +58 -0
- package/dist/modules/permissions.d.ts.map +1 -0
- package/dist/modules/permissions.js +66 -0
- package/dist/modules/permissions.js.map +1 -0
- package/dist/modules/phone.d.ts +61 -0
- package/dist/modules/phone.d.ts.map +1 -0
- package/dist/modules/phone.js +94 -0
- package/dist/modules/phone.js.map +1 -0
- package/dist/modules/pivots/engine.d.ts +169 -0
- package/dist/modules/pivots/engine.d.ts.map +1 -0
- package/dist/modules/pivots/engine.js +779 -0
- package/dist/modules/pivots/engine.js.map +1 -0
- package/dist/modules/pivots/geometry.d.ts +84 -0
- package/dist/modules/pivots/geometry.d.ts.map +1 -0
- package/dist/modules/pivots/geometry.js +371 -0
- package/dist/modules/pivots/geometry.js.map +1 -0
- package/dist/modules/pivots/instructions.d.ts +139 -0
- package/dist/modules/pivots/instructions.d.ts.map +1 -0
- package/dist/modules/pivots/instructions.js +280 -0
- package/dist/modules/pivots/instructions.js.map +1 -0
- package/dist/modules/speaker.d.ts +163 -0
- package/dist/modules/speaker.d.ts.map +1 -0
- package/dist/modules/speaker.js +250 -0
- package/dist/modules/speaker.js.map +1 -0
- package/dist/modules/storage.d.ts +50 -0
- package/dist/modules/storage.d.ts.map +1 -0
- package/dist/modules/storage.js +99 -0
- package/dist/modules/storage.js.map +1 -0
- package/dist/modules/stream.d.ts +129 -0
- package/dist/modules/stream.d.ts.map +1 -0
- package/dist/modules/stream.js +52 -0
- package/dist/modules/stream.js.map +1 -0
- package/dist/modules/system.d.ts +45 -0
- package/dist/modules/system.d.ts.map +1 -0
- package/dist/modules/system.js +42 -0
- package/dist/modules/system.js.map +1 -0
- package/dist/modules/transcription.d.ts +67 -0
- package/dist/modules/transcription.d.ts.map +1 -0
- package/dist/modules/transcription.js +106 -0
- package/dist/modules/transcription.js.map +1 -0
- package/dist/modules/translation.d.ts +59 -0
- package/dist/modules/translation.d.ts.map +1 -0
- package/dist/modules/translation.js +119 -0
- package/dist/modules/translation.js.map +1 -0
- package/dist/modules/ui.d.ts +186 -0
- package/dist/modules/ui.d.ts.map +1 -0
- package/dist/modules/ui.js +293 -0
- package/dist/modules/ui.js.map +1 -0
- package/dist/protocol.d.ts +294 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +320 -0
- package/dist/protocol.js.map +1 -0
- package/dist/react/MentraProvider.d.ts +33 -0
- package/dist/react/MentraProvider.d.ts.map +1 -0
- package/dist/react/MentraProvider.js +15 -0
- package/dist/react/MentraProvider.js.map +1 -0
- package/dist/react/MiniappHeader.d.ts +44 -0
- package/dist/react/MiniappHeader.d.ts.map +1 -0
- package/dist/react/MiniappHeader.js +32 -0
- package/dist/react/MiniappHeader.js.map +1 -0
- package/dist/react/index.d.ts +13 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +9 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/useCapabilities.d.ts +26 -0
- package/dist/react/useCapabilities.d.ts.map +1 -0
- package/dist/react/useCapabilities.js +27 -0
- package/dist/react/useCapabilities.js.map +1 -0
- package/dist/react/useCapsuleHeaderStyle.d.ts +27 -0
- package/dist/react/useCapsuleHeaderStyle.d.ts.map +1 -0
- package/dist/react/useCapsuleHeaderStyle.js +36 -0
- package/dist/react/useCapsuleHeaderStyle.js.map +1 -0
- package/dist/react/useColorScheme.d.ts +18 -0
- package/dist/react/useColorScheme.d.ts.map +1 -0
- package/dist/react/useColorScheme.js +24 -0
- package/dist/react/useColorScheme.js.map +1 -0
- package/dist/react/useConnected.d.ts +17 -0
- package/dist/react/useConnected.d.ts.map +1 -0
- package/dist/react/useConnected.js +39 -0
- package/dist/react/useConnected.js.map +1 -0
- package/dist/react/useRpc.d.ts +29 -0
- package/dist/react/useRpc.d.ts.map +1 -0
- package/dist/react/useRpc.js +82 -0
- package/dist/react/useRpc.js.map +1 -0
- package/dist/react/useSafeArea.d.ts +21 -0
- package/dist/react/useSafeArea.d.ts.map +1 -0
- package/dist/react/useSafeArea.js +22 -0
- package/dist/react/useSafeArea.js.map +1 -0
- package/dist/session.d.ts +310 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +653 -0
- package/dist/session.js.map +1 -0
- package/dist/sub-path-types.test-d.d.ts +28 -0
- package/dist/sub-path-types.test-d.d.ts.map +1 -0
- package/dist/sub-path-types.test-d.js +37 -0
- package/dist/sub-path-types.test-d.js.map +1 -0
- package/dist/transport/auto.d.ts +35 -0
- package/dist/transport/auto.d.ts.map +1 -0
- package/dist/transport/auto.js +125 -0
- package/dist/transport/auto.js.map +1 -0
- package/dist/transport/dispatch.d.ts +43 -0
- package/dist/transport/dispatch.d.ts.map +1 -0
- package/dist/transport/dispatch.js +91 -0
- package/dist/transport/dispatch.js.map +1 -0
- package/dist/transport/local-socket.d.ts +28 -0
- package/dist/transport/local-socket.d.ts.map +1 -0
- package/dist/transport/local-socket.js +80 -0
- package/dist/transport/local-socket.js.map +1 -0
- package/dist/transport/mock.d.ts +54 -0
- package/dist/transport/mock.d.ts.map +1 -0
- package/dist/transport/mock.js +205 -0
- package/dist/transport/mock.js.map +1 -0
- package/dist/transport/postmessage.d.ts +36 -0
- package/dist/transport/postmessage.d.ts.map +1 -0
- package/dist/transport/postmessage.js +78 -0
- package/dist/transport/postmessage.js.map +1 -0
- package/dist/transport/types.d.ts +25 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +11 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/ui/index.d.ts +98 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +32 -0
- package/dist/ui/index.js.map +1 -0
- package/package.json +75 -0
- package/src/background/index.ts +152 -0
- package/src/background/register.ts +85 -0
- package/src/dev-reload.ts +60 -0
- package/src/envelope.ts +54 -0
- package/src/globals.ts +62 -0
- package/src/index.ts +171 -0
- package/src/modules/actions.ts +156 -0
- package/src/modules/auth.ts +68 -0
- package/src/modules/base64.ts +87 -0
- package/src/modules/blob.ts +341 -0
- package/src/modules/camera.ts +196 -0
- package/src/modules/cloud.ts +94 -0
- package/src/modules/dashboard.ts +31 -0
- package/src/modules/display.ts +122 -0
- package/src/modules/events.ts +264 -0
- package/src/modules/glasses.ts +44 -0
- package/src/modules/heading.ts +23 -0
- package/src/modules/imu.ts +44 -0
- package/src/modules/input.ts +71 -0
- package/src/modules/led.ts +61 -0
- package/src/modules/location.ts +39 -0
- package/src/modules/mic.ts +74 -0
- package/src/modules/miniapps.ts +90 -0
- package/src/modules/navigation.ts +670 -0
- package/src/modules/permissions.ts +84 -0
- package/src/modules/phone.ts +120 -0
- package/src/modules/pivots/engine.ts +863 -0
- package/src/modules/pivots/geometry.ts +409 -0
- package/src/modules/pivots/instructions.ts +343 -0
- package/src/modules/speaker.ts +328 -0
- package/src/modules/storage.ts +109 -0
- package/src/modules/stream.ts +163 -0
- package/src/modules/system.ts +76 -0
- package/src/modules/transcription.ts +128 -0
- package/src/modules/translation.ts +149 -0
- package/src/modules/ui.ts +498 -0
- package/src/protocol.ts +371 -0
- package/src/react/MentraProvider.tsx +50 -0
- package/src/react/MiniappHeader.tsx +122 -0
- package/src/react/index.ts +12 -0
- package/src/react/useCapabilities.ts +29 -0
- package/src/react/useCapsuleHeaderStyle.ts +54 -0
- package/src/react/useColorScheme.ts +26 -0
- package/src/react/useConnected.ts +47 -0
- package/src/react/useRpc.ts +106 -0
- package/src/react/useSafeArea.ts +40 -0
- package/src/session.ts +878 -0
- package/src/sub-path-types.test-d.ts +49 -0
- package/src/transport/auto.ts +143 -0
- package/src/transport/dispatch.ts +106 -0
- package/src/transport/local-socket.ts +93 -0
- package/src/transport/mock.ts +248 -0
- package/src/transport/postmessage.ts +95 -0
- package/src/transport/types.ts +26 -0
- package/src/ui/index.ts +122 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/modules/pivots/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Private geometry helpers for the pivot engine.
|
|
3
|
+
*
|
|
4
|
+
* Lifted (with light edits) from the Navigation miniapp's
|
|
5
|
+
* `src/client/lib/geometry/{geometry,pivots}.ts`. Lives inside the
|
|
6
|
+
* SDK now so the public `navigation.getPivots()` / `onPivot()` APIs
|
|
7
|
+
* are fully self-contained — no consumer has to ship its own
|
|
8
|
+
* polyline-simplification + pivot-extraction code.
|
|
9
|
+
*
|
|
10
|
+
* Not exported from the SDK barrel. Internal only.
|
|
11
|
+
*/
|
|
12
|
+
import type { LatLng } from "../navigation";
|
|
13
|
+
export type PivotDirection = "left" | "right";
|
|
14
|
+
/** Raw pivot returned by `extractPivots` — pre-enrichment, geometry only. */
|
|
15
|
+
export type RawPivot = {
|
|
16
|
+
lat: number;
|
|
17
|
+
lng: number;
|
|
18
|
+
direction: PivotDirection;
|
|
19
|
+
/** Index of this point in the *simplified* polyline (post-RDP). */
|
|
20
|
+
simplifiedRouteIndex: number;
|
|
21
|
+
/** Approximate index in the ORIGINAL polyline (pre-RDP). Best-effort lookup. */
|
|
22
|
+
rawRouteIndex: number;
|
|
23
|
+
/** Signed heading delta in degrees: +right, -left. */
|
|
24
|
+
headingDelta: number;
|
|
25
|
+
};
|
|
26
|
+
/** Great-circle distance in meters (haversine). */
|
|
27
|
+
export declare function haversineMeters(a: LatLng, b: LatLng): number;
|
|
28
|
+
/** Compass bearing from `a` to `b`, in degrees [0, 360). */
|
|
29
|
+
export declare function bearingDeg(a: LatLng, b: LatLng): number;
|
|
30
|
+
/** Smallest signed difference: target - actual, in [-180, 180]. */
|
|
31
|
+
export declare function signedAngleDiff(target: number, actual: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* Extract raw turn pivots from a polyline. Returns a sparse list of
|
|
34
|
+
* meaningful turns — STRAIGHT segments, polyline noise, and tiny
|
|
35
|
+
* wobbles are filtered out.
|
|
36
|
+
*
|
|
37
|
+
* Algorithm:
|
|
38
|
+
* 1. RDP-simplify with epsilon = 5m
|
|
39
|
+
* 2. Accumulate consecutive same-direction bends into runs
|
|
40
|
+
* 3. Emit one pivot per run whose summed heading delta clears 25°
|
|
41
|
+
* 4. Merge same-direction pivots within 25m of each other
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractPivots(rawPoints: LatLng[]): RawPivot[];
|
|
44
|
+
/** Raw crossing leg returned by `extractCrossings`. */
|
|
45
|
+
export type RawCrossing = {
|
|
46
|
+
/** Polyline index of the curb on the user's current sidewalk (start of leg). */
|
|
47
|
+
startIndex: number;
|
|
48
|
+
/** Polyline index of the curb on the far sidewalk (end of leg). */
|
|
49
|
+
endIndex: number;
|
|
50
|
+
/** Coords at startIndex, surfaced for convenience. */
|
|
51
|
+
lat: number;
|
|
52
|
+
lng: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Detect crosswalk-shaped micro-legs in a route polyline. A crossing
|
|
56
|
+
* is a short leg (<maxLegMeters) that turns sharply (>minBendDeg) off
|
|
57
|
+
* the previous leg and is followed by a sharp turn *back* to roughly
|
|
58
|
+
* the original direction — the classic "step off the sidewalk → walk
|
|
59
|
+
* across → step back onto the sidewalk" shape.
|
|
60
|
+
*
|
|
61
|
+
* The shape check alone isn't enough though: at every intersection
|
|
62
|
+
* Google's polyline traces small perpendicular curb-cut bends even when
|
|
63
|
+
* the user is walking straight through on the SAME sidewalk. To filter
|
|
64
|
+
* those out we also require a meaningful perpendicular displacement —
|
|
65
|
+
* the route after the crossing must continue on the OTHER side of the
|
|
66
|
+
* pre-crossing path, not curve back onto it.
|
|
67
|
+
*
|
|
68
|
+
* Returns each crossing as the polyline indices that bracket the leg
|
|
69
|
+
* we'd skip. The engine wraps each into a synthetic `CROSS_STREET`
|
|
70
|
+
* pivot so glasses HUDs can announce "Cross the road" alongside the
|
|
71
|
+
* usual turn maneuvers.
|
|
72
|
+
*/
|
|
73
|
+
export declare function extractCrossings(points: LatLng[], opts?: {
|
|
74
|
+
maxLegMeters?: number;
|
|
75
|
+
minBendDeg?: number;
|
|
76
|
+
minSidewalkSwitchMeters?: number;
|
|
77
|
+
}): RawCrossing[];
|
|
78
|
+
/**
|
|
79
|
+
* Cumulative haversine distance along a polyline from index 0 to
|
|
80
|
+
* each point. Returned array is the same length as `points` —
|
|
81
|
+
* `cumulative[i]` is meters from start to `points[i]`.
|
|
82
|
+
*/
|
|
83
|
+
export declare function cumulativeDistances(points: LatLng[]): number[];
|
|
84
|
+
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/modules/pivots/geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,eAAe,CAAA;AAEzC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAA;AAE7C,6EAA6E;AAC7E,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,cAAc,CAAA;IACzB,mEAAmE;IACnE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAiBD,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASvD;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAmDD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAwI7D;AAED,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG;IACxB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,GAAE;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAM,GACxF,WAAW,EAAE,CA6Cf;AA+CD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO9D"}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Private geometry helpers for the pivot engine.
|
|
3
|
+
*
|
|
4
|
+
* Lifted (with light edits) from the Navigation miniapp's
|
|
5
|
+
* `src/client/lib/geometry/{geometry,pivots}.ts`. Lives inside the
|
|
6
|
+
* SDK now so the public `navigation.getPivots()` / `onPivot()` APIs
|
|
7
|
+
* are fully self-contained — no consumer has to ship its own
|
|
8
|
+
* polyline-simplification + pivot-extraction code.
|
|
9
|
+
*
|
|
10
|
+
* Not exported from the SDK barrel. Internal only.
|
|
11
|
+
*/
|
|
12
|
+
const TURN_THRESHOLD_DEG = 15;
|
|
13
|
+
const SAME_DIR_MERGE_M = 25;
|
|
14
|
+
const RDP_EPSILON_M = 5;
|
|
15
|
+
const MIN_BEND_PER_POINT_DEG = 10;
|
|
16
|
+
const STRAIGHT_SEGMENT_BREAK_M = 1;
|
|
17
|
+
/**
|
|
18
|
+
* Pivots within this radius of each other are treated as one
|
|
19
|
+
* intersection and collapsed into a single net-direction pivot. The
|
|
20
|
+
* Routes API + walking polylines often split a single perceived turn
|
|
21
|
+
* (e.g. crossing a 6-way intersection diagonally) into multiple tight
|
|
22
|
+
* left/right/left zigzag pivots over ~10-20m. Merging them keeps the
|
|
23
|
+
* UI announcing one turn per real-world intersection.
|
|
24
|
+
*/
|
|
25
|
+
const INTERSECTION_CLUSTER_M = 30;
|
|
26
|
+
/** Great-circle distance in meters (haversine). */
|
|
27
|
+
export function haversineMeters(a, b) {
|
|
28
|
+
const R = 6371000;
|
|
29
|
+
const toRad = (d) => (d * Math.PI) / 180;
|
|
30
|
+
const dLat = toRad(b.lat - a.lat);
|
|
31
|
+
const dLng = toRad(b.lng - a.lng);
|
|
32
|
+
const lat1 = toRad(a.lat);
|
|
33
|
+
const lat2 = toRad(b.lat);
|
|
34
|
+
const x = Math.sin(dLat / 2) ** 2 + Math.sin(dLng / 2) ** 2 * Math.cos(lat1) * Math.cos(lat2);
|
|
35
|
+
return 2 * R * Math.asin(Math.sqrt(x));
|
|
36
|
+
}
|
|
37
|
+
/** Compass bearing from `a` to `b`, in degrees [0, 360). */
|
|
38
|
+
export function bearingDeg(a, b) {
|
|
39
|
+
const toRad = (d) => (d * Math.PI) / 180;
|
|
40
|
+
const toDeg = (r) => (r * 180) / Math.PI;
|
|
41
|
+
const lat1 = toRad(a.lat);
|
|
42
|
+
const lat2 = toRad(b.lat);
|
|
43
|
+
const dLng = toRad(b.lng - a.lng);
|
|
44
|
+
const y = Math.sin(dLng) * Math.cos(lat2);
|
|
45
|
+
const x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLng);
|
|
46
|
+
return (toDeg(Math.atan2(y, x)) + 360) % 360;
|
|
47
|
+
}
|
|
48
|
+
/** Smallest signed difference: target - actual, in [-180, 180]. */
|
|
49
|
+
export function signedAngleDiff(target, actual) {
|
|
50
|
+
return ((target - actual + 540) % 360) - 180;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Ramer-Douglas-Peucker polyline simplification. Returns indices into
|
|
54
|
+
* the ORIGINAL `points` array that survive the pass.
|
|
55
|
+
*/
|
|
56
|
+
function rdpSimplify(points, epsilonMeters) {
|
|
57
|
+
if (points.length < 3)
|
|
58
|
+
return points.map((_, i) => i);
|
|
59
|
+
const keep = new Array(points.length).fill(false);
|
|
60
|
+
keep[0] = true;
|
|
61
|
+
keep[points.length - 1] = true;
|
|
62
|
+
const stack = [[0, points.length - 1]];
|
|
63
|
+
while (stack.length) {
|
|
64
|
+
const [lo, hi] = stack.pop();
|
|
65
|
+
let maxDist = 0;
|
|
66
|
+
let maxIdx = -1;
|
|
67
|
+
for (let i = lo + 1; i < hi; i++) {
|
|
68
|
+
const d = perpDistMeters(points[i], points[lo], points[hi]);
|
|
69
|
+
if (d > maxDist) {
|
|
70
|
+
maxDist = d;
|
|
71
|
+
maxIdx = i;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (maxIdx !== -1 && maxDist > epsilonMeters) {
|
|
75
|
+
keep[maxIdx] = true;
|
|
76
|
+
stack.push([lo, maxIdx], [maxIdx, hi]);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const out = [];
|
|
80
|
+
for (let i = 0; i < keep.length; i++)
|
|
81
|
+
if (keep[i])
|
|
82
|
+
out.push(i);
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
/** Perpendicular distance from `p` to the infinite line a–b, in meters. */
|
|
86
|
+
function perpDistMeters(p, a, b) {
|
|
87
|
+
const mPerDegLat = 111320;
|
|
88
|
+
const mPerDegLng = 111320 * Math.cos((a.lat * Math.PI) / 180);
|
|
89
|
+
const bx = (b.lng - a.lng) * mPerDegLng;
|
|
90
|
+
const by = (b.lat - a.lat) * mPerDegLat;
|
|
91
|
+
const px = (p.lng - a.lng) * mPerDegLng;
|
|
92
|
+
const py = (p.lat - a.lat) * mPerDegLat;
|
|
93
|
+
const dx = bx;
|
|
94
|
+
const dy = by;
|
|
95
|
+
const len = Math.sqrt(dx * dx + dy * dy);
|
|
96
|
+
if (len === 0)
|
|
97
|
+
return Math.sqrt(px * px + py * py);
|
|
98
|
+
return Math.abs(dx * -py - -px * dy) / len;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract raw turn pivots from a polyline. Returns a sparse list of
|
|
102
|
+
* meaningful turns — STRAIGHT segments, polyline noise, and tiny
|
|
103
|
+
* wobbles are filtered out.
|
|
104
|
+
*
|
|
105
|
+
* Algorithm:
|
|
106
|
+
* 1. RDP-simplify with epsilon = 5m
|
|
107
|
+
* 2. Accumulate consecutive same-direction bends into runs
|
|
108
|
+
* 3. Emit one pivot per run whose summed heading delta clears 25°
|
|
109
|
+
* 4. Merge same-direction pivots within 25m of each other
|
|
110
|
+
*/
|
|
111
|
+
export function extractPivots(rawPoints) {
|
|
112
|
+
if (rawPoints.length < 3)
|
|
113
|
+
return [];
|
|
114
|
+
const keptIdx = rdpSimplify(rawPoints, RDP_EPSILON_M);
|
|
115
|
+
const simplified = keptIdx.map((i) => rawPoints[i]);
|
|
116
|
+
if (simplified.length < 3)
|
|
117
|
+
return [];
|
|
118
|
+
// Per-point signed deltas
|
|
119
|
+
const deltas = [];
|
|
120
|
+
for (let i = 1; i < simplified.length - 1; i++) {
|
|
121
|
+
const inBearing = bearingDeg(simplified[i - 1], simplified[i]);
|
|
122
|
+
const outBearing = bearingDeg(simplified[i], simplified[i + 1]);
|
|
123
|
+
deltas.push(signedAngleDiff(outBearing, inBearing));
|
|
124
|
+
}
|
|
125
|
+
const candidates = [];
|
|
126
|
+
let runStart = -1;
|
|
127
|
+
let runSum = 0;
|
|
128
|
+
let runSign = 0;
|
|
129
|
+
const flushRun = (endExclusive) => {
|
|
130
|
+
if (runStart === -1)
|
|
131
|
+
return;
|
|
132
|
+
if (Math.abs(runSum) >= TURN_THRESHOLD_DEG) {
|
|
133
|
+
let bestIdx = runStart;
|
|
134
|
+
let bestAbs = 0;
|
|
135
|
+
for (let k = runStart; k < endExclusive; k++) {
|
|
136
|
+
const a = Math.abs(deltas[k]);
|
|
137
|
+
if (a > bestAbs) {
|
|
138
|
+
bestAbs = a;
|
|
139
|
+
bestIdx = k;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const simplifiedIdx = bestIdx + 1;
|
|
143
|
+
candidates.push({
|
|
144
|
+
lat: simplified[simplifiedIdx].lat,
|
|
145
|
+
lng: simplified[simplifiedIdx].lng,
|
|
146
|
+
direction: runSum > 0 ? "right" : "left",
|
|
147
|
+
simplifiedRouteIndex: simplifiedIdx,
|
|
148
|
+
rawRouteIndex: keptIdx[simplifiedIdx],
|
|
149
|
+
headingDelta: runSum,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
runStart = -1;
|
|
153
|
+
runSum = 0;
|
|
154
|
+
runSign = 0;
|
|
155
|
+
};
|
|
156
|
+
let metersSinceLastBend = 0;
|
|
157
|
+
for (let k = 0; k < deltas.length; k++) {
|
|
158
|
+
const d = deltas[k];
|
|
159
|
+
const sign = d > 0 ? 1 : d < 0 ? -1 : 0;
|
|
160
|
+
const segLen = haversineMeters(simplified[k + 1], simplified[k + 2]);
|
|
161
|
+
if (sign === 0 || Math.abs(d) < MIN_BEND_PER_POINT_DEG) {
|
|
162
|
+
if (runStart !== -1) {
|
|
163
|
+
if (sign === runSign || sign === 0)
|
|
164
|
+
runSum += d;
|
|
165
|
+
metersSinceLastBend += segLen;
|
|
166
|
+
if (metersSinceLastBend >= STRAIGHT_SEGMENT_BREAK_M) {
|
|
167
|
+
flushRun(k + 1);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (runStart === -1) {
|
|
173
|
+
runStart = k;
|
|
174
|
+
runSum = d;
|
|
175
|
+
runSign = sign;
|
|
176
|
+
metersSinceLastBend = segLen;
|
|
177
|
+
}
|
|
178
|
+
else if (sign === runSign) {
|
|
179
|
+
if (metersSinceLastBend >= STRAIGHT_SEGMENT_BREAK_M) {
|
|
180
|
+
flushRun(k);
|
|
181
|
+
runStart = k;
|
|
182
|
+
runSum = d;
|
|
183
|
+
runSign = sign;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
runSum += d;
|
|
187
|
+
}
|
|
188
|
+
metersSinceLastBend = segLen;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
flushRun(k);
|
|
192
|
+
runStart = k;
|
|
193
|
+
runSum = d;
|
|
194
|
+
runSign = sign;
|
|
195
|
+
metersSinceLastBend = segLen;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
flushRun(deltas.length);
|
|
199
|
+
// Merge same-direction pivots that are close together.
|
|
200
|
+
const merged = [];
|
|
201
|
+
for (const p of candidates) {
|
|
202
|
+
const last = merged[merged.length - 1];
|
|
203
|
+
if (last &&
|
|
204
|
+
last.direction === p.direction &&
|
|
205
|
+
haversineMeters({ lat: last.lat, lng: last.lng }, { lat: p.lat, lng: p.lng }) < SAME_DIR_MERGE_M) {
|
|
206
|
+
if (Math.abs(p.headingDelta) > Math.abs(last.headingDelta)) {
|
|
207
|
+
merged[merged.length - 1] = p;
|
|
208
|
+
}
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
merged.push(p);
|
|
212
|
+
}
|
|
213
|
+
// Intersection-cluster merge: collapse pivots within
|
|
214
|
+
// INTERSECTION_CLUSTER_M of each other regardless of direction. The
|
|
215
|
+
// resulting pivot inherits the net heading delta — if a tight
|
|
216
|
+
// left→right→left zigzag at one intersection nets out to a right
|
|
217
|
+
// turn, the merged pivot is a right. The anchor lat/lng is the pivot
|
|
218
|
+
// with the largest individual heading delta in the cluster (most
|
|
219
|
+
// likely to be the "real" turn vertex). We tag the merged pivot with
|
|
220
|
+
// the SUMMED `headingDelta` so consumers can still see how sharp the
|
|
221
|
+
// net turn was.
|
|
222
|
+
const clustered = [];
|
|
223
|
+
for (const p of merged) {
|
|
224
|
+
const last = clustered[clustered.length - 1];
|
|
225
|
+
if (last && haversineMeters({ lat: last.lat, lng: last.lng }, { lat: p.lat, lng: p.lng }) < INTERSECTION_CLUSTER_M) {
|
|
226
|
+
const netDelta = last.headingDelta + p.headingDelta;
|
|
227
|
+
// Anchor on whichever pivot had the larger absolute bend — that's
|
|
228
|
+
// typically the geometric vertex of the actual turn.
|
|
229
|
+
const anchor = Math.abs(p.headingDelta) > Math.abs(last.headingDelta) ? p : last;
|
|
230
|
+
clustered[clustered.length - 1] = {
|
|
231
|
+
...anchor,
|
|
232
|
+
direction: netDelta > 0 ? "right" : "left",
|
|
233
|
+
headingDelta: netDelta,
|
|
234
|
+
};
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
clustered.push(p);
|
|
238
|
+
}
|
|
239
|
+
// Discard clusters whose NET turn fell back below the threshold
|
|
240
|
+
// (e.g. a left followed by an equal-magnitude right that cancels out
|
|
241
|
+
// — a pure jog with no real direction change).
|
|
242
|
+
return clustered.filter((p) => Math.abs(p.headingDelta) >= TURN_THRESHOLD_DEG);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Detect crosswalk-shaped micro-legs in a route polyline. A crossing
|
|
246
|
+
* is a short leg (<maxLegMeters) that turns sharply (>minBendDeg) off
|
|
247
|
+
* the previous leg and is followed by a sharp turn *back* to roughly
|
|
248
|
+
* the original direction — the classic "step off the sidewalk → walk
|
|
249
|
+
* across → step back onto the sidewalk" shape.
|
|
250
|
+
*
|
|
251
|
+
* The shape check alone isn't enough though: at every intersection
|
|
252
|
+
* Google's polyline traces small perpendicular curb-cut bends even when
|
|
253
|
+
* the user is walking straight through on the SAME sidewalk. To filter
|
|
254
|
+
* those out we also require a meaningful perpendicular displacement —
|
|
255
|
+
* the route after the crossing must continue on the OTHER side of the
|
|
256
|
+
* pre-crossing path, not curve back onto it.
|
|
257
|
+
*
|
|
258
|
+
* Returns each crossing as the polyline indices that bracket the leg
|
|
259
|
+
* we'd skip. The engine wraps each into a synthetic `CROSS_STREET`
|
|
260
|
+
* pivot so glasses HUDs can announce "Cross the road" alongside the
|
|
261
|
+
* usual turn maneuvers.
|
|
262
|
+
*/
|
|
263
|
+
export function extractCrossings(points, opts = {}) {
|
|
264
|
+
const maxLeg = opts.maxLegMeters ?? 25;
|
|
265
|
+
const minBend = opts.minBendDeg ?? 60;
|
|
266
|
+
// Minimum perpendicular distance from the post-crossing line back to
|
|
267
|
+
// the pre-crossing line. ~4m is wider than any sidewalk + GPS noise
|
|
268
|
+
// and narrower than a typical road. A real sidewalk-switch easily
|
|
269
|
+
// clears this; a curb-cut zigzag at a crosswalk you DON'T take stays
|
|
270
|
+
// well under it.
|
|
271
|
+
const minSwitch = opts.minSidewalkSwitchMeters ?? 4;
|
|
272
|
+
// How far past the crossing's end to sample for the displacement
|
|
273
|
+
// check. ~10m gives the polyline room to resume its post-crossing
|
|
274
|
+
// direction without being influenced by an immediate follow-on turn.
|
|
275
|
+
const sampleMeters = 10;
|
|
276
|
+
const out = [];
|
|
277
|
+
if (points.length < 4)
|
|
278
|
+
return out;
|
|
279
|
+
for (let i = 1; i < points.length - 2; i++) {
|
|
280
|
+
const prev = points[i - 1];
|
|
281
|
+
const here = points[i];
|
|
282
|
+
const next = points[i + 1];
|
|
283
|
+
const afterNext = points[i + 2];
|
|
284
|
+
const legOut = haversineMeters(here, next);
|
|
285
|
+
if (legOut >= maxLeg)
|
|
286
|
+
continue;
|
|
287
|
+
const bearIn = bearingDeg(prev, here);
|
|
288
|
+
const bearOut = bearingDeg(here, next);
|
|
289
|
+
const bend = Math.abs(signedAngleDiff(bearIn, bearOut));
|
|
290
|
+
if (bend <= minBend)
|
|
291
|
+
continue;
|
|
292
|
+
const bearAfter = bearingDeg(next, afterNext);
|
|
293
|
+
const bendBack = Math.abs(signedAngleDiff(bearOut, bearAfter));
|
|
294
|
+
const inOutDelta = Math.abs(signedAngleDiff(bearIn, bearAfter));
|
|
295
|
+
if (!(bendBack > minBend && inOutDelta < minBend))
|
|
296
|
+
continue;
|
|
297
|
+
// Displacement gate. Walk ~sampleMeters along the post-crossing
|
|
298
|
+
// polyline from `next` and ask: how far is that point from the
|
|
299
|
+
// pre-crossing line (extended forward through `here`)? Pass-through
|
|
300
|
+
// crosswalk traces have the route curving back to the same side
|
|
301
|
+
// (displacement ≈ 0). Real sidewalk-switches leave the route on
|
|
302
|
+
// the opposite side (displacement ≈ road width).
|
|
303
|
+
const sample = walkAlongPolyline(points, i + 1, sampleMeters);
|
|
304
|
+
if (!sample)
|
|
305
|
+
continue;
|
|
306
|
+
const displacement = perpDistanceMeters(sample, prev, here);
|
|
307
|
+
if (displacement < minSwitch)
|
|
308
|
+
continue;
|
|
309
|
+
out.push({ startIndex: i, endIndex: i + 1, lat: here.lat, lng: here.lng });
|
|
310
|
+
}
|
|
311
|
+
return out;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Walk forward from polyline index `startIdx` by `meters` and return
|
|
315
|
+
* the interpolated LatLng. Returns null when the remaining polyline
|
|
316
|
+
* is shorter than `meters` (we'd be measuring noise at the tail).
|
|
317
|
+
*/
|
|
318
|
+
function walkAlongPolyline(points, startIdx, meters) {
|
|
319
|
+
if (startIdx >= points.length - 1)
|
|
320
|
+
return null;
|
|
321
|
+
let remaining = meters;
|
|
322
|
+
let idx = startIdx;
|
|
323
|
+
while (idx < points.length - 1) {
|
|
324
|
+
const a = points[idx];
|
|
325
|
+
const b = points[idx + 1];
|
|
326
|
+
const segLen = haversineMeters(a, b);
|
|
327
|
+
if (remaining <= segLen) {
|
|
328
|
+
const t = segLen > 0 ? remaining / segLen : 0;
|
|
329
|
+
return { lat: a.lat + (b.lat - a.lat) * t, lng: a.lng + (b.lng - a.lng) * t };
|
|
330
|
+
}
|
|
331
|
+
remaining -= segLen;
|
|
332
|
+
idx++;
|
|
333
|
+
}
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Perpendicular distance in meters from `p` to the infinite line
|
|
338
|
+
* through `a → b`. Local-flat-earth projection — fine for the scales
|
|
339
|
+
* we're checking (a single intersection's worth of polyline).
|
|
340
|
+
*/
|
|
341
|
+
function perpDistanceMeters(p, a, b) {
|
|
342
|
+
const mPerDegLat = 111320;
|
|
343
|
+
const mPerDegLng = 111320 * Math.cos((a.lat * Math.PI) / 180);
|
|
344
|
+
const ax = a.lng * mPerDegLng;
|
|
345
|
+
const ay = a.lat * mPerDegLat;
|
|
346
|
+
const bx = b.lng * mPerDegLng;
|
|
347
|
+
const by = b.lat * mPerDegLat;
|
|
348
|
+
const px = p.lng * mPerDegLng;
|
|
349
|
+
const py = p.lat * mPerDegLat;
|
|
350
|
+
const dx = bx - ax;
|
|
351
|
+
const dy = by - ay;
|
|
352
|
+
const len = Math.sqrt(dx * dx + dy * dy);
|
|
353
|
+
if (len === 0)
|
|
354
|
+
return Math.hypot(px - ax, py - ay);
|
|
355
|
+
// |cross product| / |line vector| = perpendicular distance.
|
|
356
|
+
return Math.abs(dx * (py - ay) - dy * (px - ax)) / len;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Cumulative haversine distance along a polyline from index 0 to
|
|
360
|
+
* each point. Returned array is the same length as `points` —
|
|
361
|
+
* `cumulative[i]` is meters from start to `points[i]`.
|
|
362
|
+
*/
|
|
363
|
+
export function cumulativeDistances(points) {
|
|
364
|
+
const out = new Array(points.length);
|
|
365
|
+
out[0] = 0;
|
|
366
|
+
for (let i = 1; i < points.length; i++) {
|
|
367
|
+
out[i] = out[i - 1] + haversineMeters(points[i - 1], points[i]);
|
|
368
|
+
}
|
|
369
|
+
return out;
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../src/modules/pivots/geometry.ts"],"names":[],"mappings":"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"}
|