@sachitv/safe-math-ts 0.1.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/esm/mod.d.ts +4 -0
- package/esm/mod.d.ts.map +1 -0
- package/esm/mod.js +2 -0
- package/esm/package.json +3 -0
- package/esm/src/geometry3d/matrix4.d.ts +400 -0
- package/esm/src/geometry3d/matrix4.d.ts.map +1 -0
- package/esm/src/geometry3d/matrix4.js +975 -0
- package/esm/src/geometry3d/mod.d.ts +6 -0
- package/esm/src/geometry3d/mod.d.ts.map +1 -0
- package/esm/src/geometry3d/mod.js +4 -0
- package/esm/src/geometry3d/quaternion.d.ts +221 -0
- package/esm/src/geometry3d/quaternion.d.ts.map +1 -0
- package/esm/src/geometry3d/quaternion.js +419 -0
- package/esm/src/geometry3d/types.d.ts +151 -0
- package/esm/src/geometry3d/types.d.ts.map +1 -0
- package/esm/src/geometry3d/types.js +7 -0
- package/esm/src/geometry3d/vector3.d.ts +253 -0
- package/esm/src/geometry3d/vector3.d.ts.map +1 -0
- package/esm/src/geometry3d/vector3.js +361 -0
- package/esm/src/units.d.ts +350 -0
- package/esm/src/units.d.ts.map +1 -0
- package/esm/src/units.js +219 -0
- package/package.json +34 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { Dimensionless, Quantity, UnitExpr } from '../units.js';
|
|
2
|
+
declare const frameTagBrand: unique symbol;
|
|
3
|
+
declare const vecBrand: unique symbol;
|
|
4
|
+
declare const pointBrand: unique symbol;
|
|
5
|
+
declare const dirBrand: unique symbol;
|
|
6
|
+
declare const deltaBrand: unique symbol;
|
|
7
|
+
declare const quatBrand: unique symbol;
|
|
8
|
+
declare const matBrand: unique symbol;
|
|
9
|
+
declare const linearMatBrand: unique symbol;
|
|
10
|
+
declare const projectionMatBrand: unique symbol;
|
|
11
|
+
/** Compile-time token for explicitly declaring frames. */
|
|
12
|
+
export type FrameTag<Frame extends string> = string & {
|
|
13
|
+
readonly [frameTagBrand]: Frame;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Creates a compile-time frame token.
|
|
17
|
+
*
|
|
18
|
+
* @param name Frame identifier text.
|
|
19
|
+
* @returns Branded frame token used by frame-aware APIs.
|
|
20
|
+
*/
|
|
21
|
+
export declare const frame: <Frame extends string>(name: Frame) => FrameTag<Frame>;
|
|
22
|
+
/** Shared raw 3D tuple used by point/direction/displacement variants. */
|
|
23
|
+
type Vec3Base<Unit extends UnitExpr, Frame extends string> = readonly [
|
|
24
|
+
Quantity<Unit>,
|
|
25
|
+
Quantity<Unit>,
|
|
26
|
+
Quantity<Unit>
|
|
27
|
+
] & {
|
|
28
|
+
readonly [vecBrand]: {
|
|
29
|
+
readonly unit: Unit;
|
|
30
|
+
readonly frame: Frame;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Unitful point in an affine frame.
|
|
35
|
+
*
|
|
36
|
+
* Points are locations and are not directly addable with other points.
|
|
37
|
+
*/
|
|
38
|
+
export type Point3<Unit extends UnitExpr, Frame extends string> = Vec3Base<Unit, Frame> & {
|
|
39
|
+
readonly [pointBrand]: {
|
|
40
|
+
readonly unit: Unit;
|
|
41
|
+
readonly frame: Frame;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Dimensionless direction in a frame.
|
|
46
|
+
*
|
|
47
|
+
* Represents orientation/axis information. The constructor does **not**
|
|
48
|
+
* enforce unit length — functions that require a true unit vector
|
|
49
|
+
* (e.g. `reflectVec3`, `quatFromAxisAngle`) normalize internally.
|
|
50
|
+
*/
|
|
51
|
+
export type Dir3<Frame extends string> = Delta3<Dimensionless, Frame> & {
|
|
52
|
+
readonly [dirBrand]: {
|
|
53
|
+
readonly frame: Frame;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Unitful displacement (delta/translation) in a frame.
|
|
58
|
+
*
|
|
59
|
+
* This is the vector quantity that can be added/subtracted and used for translation.
|
|
60
|
+
*/
|
|
61
|
+
export type Delta3<Unit extends UnitExpr, Frame extends string> = Vec3Base<Unit, Frame> & {
|
|
62
|
+
readonly [deltaBrand]: {
|
|
63
|
+
readonly unit: Unit;
|
|
64
|
+
readonly frame: Frame;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
/** Quaternion rotation in `<ToFrame, FromFrame>` order. */
|
|
68
|
+
export type Quaternion<ToFrame extends string, FromFrame extends string> = readonly [
|
|
69
|
+
number,
|
|
70
|
+
number,
|
|
71
|
+
number,
|
|
72
|
+
number
|
|
73
|
+
] & {
|
|
74
|
+
readonly [quatBrand]: {
|
|
75
|
+
readonly toFrame: ToFrame;
|
|
76
|
+
readonly fromFrame: FromFrame;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Affine 4x4 transform in `<ToFrame, FromFrame>` order.
|
|
81
|
+
*
|
|
82
|
+
* `TranslationUnit` describes the translation component unit.
|
|
83
|
+
* Storage layout is column-major:
|
|
84
|
+
* `[m00,m10,m20,m30, m01,m11,m21,m31, m02,m12,m22,m32, m03,m13,m23,m33]`.
|
|
85
|
+
* The transform APIs multiply points/directions as column vectors on the right,
|
|
86
|
+
* so `m03/m13/m23` live at indices 12/13/14.
|
|
87
|
+
*/
|
|
88
|
+
export type Mat4<ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr> = readonly [
|
|
89
|
+
number,
|
|
90
|
+
number,
|
|
91
|
+
number,
|
|
92
|
+
number,
|
|
93
|
+
number,
|
|
94
|
+
number,
|
|
95
|
+
number,
|
|
96
|
+
number,
|
|
97
|
+
number,
|
|
98
|
+
number,
|
|
99
|
+
number,
|
|
100
|
+
number,
|
|
101
|
+
number,
|
|
102
|
+
number,
|
|
103
|
+
number,
|
|
104
|
+
number
|
|
105
|
+
] & {
|
|
106
|
+
readonly [matBrand]: {
|
|
107
|
+
readonly translationUnit: TranslationUnit;
|
|
108
|
+
readonly toFrame: ToFrame;
|
|
109
|
+
readonly fromFrame: FromFrame;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Linear-only (zero translation) matrix in `<ToFrame, FromFrame>` order.
|
|
114
|
+
*/
|
|
115
|
+
export type LinearMat4<ToFrame extends string, FromFrame extends string> = Mat4<ToFrame, FromFrame, Dimensionless> & {
|
|
116
|
+
readonly [linearMatBrand]: {
|
|
117
|
+
readonly toFrame: ToFrame;
|
|
118
|
+
readonly fromFrame: FromFrame;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Perspective 4x4 projection matrix in `<ToFrame, FromFrame>` order.
|
|
123
|
+
*
|
|
124
|
+
* Uses the same column-major storage layout as `Mat4`.
|
|
125
|
+
*/
|
|
126
|
+
export type ProjectionMat4<ToFrame extends string, FromFrame extends string, DepthUnit extends UnitExpr> = readonly [
|
|
127
|
+
number,
|
|
128
|
+
number,
|
|
129
|
+
number,
|
|
130
|
+
number,
|
|
131
|
+
number,
|
|
132
|
+
number,
|
|
133
|
+
number,
|
|
134
|
+
number,
|
|
135
|
+
number,
|
|
136
|
+
number,
|
|
137
|
+
number,
|
|
138
|
+
number,
|
|
139
|
+
number,
|
|
140
|
+
number,
|
|
141
|
+
number,
|
|
142
|
+
number
|
|
143
|
+
] & {
|
|
144
|
+
readonly [projectionMatBrand]: {
|
|
145
|
+
readonly depthUnit: DepthUnit;
|
|
146
|
+
readonly toFrame: ToFrame;
|
|
147
|
+
readonly fromFrame: FromFrame;
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
export {};
|
|
151
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/geometry3d/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { type Dimensionless, type MulUnit, type NoInfer, type Quantity, type UnitExpr, type UnitTag } from '../units.js';
|
|
2
|
+
import type { Delta3, Dir3, FrameTag, Point3 } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Constructs a frame-aware displacement vector.
|
|
5
|
+
*
|
|
6
|
+
* @param frameTag Frame token for the resulting displacement.
|
|
7
|
+
* @param x X component.
|
|
8
|
+
* @param y Y component.
|
|
9
|
+
* @param z Z component.
|
|
10
|
+
* @returns Displacement in `frameTag`.
|
|
11
|
+
*/
|
|
12
|
+
export declare const delta3: <Unit extends UnitExpr, Frame extends string>(frameTag: FrameTag<Frame>, x: Quantity<Unit>, y: Quantity<Unit>, z: Quantity<Unit>) => Delta3<Unit, Frame>;
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a frame-aware point.
|
|
15
|
+
*
|
|
16
|
+
* @param frameTag Frame token for the resulting point.
|
|
17
|
+
* @param x X component.
|
|
18
|
+
* @param y Y component.
|
|
19
|
+
* @param z Z component.
|
|
20
|
+
* @returns Point in `frameTag`.
|
|
21
|
+
*/
|
|
22
|
+
export declare const point3: <Unit extends UnitExpr, Frame extends string>(frameTag: FrameTag<Frame>, x: Quantity<Unit>, y: Quantity<Unit>, z: Quantity<Unit>) => Point3<Unit, Frame>;
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a frame-aware direction (dimensionless).
|
|
25
|
+
*
|
|
26
|
+
* @param frameTag Frame token for the resulting direction.
|
|
27
|
+
* @param x X component.
|
|
28
|
+
* @param y Y component.
|
|
29
|
+
* @param z Z component.
|
|
30
|
+
* @returns Direction in `frameTag`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const dir3: <Frame extends string>(frameTag: FrameTag<Frame>, x: Quantity<Dimensionless>, y: Quantity<Dimensionless>, z: Quantity<Dimensionless>) => Dir3<Frame>;
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a zero displacement for an explicit unit and frame.
|
|
35
|
+
*
|
|
36
|
+
* @param unitTag Unit token for the displacement components.
|
|
37
|
+
* @param frameTag Frame token for the displacement.
|
|
38
|
+
* @returns Zero displacement in the provided unit and frame.
|
|
39
|
+
*/
|
|
40
|
+
export declare const zeroVec3: <Unit extends UnitExpr, Frame extends string>(unitTag: UnitTag<Unit>, frameTag: FrameTag<Frame>) => Delta3<Unit, Frame>;
|
|
41
|
+
/**
|
|
42
|
+
* Adds two displacements with matching unit and frame.
|
|
43
|
+
*
|
|
44
|
+
* @param left Left displacement.
|
|
45
|
+
* @param right Right displacement in the same unit/frame.
|
|
46
|
+
* @returns Component-wise sum.
|
|
47
|
+
*/
|
|
48
|
+
export declare const addVec3: <Unit extends UnitExpr, Frame extends string>(left: Delta3<Unit, Frame>, right: Delta3<NoInfer<Unit>, NoInfer<Frame>>) => Delta3<Unit, Frame>;
|
|
49
|
+
/**
|
|
50
|
+
* Subtracts two displacements with matching unit and frame.
|
|
51
|
+
*
|
|
52
|
+
* @param left Left displacement.
|
|
53
|
+
* @param right Right displacement in the same unit/frame.
|
|
54
|
+
* @returns Component-wise difference.
|
|
55
|
+
*/
|
|
56
|
+
export declare const subVec3: <Unit extends UnitExpr, Frame extends string>(left: Delta3<Unit, Frame>, right: Delta3<NoInfer<Unit>, NoInfer<Frame>>) => Delta3<Unit, Frame>;
|
|
57
|
+
/**
|
|
58
|
+
* Negates each displacement component.
|
|
59
|
+
*
|
|
60
|
+
* @param value Displacement to negate.
|
|
61
|
+
* @returns Negated displacement.
|
|
62
|
+
*/
|
|
63
|
+
export declare const negVec3: <Unit extends UnitExpr, Frame extends string>(value: Delta3<Unit, Frame>) => Delta3<Unit, Frame>;
|
|
64
|
+
/**
|
|
65
|
+
* Multiplies each displacement component by a unitless scalar.
|
|
66
|
+
*
|
|
67
|
+
* @param value Displacement to scale.
|
|
68
|
+
* @param scalar Unitless multiplier.
|
|
69
|
+
* @returns Scaled displacement.
|
|
70
|
+
*/
|
|
71
|
+
export declare const scaleVec3: <Unit extends UnitExpr, Frame extends string>(value: Delta3<Unit, Frame>, scalar: number) => Delta3<Unit, Frame>;
|
|
72
|
+
/**
|
|
73
|
+
* Scales a unitless direction by a unitful magnitude.
|
|
74
|
+
*
|
|
75
|
+
* @param value Direction vector.
|
|
76
|
+
* @param magnitude Unitful scalar magnitude.
|
|
77
|
+
* @returns Displacement with unit derived from `magnitude`.
|
|
78
|
+
*/
|
|
79
|
+
export declare const scaleDir3: <Unit extends UnitExpr, Frame extends string>(value: Dir3<Frame>, magnitude: Quantity<Unit>) => Delta3<Unit, Frame>;
|
|
80
|
+
/**
|
|
81
|
+
* Translates a point by a displacement.
|
|
82
|
+
*
|
|
83
|
+
* @param point Input point.
|
|
84
|
+
* @param delta Translation displacement in the same frame/unit.
|
|
85
|
+
* @returns Translated point.
|
|
86
|
+
*/
|
|
87
|
+
export declare const addPoint3: <Unit extends UnitExpr, Frame extends string>(point: Point3<Unit, Frame>, delta: Delta3<NoInfer<Unit>, NoInfer<Frame>>) => Point3<Unit, Frame>;
|
|
88
|
+
/**
|
|
89
|
+
* Offsets a point by subtracting a displacement.
|
|
90
|
+
*
|
|
91
|
+
* @param point Input point.
|
|
92
|
+
* @param delta Displacement to subtract.
|
|
93
|
+
* @returns Offset point.
|
|
94
|
+
*/
|
|
95
|
+
export declare const subPoint3Delta3: <Unit extends UnitExpr, Frame extends string>(point: Point3<Unit, Frame>, delta: Delta3<NoInfer<Unit>, NoInfer<Frame>>) => Point3<Unit, Frame>;
|
|
96
|
+
/**
|
|
97
|
+
* Computes the displacement from `right` point to `left` point.
|
|
98
|
+
*
|
|
99
|
+
* @param left Destination point.
|
|
100
|
+
* @param right Source point.
|
|
101
|
+
* @returns Displacement that moves `right` to `left`.
|
|
102
|
+
*/
|
|
103
|
+
export declare const subPoint3: <Unit extends UnitExpr, Frame extends string>(left: Point3<Unit, Frame>, right: Point3<NoInfer<Unit>, NoInfer<Frame>>) => Delta3<Unit, Frame>;
|
|
104
|
+
/**
|
|
105
|
+
* Computes dot product for two displacements/directions in the same frame.
|
|
106
|
+
*
|
|
107
|
+
* @param left Left vector.
|
|
108
|
+
* @param right Right vector in the same frame.
|
|
109
|
+
* @returns Scalar product with multiplied unit.
|
|
110
|
+
*/
|
|
111
|
+
export declare const dotVec3: <LeftUnit extends UnitExpr, RightUnit extends UnitExpr, Frame extends string>(left: Delta3<LeftUnit, Frame>, right: Delta3<RightUnit, NoInfer<Frame>>) => Quantity<MulUnit<LeftUnit, RightUnit>>;
|
|
112
|
+
/**
|
|
113
|
+
* Computes cross product for two displacements/directions in the same frame.
|
|
114
|
+
*
|
|
115
|
+
* @param left Left vector.
|
|
116
|
+
* @param right Right vector in the same frame.
|
|
117
|
+
* @returns Cross-product vector with multiplied unit.
|
|
118
|
+
*/
|
|
119
|
+
export declare const crossVec3: <LeftUnit extends UnitExpr, RightUnit extends UnitExpr, Frame extends string>(left: Delta3<LeftUnit, Frame>, right: Delta3<RightUnit, NoInfer<Frame>>) => Delta3<MulUnit<LeftUnit, RightUnit>, Frame>;
|
|
120
|
+
/**
|
|
121
|
+
* Computes squared Euclidean length of a displacement/direction.
|
|
122
|
+
*
|
|
123
|
+
* @param value Input vector.
|
|
124
|
+
* @returns Squared length.
|
|
125
|
+
*/
|
|
126
|
+
export declare const lengthSquaredVec3: <Unit extends UnitExpr, Frame extends string>(value: Delta3<Unit, Frame>) => Quantity<MulUnit<Unit, Unit>>;
|
|
127
|
+
/**
|
|
128
|
+
* Computes Euclidean length of a displacement/direction.
|
|
129
|
+
*
|
|
130
|
+
* @param value Input vector.
|
|
131
|
+
* @returns Vector length.
|
|
132
|
+
*/
|
|
133
|
+
export declare const lengthVec3: <Unit extends UnitExpr, Frame extends string>(value: Delta3<Unit, Frame>) => Quantity<Unit>;
|
|
134
|
+
/**
|
|
135
|
+
* Computes Euclidean distance between two displacements.
|
|
136
|
+
*
|
|
137
|
+
* @param left Left displacement.
|
|
138
|
+
* @param right Right displacement in the same unit/frame.
|
|
139
|
+
* @returns Distance magnitude.
|
|
140
|
+
*/
|
|
141
|
+
export declare function distanceVec3<Unit extends UnitExpr, Frame extends string>(left: Delta3<Unit, Frame>, right: Delta3<NoInfer<Unit>, NoInfer<Frame>>): Quantity<Unit>;
|
|
142
|
+
/**
|
|
143
|
+
* Computes Euclidean distance between two points.
|
|
144
|
+
*
|
|
145
|
+
* @param left Left point.
|
|
146
|
+
* @param right Right point in the same unit/frame.
|
|
147
|
+
* @returns Distance magnitude.
|
|
148
|
+
*/
|
|
149
|
+
export declare function distanceVec3<Unit extends UnitExpr, Frame extends string>(left: Point3<Unit, Frame>, right: Point3<NoInfer<Unit>, NoInfer<Frame>>): Quantity<Unit>;
|
|
150
|
+
/**
|
|
151
|
+
* Computes Euclidean distance between two points.
|
|
152
|
+
*
|
|
153
|
+
* @param left Left point.
|
|
154
|
+
* @param right Right point in the same unit/frame.
|
|
155
|
+
* @returns Distance magnitude.
|
|
156
|
+
*/
|
|
157
|
+
export declare const distancePoint3: <Unit extends UnitExpr, Frame extends string>(left: Point3<Unit, Frame>, right: Point3<NoInfer<Unit>, NoInfer<Frame>>) => Quantity<Unit>;
|
|
158
|
+
/**
|
|
159
|
+
* Normalizes displacement length to 1.
|
|
160
|
+
*
|
|
161
|
+
* Unsafe variant: performs no zero-length guard.
|
|
162
|
+
* Degenerate inputs can yield `NaN`/`Infinity`.
|
|
163
|
+
*
|
|
164
|
+
* @param value Vector to normalize.
|
|
165
|
+
* @returns Unit-length direction in the same frame.
|
|
166
|
+
*/
|
|
167
|
+
export declare const normalizeVec3Unsafe: <Unit extends UnitExpr, Frame extends string>(value: Delta3<Unit, Frame>) => Dir3<Frame>;
|
|
168
|
+
/**
|
|
169
|
+
* Normalizes displacement length to 1.
|
|
170
|
+
*
|
|
171
|
+
* Throws when vector length is at or below `1e-14`.
|
|
172
|
+
*
|
|
173
|
+
* @param value Vector to normalize.
|
|
174
|
+
* @returns Unit-length direction in the same frame.
|
|
175
|
+
* @throws {Error} When the vector is near zero length.
|
|
176
|
+
*/
|
|
177
|
+
export declare const normalizeVec3: <Unit extends UnitExpr, Frame extends string>(value: Delta3<Unit, Frame>) => Dir3<Frame>;
|
|
178
|
+
/**
|
|
179
|
+
* Linearly interpolates between two displacements.
|
|
180
|
+
*
|
|
181
|
+
* @param start Start displacement.
|
|
182
|
+
* @param end End displacement in the same unit/frame.
|
|
183
|
+
* @param t Interpolation parameter.
|
|
184
|
+
* @returns Interpolated displacement.
|
|
185
|
+
*/
|
|
186
|
+
export declare function lerpVec3<Unit extends UnitExpr, Frame extends string>(start: Delta3<Unit, Frame>, end: Delta3<NoInfer<Unit>, NoInfer<Frame>>, t: number): Delta3<Unit, Frame>;
|
|
187
|
+
/**
|
|
188
|
+
* Linearly interpolates between two points.
|
|
189
|
+
*
|
|
190
|
+
* @param start Start point.
|
|
191
|
+
* @param end End point in the same unit/frame.
|
|
192
|
+
* @param t Interpolation parameter.
|
|
193
|
+
* @returns Interpolated point.
|
|
194
|
+
*/
|
|
195
|
+
export declare function lerpVec3<Unit extends UnitExpr, Frame extends string>(start: Point3<Unit, Frame>, end: Point3<NoInfer<Unit>, NoInfer<Frame>>, t: number): Point3<Unit, Frame>;
|
|
196
|
+
/**
|
|
197
|
+
* Projects a displacement onto another displacement in the same frame.
|
|
198
|
+
*
|
|
199
|
+
* Unsafe variant: performs no zero-length guard for `onto`.
|
|
200
|
+
*
|
|
201
|
+
* @param value Vector being projected.
|
|
202
|
+
* @param onto Target direction for projection.
|
|
203
|
+
* @returns Projection of `value` onto `onto`.
|
|
204
|
+
*/
|
|
205
|
+
export declare const projectVec3Unsafe: <ValueUnit extends UnitExpr, OntoUnit extends UnitExpr, Frame extends string>(value: Delta3<ValueUnit, Frame>, onto: Delta3<OntoUnit, NoInfer<Frame>>) => Delta3<ValueUnit, Frame>;
|
|
206
|
+
/**
|
|
207
|
+
* Projects a displacement onto another displacement in the same frame.
|
|
208
|
+
*
|
|
209
|
+
* @param value Vector being projected.
|
|
210
|
+
* @param onto Target direction for projection.
|
|
211
|
+
* @returns Projection of `value` onto `onto`.
|
|
212
|
+
* @throws {Error} When `onto` is near zero length.
|
|
213
|
+
*/
|
|
214
|
+
export declare const projectVec3: <ValueUnit extends UnitExpr, OntoUnit extends UnitExpr, Frame extends string>(value: Delta3<ValueUnit, Frame>, onto: Delta3<OntoUnit, NoInfer<Frame>>) => Delta3<ValueUnit, Frame>;
|
|
215
|
+
/**
|
|
216
|
+
* Reflects a displacement around a normal direction.
|
|
217
|
+
*
|
|
218
|
+
* Unsafe variant: performs no zero-length guard for `normal`.
|
|
219
|
+
*
|
|
220
|
+
* @param incident Incident displacement.
|
|
221
|
+
* @param normal Reflection normal direction.
|
|
222
|
+
* @returns Reflected displacement.
|
|
223
|
+
*/
|
|
224
|
+
export declare const reflectVec3Unsafe: <Unit extends UnitExpr, Frame extends string>(incident: Delta3<Unit, Frame>, normal: Dir3<NoInfer<Frame>>) => Delta3<Unit, Frame>;
|
|
225
|
+
/**
|
|
226
|
+
* Reflects a displacement around a normal direction.
|
|
227
|
+
*
|
|
228
|
+
* @param incident Incident displacement.
|
|
229
|
+
* @param normal Reflection normal direction.
|
|
230
|
+
* @returns Reflected displacement.
|
|
231
|
+
* @throws {Error} When `normal` is near zero length.
|
|
232
|
+
*/
|
|
233
|
+
export declare const reflectVec3: <Unit extends UnitExpr, Frame extends string>(incident: Delta3<Unit, Frame>, normal: Dir3<NoInfer<Frame>>) => Delta3<Unit, Frame>;
|
|
234
|
+
/**
|
|
235
|
+
* Computes the angle in radians between two displacements.
|
|
236
|
+
*
|
|
237
|
+
* Unsafe variant: performs no zero-length guards.
|
|
238
|
+
*
|
|
239
|
+
* @param left Left vector.
|
|
240
|
+
* @param right Right vector.
|
|
241
|
+
* @returns Angle in radians.
|
|
242
|
+
*/
|
|
243
|
+
export declare const angleBetweenVec3Unsafe: <LeftUnit extends UnitExpr, RightUnit extends UnitExpr, Frame extends string>(left: Delta3<LeftUnit, Frame>, right: Delta3<RightUnit, NoInfer<Frame>>) => number;
|
|
244
|
+
/**
|
|
245
|
+
* Computes the angle in radians between two non-zero displacements.
|
|
246
|
+
*
|
|
247
|
+
* @param left Left vector.
|
|
248
|
+
* @param right Right vector.
|
|
249
|
+
* @returns Angle in radians.
|
|
250
|
+
* @throws {Error} When either vector is near zero length.
|
|
251
|
+
*/
|
|
252
|
+
export declare const angleBetweenVec3: <LeftUnit extends UnitExpr, RightUnit extends UnitExpr, Frame extends string>(left: Delta3<LeftUnit, Frame>, right: Delta3<RightUnit, NoInfer<Frame>>) => number;
|
|
253
|
+
//# sourceMappingURL=vector3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector3.d.ts","sourceRoot":"","sources":["../../../src/src/geometry3d/vector3.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAqDjE;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAChE,UAAU,QAAQ,CAAC,KAAK,CAAC,EACzB,GAAG,QAAQ,CAAC,IAAI,CAAC,EACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,EACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAChB,MAAM,CAAC,IAAI,EAAE,KAAK,CAGpB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAChE,UAAU,QAAQ,CAAC,KAAK,CAAC,EACzB,GAAG,QAAQ,CAAC,IAAI,CAAC,EACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,EACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAChB,MAAM,CAAC,IAAI,EAAE,KAAK,CAGpB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,GAAI,KAAK,SAAS,MAAM,EACvC,UAAU,QAAQ,CAAC,KAAK,CAAC,EACzB,GAAG,QAAQ,CAAC,aAAa,CAAC,EAC1B,GAAG,QAAQ,CAAC,aAAa,CAAC,EAC1B,GAAG,QAAQ,CAAC,aAAa,CAAC,KACzB,IAAI,CAAC,KAAK,CAGZ,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAClE,SAAS,OAAO,CAAC,IAAI,CAAC,EACtB,UAAU,QAAQ,CAAC,KAAK,CAAC,KACxB,MAAM,CAAC,IAAI,EAAE,KAAK,CAMlB,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACjE,MAAM,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3C,MAAM,CAAC,IAAI,EAAE,KAAK,CAKpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACjE,MAAM,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3C,MAAM,CAAC,IAAI,EAAE,KAAK,CAKpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACjE,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KACzB,MAAM,CAAC,IAAI,EAAE,KAAK,CAKlB,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACnE,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,QAAQ,MAAM,KACb,MAAM,CAAC,IAAI,EAAE,KAAK,CAKpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACnE,OAAO,IAAI,CAAC,KAAK,CAAC,EAClB,WAAW,QAAQ,CAAC,IAAI,CAAC,KACxB,MAAM,CAAC,IAAI,EAAE,KAAK,CAKlB,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACnE,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3C,MAAM,CAAC,IAAI,EAAE,KAAK,CAKlB,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACzE,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3C,MAAM,CAAC,IAAI,EAAE,KAAK,CAKlB,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACnE,MAAM,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3C,MAAM,CAAC,IAAI,EAAE,KAAK,CAKlB,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAClB,QAAQ,SAAS,QAAQ,EACzB,SAAS,SAAS,QAAQ,EAC1B,KAAK,SAAS,MAAM,EAEpB,MAAM,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC7B,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KACvC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAMvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GACpB,QAAQ,SAAS,QAAQ,EACzB,SAAS,SAAS,QAAQ,EAC1B,KAAK,SAAS,MAAM,EAEpB,MAAM,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC7B,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KACvC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAW5C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAC3E,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KACzB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAA0B,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACpE,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KACzB,QAAQ,CAAC,IAAI,CAA+D,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACtE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAC3C,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElB;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACtE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAC3C,QAAQ,CAAC,IAAI,CAAC,CAAC;AAelB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACxE,MAAM,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3C,QAAQ,CAAC,IAAI,CAA8B,CAAC;AAI/C;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAC9B,IAAI,SAAS,QAAQ,EACrB,KAAK,SAAS,MAAM,EAEpB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KACzB,IAAI,CAAC,KAAK,CAOZ,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACvE,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KACzB,IAAI,CAAC,KAAK,CAOZ,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAClE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAC1C,CAAC,EAAE,MAAM,GACR,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAEvB;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAClE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAC1C,CAAC,EAAE,MAAM,GACR,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAwBvB;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,SAAS,QAAQ,EAC1B,QAAQ,SAAS,QAAQ,EACzB,KAAK,SAAS,MAAM,EAEpB,OAAO,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAC/B,MAAM,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KACrC,MAAM,CAAC,SAAS,EAAE,KAAK,CAczB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,SAAS,SAAS,QAAQ,EAC1B,QAAQ,SAAS,QAAQ,EACzB,KAAK,SAAS,MAAM,EAEpB,OAAO,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAC/B,MAAM,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KACrC,MAAM,CAAC,SAAS,EAAE,KAAK,CASzB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EAC3E,UAAU,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAC7B,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3B,MAAM,CAAC,IAAI,EAAE,KAAK,CAYpB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAM,EACrE,UAAU,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAC7B,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAC3B,MAAM,CAAC,IAAI,EAAE,KAAK,CAGpB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,SAAS,QAAQ,EACzB,SAAS,SAAS,QAAQ,EAC1B,KAAK,SAAS,MAAM,EAEpB,MAAM,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC7B,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KACvC,MAWF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,SAAS,QAAQ,EACzB,SAAS,SAAS,QAAQ,EAC1B,KAAK,SAAS,MAAM,EAEpB,MAAM,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAC7B,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KACvC,MASF,CAAC"}
|