@sachitv/safe-math-ts 0.1.0 → 0.2.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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +318 -0
  3. package/esm/_dnt.test_shims.d.ts.map +1 -0
  4. package/esm/examples/attitude_interpolation_and_cache.test.d.ts.map +1 -0
  5. package/esm/examples/camera_projection.test.d.ts.map +1 -0
  6. package/esm/examples/cookbook_constant_accel_loop.test.d.ts.map +1 -0
  7. package/esm/examples/distinct_frame_guard.test.d.ts.map +1 -0
  8. package/esm/examples/end_to_end_projection_chain.test.d.ts.map +1 -0
  9. package/esm/examples/mat4_pose_decomposition.test.d.ts.map +1 -0
  10. package/esm/examples/normal_matrix_failure_recovery.test.d.ts.map +1 -0
  11. package/esm/examples/normal_matrix_perpendicularity.test.d.ts.map +1 -0
  12. package/esm/examples/physics_units_kinematics.test.d.ts.map +1 -0
  13. package/esm/examples/projection_edge_behavior.test.d.ts.map +1 -0
  14. package/esm/examples/quat_from_rotation_matrix.test.d.ts.map +1 -0
  15. package/esm/examples/quaternion_nlerp_vs_slerp.test.d.ts.map +1 -0
  16. package/esm/examples/rendering_normals_reflection.test.d.ts.map +1 -0
  17. package/esm/examples/robotics_pose_chain.test.d.ts.map +1 -0
  18. package/esm/examples/safe_api_failure_modes.test.d.ts.map +1 -0
  19. package/esm/examples/safe_vs_unsafe_apis.test.d.ts.map +1 -0
  20. package/esm/examples/sensor_extrinsics_chain.test.d.ts.map +1 -0
  21. package/esm/examples/transform_order_matters.test.d.ts.map +1 -0
  22. package/esm/examples/transform_point_vs_direction.test.d.ts.map +1 -0
  23. package/esm/examples/transform_round_trip.test.d.ts.map +1 -0
  24. package/esm/src/geometry3d/matrix4.d.ts +6 -2
  25. package/esm/src/geometry3d/matrix4.d.ts.map +1 -1
  26. package/esm/src/geometry3d/matrix4.js +21 -3
  27. package/esm/src/geometry3d/mod.d.ts +1 -1
  28. package/esm/src/geometry3d/mod.d.ts.map +1 -1
  29. package/esm/src/geometry3d/mod.js +1 -1
  30. package/esm/src/geometry3d/quaternion.d.ts +43 -2
  31. package/esm/src/geometry3d/quaternion.d.ts.map +1 -1
  32. package/esm/src/geometry3d/quaternion.js +121 -1
  33. package/esm/src/geometry3d/types.d.ts +35 -11
  34. package/esm/src/geometry3d/types.d.ts.map +1 -1
  35. package/esm/src/units.d.ts +43 -27
  36. package/esm/src/units.d.ts.map +1 -1
  37. package/esm/tests/assert.d.ts.map +1 -0
  38. package/esm/tests/matrix4.test.d.ts.map +1 -0
  39. package/esm/tests/quaternion.test.d.ts.map +1 -0
  40. package/esm/tests/type_safety.test.d.ts.map +1 -0
  41. package/esm/tests/units.test.d.ts.map +1 -0
  42. package/esm/tests/vector3.test.d.ts.map +1 -0
  43. package/esm/vitest-deno-shim.mjs +3 -0
  44. package/package.json +15 -6
  45. package/test_runner.cjs +215 -0
  46. package/vitest.browser.config.ts +24 -0
  47. package/vitest.cloudflare.config.ts +21 -0
  48. package/wrangler.toml +2 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sachit Vithaldas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,318 @@
1
+ # safe-math-ts
2
+
3
+ [![JSR Version](https://img.shields.io/jsr/v/%40sachitv/safe-math-ts?style=flat&logo=jsr&logoColor=white&label=)](https://jsr.io/@sachitv/safe-math-ts)
4
+ [![npm version](https://img.shields.io/npm/v/%40sachitv%2Fsafe-math-ts?style=flat&logo=npm&logoColor=white&label=&color=CB3837)](https://www.npmjs.com/package/@sachitv/safe-math-ts)
5
+ [![CI](https://github.com/sachitv/safe-math-ts/actions/workflows/ci.yml/badge.svg?branch=main&event=push)](https://github.com/sachitv/safe-math-ts/actions/workflows/ci.yml?query=branch%3Amain+event%3Apush)
6
+ [![Deno](https://img.shields.io/badge/deno-✓-28a745?style=flat&logo=deno&logoColor=white)](https://github.com/sachitv/safe-math-ts/actions/workflows/compat.yml?query=branch%3Amain+event%3Apush)
7
+ [![Node.js](https://img.shields.io/badge/node-✓-28a745?style=flat&logo=node.js&logoColor=white)](https://github.com/sachitv/safe-math-ts/actions/workflows/compat.yml?query=branch%3Amain+event%3Apush)
8
+ [![Bun](https://img.shields.io/badge/bun-✓-28a745?style=flat&logo=bun&logoColor=white)](https://github.com/sachitv/safe-math-ts/actions/workflows/compat.yml?query=branch%3Amain+event%3Apush)
9
+ [![Cloudflare](https://img.shields.io/badge/cloudflare-✓-28a745?style=flat&logo=cloudflare&logoColor=white)](https://github.com/sachitv/safe-math-ts/actions/workflows/compat.yml?query=branch%3Amain+event%3Apush)
10
+ [![Browser](https://img.shields.io/badge/browser-✓-28a745?style=flat&logo=google-chrome&logoColor=white)](https://github.com/sachitv/safe-math-ts/actions/workflows/compat.yml?query=branch%3Amain+event%3Apush)
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat)](LICENSE)
12
+
13
+ A zero-dependency Deno/TypeScript 3D math library with strict compile-time
14
+ safety for:
15
+
16
+ - Units
17
+ - Frames of reference
18
+ - Transform composition
19
+
20
+ The library is functional and exports **types + functions only** (no classes).
21
+
22
+ ## Strictness model
23
+
24
+ This library intentionally requires explicit tags when creating values:
25
+
26
+ - You must create units with `unit('m')`, `unit('s')`, etc.
27
+ - You must create frames with `frame('world')`, `frame('body')`, etc.
28
+ - You must pass those tags into constructors like `quantity`, `point3`,
29
+ `delta3`, `dir3`, `quat`, and `mat4`.
30
+
31
+ This prevents accidental creation of unframed or unitless math objects.
32
+
33
+ ## Install / import
34
+
35
+ **Deno (JSR)**
36
+
37
+ ```sh
38
+ deno add jsr:@sachitv/safe-math-ts
39
+ ```
40
+
41
+ ```ts
42
+ import { delta3, frame, point3, unit } from '@sachitv/safe-math-ts';
43
+ ```
44
+
45
+ **Node.js / Bun / Cloudflare Workers (npm)**
46
+
47
+ ```sh
48
+ npm install @sachitv/safe-math-ts
49
+ # or
50
+ bun add @sachitv/safe-math-ts
51
+ ```
52
+
53
+ ```ts
54
+ import { delta3, frame, point3, unit } from '@sachitv/safe-math-ts';
55
+ ```
56
+
57
+ **Direct import (Deno, no install step)**
58
+
59
+ ```ts
60
+ import {
61
+ delta3,
62
+ dimensionlessUnit,
63
+ dir3,
64
+ frame,
65
+ mat4FromRigidTransform,
66
+ point3,
67
+ quantity,
68
+ quat,
69
+ transformPoint3,
70
+ unit,
71
+ } from './mod.ts';
72
+ ```
73
+
74
+ ## Quick start
75
+
76
+ ```ts
77
+ import {
78
+ delta3,
79
+ dimensionlessUnit,
80
+ dir3,
81
+ frame,
82
+ mat4FromRigidTransform,
83
+ point3,
84
+ quantity,
85
+ quat,
86
+ transformPoint3,
87
+ unit,
88
+ } from './mod.ts';
89
+
90
+ const V = frame('V'); // Source frame
91
+ const L = frame('L'); // Destination frame
92
+ const m = unit('m');
93
+ const none = dimensionlessUnit;
94
+
95
+ const point_V = point3(
96
+ V,
97
+ quantity(m, 1),
98
+ quantity(m, 2),
99
+ quantity(m, 3),
100
+ );
101
+
102
+ const delta_offset_L = delta3(
103
+ L,
104
+ quantity(m, 10),
105
+ quantity(m, 0),
106
+ quantity(m, 0),
107
+ );
108
+
109
+ const dir_axisz_V = dir3(
110
+ V,
111
+ quantity(none, 0),
112
+ quantity(none, 0),
113
+ quantity(none, 1),
114
+ );
115
+
116
+ const quat_turn_LV = quat(
117
+ L,
118
+ V,
119
+ dir_axisz_V[0] * Math.sin(Math.PI / 4),
120
+ dir_axisz_V[1] * Math.sin(Math.PI / 4),
121
+ dir_axisz_V[2] * Math.sin(Math.PI / 4),
122
+ Math.cos(Math.PI / 4),
123
+ );
124
+
125
+ const pose_LV = mat4FromRigidTransform(
126
+ L,
127
+ V,
128
+ quat_turn_LV,
129
+ delta_offset_L,
130
+ );
131
+
132
+ const point_L = transformPoint3(pose_LV, point_V);
133
+ ```
134
+
135
+ ## Common usage patterns
136
+
137
+ - Use `point3` for absolute locations in a frame.
138
+ - Use `delta3` for translations/displacements.
139
+ - Use `dir3` for unitless axes and orientation vectors.
140
+ - Compute relative motion with `subPoint3(point_a, point_b)`.
141
+ - Apply rigid transforms to points with `transformPoint3`.
142
+ - Apply linear transforms/rotations to displacements with `transformDirection3`
143
+ or `rotateVec3ByQuat`.
144
+
145
+ ## Safe and unsafe APIs
146
+
147
+ - Safe APIs are the default functions (for example `normalizeVec3`, `clamp`,
148
+ `mat4Perspective`, `projectPoint3`).
149
+ - Unsafe APIs end with `Unsafe` (for example `normalizeVec3Unsafe`,
150
+ `clampUnsafe`, `mat4PerspectiveUnsafe`, `projectPoint3Unsafe`).
151
+ - Safe APIs validate inputs and throw on invalid/degenerate cases.
152
+ - Unsafe APIs skip validation and can produce `NaN`/`Infinity` on invalid
153
+ inputs.
154
+ - `matrix.quat()` is a safe helper: it validates that the upper-left 3x3 block
155
+ is a finite orthonormal rotation basis and throws for non-rotation matrices
156
+ (for example non-uniform scale/shear).
157
+ - Recommended pattern:
158
+ 1. Validate at system boundaries with safe APIs.
159
+ 2. Use unsafe APIs only in hot paths where inputs are already guaranteed.
160
+
161
+ ## Naming best practices
162
+
163
+ - Transform and rotation generics always use `<To, From>` order.
164
+ - Transform matrices use `pose_<frame rules>`.
165
+ - Quaternions use `quat_<name>_<frame rules>`.
166
+ - Position vectors use `point_<name>_<frame>` (or `point_<frame>` when no name
167
+ is needed).
168
+ - Direction vectors use `dir_<name>_<frame>` (or `dir_<frame>` when no name is
169
+ needed).
170
+ - Displacement vectors use `delta_<name>_<frame>` (or `delta_<frame>`).
171
+ - Single-letter frame symbols use compact `ToFrom` suffixes: `pose_LV`,
172
+ `quat_turn_LV`, `point_L`, `dir_V`, `delta_V`.
173
+ - Multi-letter frame symbols use one token per frame: `pose_local_vehicle`,
174
+ `quat_turn_local_vehicle`, `point_local`, `dir_vehicle`, `delta_vehicle`.
175
+ - Frame tokens themselves are single words. If a frame name would include
176
+ spaces, smash it into one word (for example `earthcenter`, `vehiclerear`),
177
+ then use names like `pose_earthcenter_vehiclerear` and
178
+ `quat_turn_earthcenter_vehiclerear`.
179
+ - Frame tag variable names themselves can be whatever you prefer (`L`,
180
+ `frame_local`, `localFrame`), but choose frame tokens that keep derived
181
+ variable names readable.
182
+ - This naming convention is for frame-bearing quantities only; it does not apply
183
+ to units (for example, `meter`, `second`, `none` are fine).
184
+ - Prefer short uppercase frame symbols (`L`, `V`, `B`, `W`) in handwritten math
185
+ and derived variable names.
186
+
187
+ Examples:
188
+
189
+ - `pose_LV: Mat4<'L', 'V', 'm'>` maps points in `V` to `L`, so:
190
+ `point_L = transformPoint3(pose_LV, point_V)`.
191
+ - `quat_turn_LV: Quaternion<'L', 'V'>` rotates vectors from `V` into `L`.
192
+ - `delta_local: Delta3<'m', 'local'>` represents a translation/displacement in
193
+ `local`.
194
+ - `pose_local_vehicle: Mat4<'local', 'vehicle', 'm'>` maps points in `vehicle`
195
+ to `local`.
196
+ - `composeMat4(pose_LB, pose_BV)` returns `pose_LV` (chain `L <- B <- V`).
197
+
198
+ ## API overview
199
+
200
+ This section documents the important public API and constraints without listing
201
+ every overload.
202
+
203
+ ### Core types
204
+
205
+ Units:
206
+
207
+ - `UnitExpr`
208
+ - `Dimensionless`
209
+ - `UnitFromString<Expr>`
210
+ - `UnitTag<Unit>`
211
+ - `Quantity<Unit>`
212
+ - `MulUnit<A, B>`, `DivUnit<A, B>`, `SqrtUnit<U>`
213
+
214
+ Frames and geometry:
215
+
216
+ - `FrameTag<Frame>`
217
+ - `Point3<Unit, Frame>`
218
+ - `Delta3<Unit, Frame>`
219
+ - `Dir3<Frame>`
220
+ - `Quaternion<ToFrame, FromFrame>`
221
+ - `Mat4<ToFrame, FromFrame, TranslationUnit>`
222
+ - `LinearMat4<ToFrame, FromFrame>`
223
+ - `ProjectionMat4<ToFrame, FromFrame, DepthUnit>`
224
+
225
+ ### Constructors and tokens
226
+
227
+ ```ts
228
+ unit<Expr extends string>(name: string extends Expr ? never : Expr): UnitTag<UnitFromString<Expr>>
229
+ const dimensionlessUnit: UnitTag<Dimensionless>
230
+ frame<Frame extends string>(name: Frame): FrameTag<Frame>
231
+
232
+ quantity<Unit extends UnitExpr>(unitTag: UnitTag<Unit>, value: number): Quantity<Unit>
233
+ dimensionless(value: number): Quantity<Dimensionless>
234
+ valueOf<Unit extends UnitExpr>(value: Quantity<Unit>): number
235
+ ```
236
+
237
+ Non-obvious constraints:
238
+
239
+ - `unit(...)` accepts literal/narrow string types only.
240
+ - `sqrt(...)` is compile-time guarded and only allowed for square-rootable
241
+ units.
242
+
243
+ ```ts
244
+ sqrt<Unit extends UnitExpr>(
245
+ value: [SqrtUnit<Unit>] extends [never] ? never : Quantity<Unit>,
246
+ ): Quantity<SqrtUnit<Unit>>
247
+ ```
248
+
249
+ ### Scalar unit math
250
+
251
+ - Arithmetic: `add`, `sub`, `neg`, `abs`, `scale`, `mul`, `div`, `sqrt`
252
+ - Bounds: `min`, `max`, `clamp`, `clampUnsafe`
253
+ - Comparisons: `eq`, `approxEq`, `lt`, `lte`, `gt`, `gte`
254
+ - Aggregation: `sum`, `average`
255
+
256
+ ### 3D vector and point operations
257
+
258
+ Construction:
259
+
260
+ - `delta3`, `point3`, `dir3`, `zeroVec3`
261
+
262
+ Affine/frame-safe operations:
263
+
264
+ - `addVec3`, `subVec3`, `negVec3`, `scaleVec3`
265
+ - `addPoint3`, `subPoint3Delta3`, `subPoint3`
266
+
267
+ Geometry:
268
+
269
+ - `dotVec3`, `crossVec3`
270
+ - `lengthSquaredVec3`, `lengthVec3`
271
+ - `distanceVec3`, `distancePoint3`
272
+ - `normalizeVec3`, `normalizeVec3Unsafe`
273
+ - `lerpVec3`
274
+ - `projectVec3`, `projectVec3Unsafe`
275
+ - `reflectVec3`, `reflectVec3Unsafe`
276
+ - `angleBetweenVec3`, `angleBetweenVec3Unsafe`
277
+ - `scaleDir3`
278
+
279
+ ### Quaternion operations
280
+
281
+ - Construction and identity: `quat`, `quatIdentity`
282
+ - Components: `quatX`, `quatY`, `quatZ`, `quatW`
283
+ - Algebra: `quatConjugate`, `quatNorm`, `quatNormSquared`, `composeQuats`
284
+ - Normalization/inversion: `quatNormalize`, `quatNormalizeUnsafe`,
285
+ `quatInverse`, `quatInverseUnsafe`
286
+ - Rotations: `rotateVec3ByQuat`, `rotateVec3ByQuatUnsafe`
287
+ - Matrix conversion: `quatFromRotationMatrix`, `quatFromRotationMatrixUnsafe`
288
+ - Builders/interpolation: `quatFromAxisAngle`, `quatFromAxisAngleUnsafe`,
289
+ `quatFromEuler`, `quatFromEulerUnsafe`, `quatNlerp`, `quatNlerpUnsafe`,
290
+ `quatSlerp`, `quatSlerpUnsafe`
291
+
292
+ ### Matrix operations
293
+
294
+ Construction:
295
+
296
+ - `mat4`, `mat4Unsafe`, `mat4Identity`
297
+ - `mat4FromTranslation`, `mat4FromScale`
298
+ - `mat4FromQuaternion`, `mat4FromQuaternionUnsafe`
299
+ - `mat4FromRigidTransform`
300
+ - `mat4FromTRS`, `mat4FromTRSUnsafe`
301
+ - `createTrsMat4Cache`
302
+ - `mat4Perspective`, `mat4PerspectiveUnsafe`
303
+ - `mat4Ortho`, `mat4OrthoUnsafe`
304
+ - `mat4LookAt`, `mat4LookAtUnsafe`
305
+
306
+ Composition and transforms:
307
+
308
+ - Matrix instance helpers: `matrix.translation()`, `matrix.quat()`
309
+ - `matrix.translation()` reads translation from indices `12/13/14`.
310
+ - `matrix.quat()` extracts rotation and throws if the matrix linear part is
311
+ not a valid rotation basis.
312
+ - `transposeMat4`
313
+ - `composeMat4`
314
+ - `invertRigidMat4`, `invertRigidMat4Unsafe`
315
+ - `normalMatrixFromMat4`, `normalMatrixFromMat4Unsafe`
316
+ - `transformPoint3`
317
+ - `transformDirection3`
318
+ - `projectPoint3`, `projectPoint3Unsafe`
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_dnt.test_shims.d.ts","sourceRoot":"","sources":["../src/_dnt.test_shims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,eAAO,MAAM,aAAa;;CAA2C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attitude_interpolation_and_cache.test.d.ts","sourceRoot":"","sources":["../../src/examples/attitude_interpolation_and_cache.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera_projection.test.d.ts","sourceRoot":"","sources":["../../src/examples/camera_projection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookbook_constant_accel_loop.test.d.ts","sourceRoot":"","sources":["../../src/examples/cookbook_constant_accel_loop.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distinct_frame_guard.test.d.ts","sourceRoot":"","sources":["../../src/examples/distinct_frame_guard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"end_to_end_projection_chain.test.d.ts","sourceRoot":"","sources":["../../src/examples/end_to_end_projection_chain.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat4_pose_decomposition.test.d.ts","sourceRoot":"","sources":["../../src/examples/mat4_pose_decomposition.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normal_matrix_failure_recovery.test.d.ts","sourceRoot":"","sources":["../../src/examples/normal_matrix_failure_recovery.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normal_matrix_perpendicularity.test.d.ts","sourceRoot":"","sources":["../../src/examples/normal_matrix_perpendicularity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics_units_kinematics.test.d.ts","sourceRoot":"","sources":["../../src/examples/physics_units_kinematics.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection_edge_behavior.test.d.ts","sourceRoot":"","sources":["../../src/examples/projection_edge_behavior.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quat_from_rotation_matrix.test.d.ts","sourceRoot":"","sources":["../../src/examples/quat_from_rotation_matrix.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quaternion_nlerp_vs_slerp.test.d.ts","sourceRoot":"","sources":["../../src/examples/quaternion_nlerp_vs_slerp.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendering_normals_reflection.test.d.ts","sourceRoot":"","sources":["../../src/examples/rendering_normals_reflection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robotics_pose_chain.test.d.ts","sourceRoot":"","sources":["../../src/examples/robotics_pose_chain.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe_api_failure_modes.test.d.ts","sourceRoot":"","sources":["../../src/examples/safe_api_failure_modes.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe_vs_unsafe_apis.test.d.ts","sourceRoot":"","sources":["../../src/examples/safe_vs_unsafe_apis.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensor_extrinsics_chain.test.d.ts","sourceRoot":"","sources":["../../src/examples/sensor_extrinsics_chain.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform_order_matters.test.d.ts","sourceRoot":"","sources":["../../src/examples/transform_order_matters.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform_point_vs_direction.test.d.ts","sourceRoot":"","sources":["../../src/examples/transform_point_vs_direction.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform_round_trip.test.d.ts","sourceRoot":"","sources":["../../src/examples/transform_round_trip.test.ts"],"names":[],"mappings":""}
@@ -1,5 +1,8 @@
1
1
  import { type Dimensionless, type NoInfer, type Quantity, type UnitExpr, type UnitTag } from '../units.js';
2
2
  import type { Delta3, Dir3, FrameTag, LinearMat4, Mat4, Point3, ProjectionMat4, Quaternion } from './types.js';
3
+ type DistinctFramePair<ToFrame extends string, FromFrame extends string> = [
4
+ ToFrame
5
+ ] extends [FromFrame] ? ([FromFrame] extends [ToFrame] ? never : unknown) : unknown;
3
6
  /**
4
7
  * Creates a typed 4x4 matrix from 16 column-major values.
5
8
  *
@@ -14,7 +17,7 @@ import type { Delta3, Dir3, FrameTag, LinearMat4, Mat4, Point3, ProjectionMat4,
14
17
  * @param values Matrix coefficients in column-major order.
15
18
  * @returns Typed affine matrix.
16
19
  */
17
- export declare const mat4Unsafe: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, translationUnitTag: UnitTag<TranslationUnit>, values: readonly number[]) => Mat4<ToFrame, FromFrame, TranslationUnit>;
20
+ export declare const mat4Unsafe: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame> & DistinctFramePair<ToFrame, FromFrame>, translationUnitTag: UnitTag<TranslationUnit>, values: readonly number[]) => Mat4<ToFrame, FromFrame, TranslationUnit>;
18
21
  /**
19
22
  * Creates a typed 4x4 matrix from 16 column-major values.
20
23
  *
@@ -30,7 +33,7 @@ export declare const mat4Unsafe: <ToFrame extends string, FromFrame extends stri
30
33
  * @returns Typed affine matrix.
31
34
  * @throws {Error} When `values` does not contain exactly 16 entries.
32
35
  */
33
- export declare const mat4: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, translationUnitTag: UnitTag<TranslationUnit>, values: readonly number[]) => Mat4<ToFrame, FromFrame, TranslationUnit>;
36
+ export declare const mat4: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame> & DistinctFramePair<ToFrame, FromFrame>, translationUnitTag: UnitTag<TranslationUnit>, values: readonly number[]) => Mat4<ToFrame, FromFrame, TranslationUnit>;
34
37
  /**
35
38
  * Creates an identity linear transform for a frame.
36
39
  *
@@ -397,4 +400,5 @@ export declare function transformDirection3<Unit extends UnitExpr, MatrixTransla
397
400
  * @returns Transformed unitless direction.
398
401
  */
399
402
  export declare function transformDirection3<MatrixTranslationUnit extends UnitExpr, ToFrame extends string, FromFrame extends string>(matrix: Mat4<ToFrame, FromFrame, MatrixTranslationUnit>, direction: Dir3<NoInfer<FromFrame>>): Dir3<ToFrame>;
403
+ export {};
400
404
  //# sourceMappingURL=matrix4.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix4.d.ts","sourceRoot":"","sources":["../../../src/src/geometry3d/matrix4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matrix4.d.ts","sourceRoot":"","sources":["../../../src/src/geometry3d/matrix4.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { dimensionlessUnit, } from '../units.js';
2
- import { quatNormalize, quatNormalizeUnsafe } from './quaternion.js';
2
+ import { quatFromRotationMatrix, quatNormalize, quatNormalizeUnsafe, } from './quaternion.js';
3
3
  /**
4
4
  * Casts a raw number into a branded quantity.
5
5
  *
@@ -13,7 +13,18 @@ const asQuantity = (value) => value;
13
13
  * @param values Matrix coefficients in column-major order.
14
14
  * @returns Branded affine matrix.
15
15
  */
16
- const asMat4 = (values) => values;
16
+ const asMat4 = (values) => {
17
+ const matrix = values;
18
+ Object.defineProperties(matrix, {
19
+ translation: {
20
+ value: () => asDelta3(asQuantity(matrix[12]), asQuantity(matrix[13]), asQuantity(matrix[14])),
21
+ },
22
+ quat: {
23
+ value: () => quatFromRotationMatrix(undefined, undefined, matrix),
24
+ },
25
+ });
26
+ return matrix;
27
+ };
17
28
  /**
18
29
  * Narrows a dimensionless affine matrix to a linear matrix type.
19
30
  *
@@ -46,6 +57,11 @@ const asDelta3 = (x, y, z) => [x, y, z];
46
57
  * @returns Branded point.
47
58
  */
48
59
  const asPoint3 = (x, y, z) => [x, y, z];
60
+ const assertDistinctFrames = (toFrame, fromFrame) => {
61
+ if (toFrame === fromFrame) {
62
+ throw new Error('toFrameTag and fromFrameTag must be different');
63
+ }
64
+ };
49
65
  /**
50
66
  * Creates a typed 4x4 matrix from 16 column-major values.
51
67
  *
@@ -82,6 +98,7 @@ export const mat4Unsafe = (toFrameTag, fromFrameTag, translationUnitTag, values)
82
98
  * @throws {Error} When `values` does not contain exactly 16 entries.
83
99
  */
84
100
  export const mat4 = (toFrameTag, fromFrameTag, translationUnitTag, values) => {
101
+ assertDistinctFrames(toFrameTag, fromFrameTag);
85
102
  void toFrameTag;
86
103
  void fromFrameTag;
87
104
  void translationUnitTag;
@@ -99,7 +116,8 @@ export const mat4 = (toFrameTag, fromFrameTag, translationUnitTag, values) => {
99
116
  */
100
117
  export const mat4Identity = (frameTag, dimensionlessUnitTag) => {
101
118
  void frameTag;
102
- return asLinearMat4(mat4(frameTag, frameTag, dimensionlessUnitTag, [
119
+ void dimensionlessUnitTag;
120
+ return asLinearMat4(asMat4([
103
121
  1,
104
122
  0,
105
123
  0,
@@ -1,6 +1,6 @@
1
1
  export { frame } from './types.js';
2
2
  export type { Delta3, Dir3, FrameTag, LinearMat4, Mat4, Point3, ProjectionMat4, Quaternion, } from './types.js';
3
3
  export { addPoint3, addVec3, angleBetweenVec3, angleBetweenVec3Unsafe, crossVec3, delta3, dir3, distancePoint3, distanceVec3, dotVec3, lengthSquaredVec3, lengthVec3, lerpVec3, negVec3, normalizeVec3, normalizeVec3Unsafe, point3, projectVec3, projectVec3Unsafe, reflectVec3, reflectVec3Unsafe, scaleDir3, scaleVec3, subPoint3, subPoint3Delta3, subVec3, zeroVec3, } from './vector3.js';
4
- export { composeQuats, type EulerOrder, quat, quatConjugate, quatFromAxisAngle, quatFromAxisAngleUnsafe, quatFromEuler, quatFromEulerUnsafe, quatIdentity, quatInverse, quatInverseUnsafe, quatNlerp, quatNlerpUnsafe, quatNorm, quatNormalize, quatNormalizeUnsafe, quatNormSquared, quatSlerp, quatSlerpUnsafe, rotateVec3ByQuat, rotateVec3ByQuatUnsafe, } from './quaternion.js';
4
+ export { composeQuats, type EulerOrder, quat, quatConjugate, quatFromAxisAngle, quatFromAxisAngleUnsafe, quatFromEuler, quatFromEulerUnsafe, quatFromRotationMatrix, quatFromRotationMatrixUnsafe, quatIdentity, quatInverse, quatInverseUnsafe, quatNlerp, quatNlerpUnsafe, quatNorm, quatNormalize, quatNormalizeUnsafe, quatNormSquared, quatSlerp, quatSlerpUnsafe, quatW, quatX, quatY, quatZ, rotateVec3ByQuat, rotateVec3ByQuatUnsafe, } from './quaternion.js';
5
5
  export { composeMat4, createTrsMat4Cache, invertRigidMat4, invertRigidMat4Unsafe, mat4, mat4FromQuaternion, mat4FromQuaternionUnsafe, mat4FromRigidTransform, mat4FromScale, mat4FromTranslation, mat4FromTRS, mat4FromTRSUnsafe, mat4Identity, mat4LookAt, mat4LookAtUnsafe, mat4Ortho, mat4OrthoUnsafe, mat4Perspective, mat4PerspectiveUnsafe, mat4Unsafe, normalMatrixFromMat4, normalMatrixFromMat4Unsafe, projectPoint3, projectPoint3Unsafe, transformDirection3, transformPoint3, transposeMat4, } from './matrix4.js';
6
6
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/geometry3d/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EACV,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,MAAM,EACN,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,MAAM,EACN,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,SAAS,EACT,eAAe,EACf,OAAO,EACP,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,KAAK,UAAU,EACf,IAAI,EACJ,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,IAAI,EACJ,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/geometry3d/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EACV,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,MAAM,EACN,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,MAAM,EACN,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,SAAS,EACT,eAAe,EACf,OAAO,EACP,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,KAAK,UAAU,EACf,IAAI,EACJ,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,eAAe,EACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,IAAI,EACJ,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { frame } from './types.js';
2
2
  export { addPoint3, addVec3, angleBetweenVec3, angleBetweenVec3Unsafe, crossVec3, delta3, dir3, distancePoint3, distanceVec3, dotVec3, lengthSquaredVec3, lengthVec3, lerpVec3, negVec3, normalizeVec3, normalizeVec3Unsafe, point3, projectVec3, projectVec3Unsafe, reflectVec3, reflectVec3Unsafe, scaleDir3, scaleVec3, subPoint3, subPoint3Delta3, subVec3, zeroVec3, } from './vector3.js';
3
- export { composeQuats, quat, quatConjugate, quatFromAxisAngle, quatFromAxisAngleUnsafe, quatFromEuler, quatFromEulerUnsafe, quatIdentity, quatInverse, quatInverseUnsafe, quatNlerp, quatNlerpUnsafe, quatNorm, quatNormalize, quatNormalizeUnsafe, quatNormSquared, quatSlerp, quatSlerpUnsafe, rotateVec3ByQuat, rotateVec3ByQuatUnsafe, } from './quaternion.js';
3
+ export { composeQuats, quat, quatConjugate, quatFromAxisAngle, quatFromAxisAngleUnsafe, quatFromEuler, quatFromEulerUnsafe, quatFromRotationMatrix, quatFromRotationMatrixUnsafe, quatIdentity, quatInverse, quatInverseUnsafe, quatNlerp, quatNlerpUnsafe, quatNorm, quatNormalize, quatNormalizeUnsafe, quatNormSquared, quatSlerp, quatSlerpUnsafe, quatW, quatX, quatY, quatZ, rotateVec3ByQuat, rotateVec3ByQuatUnsafe, } from './quaternion.js';
4
4
  export { composeMat4, createTrsMat4Cache, invertRigidMat4, invertRigidMat4Unsafe, mat4, mat4FromQuaternion, mat4FromQuaternionUnsafe, mat4FromRigidTransform, mat4FromScale, mat4FromTranslation, mat4FromTRS, mat4FromTRSUnsafe, mat4Identity, mat4LookAt, mat4LookAtUnsafe, mat4Ortho, mat4OrthoUnsafe, mat4Perspective, mat4PerspectiveUnsafe, mat4Unsafe, normalMatrixFromMat4, normalMatrixFromMat4Unsafe, projectPoint3, projectPoint3Unsafe, transformDirection3, transformPoint3, transposeMat4, } from './matrix4.js';