@ntf/math 1.3.1 → 1.4.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/dist/index.d.mts +760 -477
- package/dist/index.d.ts +760 -477
- package/dist/index.js +1201 -835
- package/dist/index.mjs +1201 -835
- package/package.json +6 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,50 +1,650 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* All valid types of JavaScript you can get from `typeof`
|
|
3
|
+
*/
|
|
4
|
+
type JavaScriptTypes = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
|
|
5
|
+
/**
|
|
6
|
+
* A JavaScript function that can be typed (or not)
|
|
7
|
+
*/
|
|
8
|
+
type JavaScriptFunction<Args extends Array<any> = Array<any>, ReturnType extends any = any> = (...args: Args) => ReturnType;
|
|
9
|
+
/**
|
|
10
|
+
* A mapped type for getting the type of a JavaScript value
|
|
11
|
+
*/
|
|
12
|
+
type JavaScriptTypeMap = {
|
|
13
|
+
"string": string;
|
|
14
|
+
"number": number;
|
|
15
|
+
"bigint": bigint;
|
|
16
|
+
"boolean": boolean;
|
|
17
|
+
"symbol": symbol;
|
|
18
|
+
"undefined": undefined;
|
|
19
|
+
"object": object;
|
|
20
|
+
"function": JavaScriptFunction;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Any kind of JavaScript number
|
|
24
|
+
*/
|
|
25
|
+
type JavaScriptNumber = number | bigint;
|
|
26
|
+
/**
|
|
27
|
+
* A array that has a fixed length
|
|
28
|
+
*/
|
|
29
|
+
type FixedArray<T, Length extends number> = Array<T> & {
|
|
30
|
+
length: Length;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* A value that might look like a hex value
|
|
34
|
+
*/
|
|
35
|
+
type HexLike = `$${string}` | `#${string}` | `0x${string}` | string;
|
|
36
|
+
/**
|
|
37
|
+
* A predicate function type for verifing types
|
|
38
|
+
*/
|
|
39
|
+
type Predicate<T> = (a: unknown) => a is T;
|
|
40
|
+
/**
|
|
41
|
+
* Check if `value` is a finite valid number
|
|
42
|
+
* @param value A value
|
|
43
|
+
*/
|
|
44
|
+
declare function checkNumber(value: unknown): value is number;
|
|
45
|
+
/**
|
|
46
|
+
* Retrieve the value of a hex string
|
|
47
|
+
* @param string A string
|
|
48
|
+
*/
|
|
49
|
+
declare function getHexValue(string: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Check if `value` is a hex value
|
|
52
|
+
* @param value A value
|
|
53
|
+
*/
|
|
54
|
+
declare function checkHex(value: unknown): value is HexLike;
|
|
55
|
+
/**
|
|
56
|
+
* Check if `value` is a string with content
|
|
57
|
+
* @param value A value
|
|
58
|
+
*/
|
|
59
|
+
declare function checkString(value: unknown): value is string;
|
|
60
|
+
/**
|
|
61
|
+
* Check if `value` is a array
|
|
62
|
+
* @param value A value
|
|
63
|
+
* @param predicate A function that checks each item
|
|
64
|
+
* @param requiredLength If needed, check if it is a fixed length array
|
|
65
|
+
*/
|
|
66
|
+
declare function checkArray<T, Length extends number>(value: unknown, predicate?: Predicate<T>, requiredLength?: number): value is FixedArray<T, Length>;
|
|
67
|
+
/**
|
|
68
|
+
* Check if `value` is a number array
|
|
69
|
+
* @param value A value
|
|
70
|
+
* @param requiredLength If needed, check if it is a fixed length array
|
|
71
|
+
*/
|
|
72
|
+
declare function checkNumberArray<Length extends number>(value: unknown, requiredLength?: Length): value is FixedArray<number, Length>;
|
|
73
|
+
/**
|
|
74
|
+
* Check if `value` is a string array
|
|
75
|
+
* @param value A value
|
|
76
|
+
* @param requiredLength If needed, check if it is a fixed length array
|
|
77
|
+
*/
|
|
78
|
+
declare function checkStringArray<Length extends number>(value: unknown, requiredLength?: Length): value is FixedArray<string, Length>;
|
|
79
|
+
/**
|
|
80
|
+
* Check if `value` has a property called `name`
|
|
81
|
+
* @param value A value
|
|
82
|
+
* @param propertyName The name of the property
|
|
83
|
+
* @param type
|
|
84
|
+
*/
|
|
85
|
+
declare function hasProperty<Obj extends unknown, K extends PropertyKey, T extends JavaScriptTypes>(value: Obj, propertyName: K, type: T): value is Obj & {
|
|
86
|
+
[name in K]: JavaScriptTypeMap[T];
|
|
87
|
+
};
|
|
88
|
+
declare const NodeJSCustomInspect: unique symbol;
|
|
89
|
+
|
|
2
90
|
interface IToString {
|
|
3
91
|
/**
|
|
4
92
|
* Returns a string representation of an object.
|
|
5
93
|
*/
|
|
6
94
|
toString(): string;
|
|
95
|
+
get [Symbol.toStringTag](): string;
|
|
96
|
+
[NodeJSCustomInspect](): string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
interface IGeometryObject extends IToString {
|
|
100
|
+
readonly area: number;
|
|
101
|
+
readonly perimeter: number;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
interface ISize {
|
|
105
|
+
width: number;
|
|
106
|
+
height: number;
|
|
107
|
+
}
|
|
108
|
+
interface IToSize {
|
|
109
|
+
toSize(): SizeLike;
|
|
110
|
+
}
|
|
111
|
+
type SizeArray = [number, number];
|
|
112
|
+
type SizeString = `${number}x${number}`;
|
|
113
|
+
type SizeLike = ISize | SizeArray | SizeString | number | IToSize;
|
|
114
|
+
type SizeArguments = [size: SizeLike] | SizeArray;
|
|
115
|
+
declare class Size implements ISize, IGeometryObject, IToVec2 {
|
|
116
|
+
width: number;
|
|
117
|
+
height: number;
|
|
118
|
+
get aspectRatio(): number;
|
|
119
|
+
get area(): number;
|
|
120
|
+
get perimeter(): number;
|
|
121
|
+
static resolve(a: unknown): Size;
|
|
122
|
+
static resolveArgs(args: SizeArguments): Size;
|
|
123
|
+
static cast(a: unknown): Size | undefined;
|
|
124
|
+
static is(a: unknown): a is SizeLike;
|
|
125
|
+
constructor(width: number, height: number);
|
|
126
|
+
toArray(): SizeArray;
|
|
127
|
+
toString(): SizeString;
|
|
128
|
+
get [Symbol.toStringTag](): string;
|
|
129
|
+
[NodeJSCustomInspect](): string;
|
|
130
|
+
toJSON(): ISize;
|
|
131
|
+
clone(): Size;
|
|
132
|
+
equals(size: SizeLike): boolean;
|
|
133
|
+
equals(width: number, height: number): boolean;
|
|
134
|
+
toVec2(): Vec2Like;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
interface IRGB {
|
|
138
|
+
red: number;
|
|
139
|
+
green: number;
|
|
140
|
+
blue: number;
|
|
141
|
+
}
|
|
142
|
+
interface IToRGB {
|
|
143
|
+
toRGB(): RGBLike;
|
|
144
|
+
}
|
|
145
|
+
type RGBArray = [number, number, number];
|
|
146
|
+
type RGBString = `rgb(${number},${number},${number})`;
|
|
147
|
+
type RGBLike = IRGB | RGBArray | RGBString | IToRGB;
|
|
148
|
+
type RGBArguments = [rgb: RGBLike] | RGBArray;
|
|
149
|
+
interface IRBBA extends IRGB {
|
|
150
|
+
alpha: number;
|
|
151
|
+
}
|
|
152
|
+
interface IToRGBA {
|
|
153
|
+
toRGBA(): RGBALike;
|
|
154
|
+
}
|
|
155
|
+
type RGBAArray = [number, number, number, number];
|
|
156
|
+
type RGBAString = `rgba(${number},${number},${number},${number})`;
|
|
157
|
+
type RGBALike = IRBBA | RGBAArray | RGBAString | IToRGBA;
|
|
158
|
+
type RGBAArguments = [rgba: RGBALike] | RGBAArray;
|
|
159
|
+
type IAnyRGB = IRGB | IRBBA;
|
|
160
|
+
type AnyRGBArray = RGBArray | RGBAArray;
|
|
161
|
+
type AnyRGBString = RGBString | RGBAString;
|
|
162
|
+
type IAnyToRGB = IToRGB | IToRGBA;
|
|
163
|
+
type AnyRGBLike = IAnyRGB | AnyRGBArray | AnyRGBString | HexLike | number | IAnyToRGB;
|
|
164
|
+
type AnyRGBArguments = RGBArguments | RGBAArguments;
|
|
165
|
+
declare class RGBA implements IRBBA, IToVec2, IToVec3, IToHSL, IToHSLA, IToString {
|
|
166
|
+
private _red;
|
|
167
|
+
get red(): number;
|
|
168
|
+
set red(val: number);
|
|
169
|
+
private _green;
|
|
170
|
+
get green(): number;
|
|
171
|
+
set green(val: number);
|
|
172
|
+
private _blue;
|
|
173
|
+
get blue(): number;
|
|
174
|
+
set blue(val: number);
|
|
175
|
+
private _alpha;
|
|
176
|
+
get alpha(): number;
|
|
177
|
+
set alpha(val: number);
|
|
178
|
+
static resolve(a: unknown): RGBA;
|
|
179
|
+
static resolveArgs(args: AnyRGBArguments): RGBA;
|
|
180
|
+
static cast(a: unknown): RGBA | undefined;
|
|
181
|
+
static is(a: unknown): a is AnyRGBLike;
|
|
182
|
+
constructor(red: number, green: number, blue: number, alpha?: number);
|
|
183
|
+
toArray(withAlpha?: boolean): AnyRGBArray;
|
|
184
|
+
toJSON(withAlpha?: boolean): IAnyRGB;
|
|
185
|
+
toString(withAlpha?: boolean): AnyRGBString;
|
|
186
|
+
get [Symbol.toStringTag](): string;
|
|
187
|
+
[NodeJSCustomInspect](): string;
|
|
188
|
+
toVec2(): Vec2Like;
|
|
189
|
+
toVec3(): Vec3Like;
|
|
190
|
+
toHSL(withAlpha?: false): HSLLike;
|
|
191
|
+
toHSL(withAlpha?: true): HSLALike;
|
|
192
|
+
toHSLA(): HSLALike;
|
|
193
|
+
invert(withAlpha?: boolean): RGBA;
|
|
194
|
+
}
|
|
195
|
+
interface IHSL {
|
|
196
|
+
hue: number;
|
|
197
|
+
saturation: number;
|
|
198
|
+
luminace: number;
|
|
199
|
+
}
|
|
200
|
+
interface IToHSL {
|
|
201
|
+
toHSL(): HSLLike;
|
|
202
|
+
}
|
|
203
|
+
type HSLArray = [number, number, number];
|
|
204
|
+
type HSLString = `hsl(${number},${number},${number})`;
|
|
205
|
+
type HSLLike = IHSL | HSLArray | HSLString | IToHSL;
|
|
206
|
+
type HSLArguments = HSLArray | [hsl: HSLLike];
|
|
207
|
+
interface IHSLA extends IHSL {
|
|
208
|
+
alpha: number;
|
|
209
|
+
}
|
|
210
|
+
interface IToHSLA {
|
|
211
|
+
toHSLA(): HSLALike;
|
|
212
|
+
}
|
|
213
|
+
type HSLAArray = [number, number, number, number];
|
|
214
|
+
type HSLAString = `hsla(${number},${number},${number},${number})`;
|
|
215
|
+
type HSLALike = IHSLA | HSLAArray | HSLAString | IToHSLA;
|
|
216
|
+
type HSLAArguments = HSLAArray | [hsla: HSLALike];
|
|
217
|
+
type IAnyHSL = IHSL | IHSLA;
|
|
218
|
+
type AnyHSLArray = HSLArray | HSLAArray;
|
|
219
|
+
type AnyHSLString = HSLString | HSLAString;
|
|
220
|
+
type IAnyToHSL = IToHSL | IToHSLA;
|
|
221
|
+
type AnyHSLLike = IAnyHSL | AnyHSLArray | AnyHSLString | HexLike | number | IAnyToHSL;
|
|
222
|
+
type AnyHSLArguments = HSLArguments | HSLAArguments;
|
|
223
|
+
declare class HSLA implements IHSLA, IToRGB, IToRGBA, IToVec2, IToVec3, IToString {
|
|
224
|
+
private _hue;
|
|
225
|
+
get hue(): number;
|
|
226
|
+
set hue(val: number);
|
|
227
|
+
private _saturation;
|
|
228
|
+
get saturation(): number;
|
|
229
|
+
set saturation(val: number);
|
|
230
|
+
private _luminace;
|
|
231
|
+
get luminace(): number;
|
|
232
|
+
set luminace(val: number);
|
|
233
|
+
private _alpha;
|
|
234
|
+
get alpha(): number;
|
|
235
|
+
set alpha(val: number);
|
|
236
|
+
static resolve(a: unknown): HSLA;
|
|
237
|
+
static resolveArgs(args: AnyHSLArguments): HSLA;
|
|
238
|
+
static cast(a: unknown): HSLA | undefined;
|
|
239
|
+
static is(a: unknown): a is AnyHSLLike;
|
|
240
|
+
constructor(hue: number, saturation: number, luminace: number, alpha?: number);
|
|
241
|
+
toArray(withAlpha?: boolean): AnyHSLArray;
|
|
242
|
+
toJSON(withAlpha?: boolean): IAnyHSL;
|
|
243
|
+
toString(withAlpha?: boolean): AnyHSLString;
|
|
244
|
+
get [Symbol.toStringTag](): string;
|
|
245
|
+
[NodeJSCustomInspect](): string;
|
|
246
|
+
toRGB(withAlpha?: true): RGBALike;
|
|
247
|
+
toRGB(withAlpha?: false): RGBLike;
|
|
248
|
+
toRGBA(): RGBALike;
|
|
249
|
+
toVec2(): Vec2Like;
|
|
250
|
+
toVec3(): Vec3Like;
|
|
251
|
+
invert(withAlpha?: boolean): HSLA;
|
|
252
|
+
}
|
|
253
|
+
type AnyColorArray = AnyRGBArray | AnyHSLArray;
|
|
254
|
+
type AnyColorString = AnyRGBString | AnyHSLString;
|
|
255
|
+
type IAnyColor = IAnyRGB | IAnyHSL;
|
|
256
|
+
type IAnyToColor = IAnyToRGB | IAnyToHSL;
|
|
257
|
+
type AnyColorLike = AnyColorArray | AnyColorString | IAnyColor | HexLike | number;
|
|
258
|
+
type AnyColorArguments = AnyColorArray | [color: AnyColorLike];
|
|
259
|
+
type AnyColor = RGBA | HSLA;
|
|
260
|
+
declare namespace AnyColor {
|
|
261
|
+
function cast(a: unknown, preferHSL?: boolean): AnyColor | undefined;
|
|
262
|
+
function resolve(a: unknown, preferHSL?: boolean): AnyColor;
|
|
263
|
+
function resolveArgs(args: AnyColorArguments, preferHSL?: boolean): AnyColor;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
interface ICircle extends IVec2 {
|
|
267
|
+
radius: number;
|
|
268
|
+
}
|
|
269
|
+
interface IToCircle {
|
|
270
|
+
toCircle(): CircleLike;
|
|
271
|
+
}
|
|
272
|
+
type CircleArray = [...Vec2Array, number];
|
|
273
|
+
type CircleString = `${Vec2String}|${number}`;
|
|
274
|
+
type CircleLike = ICircle | CircleArray | CircleString | IToCircle;
|
|
275
|
+
type CircleArguments = [circle: CircleLike] | [position: Vec2Like, radius: number] | CircleArray;
|
|
276
|
+
declare class Circle implements ICircle, IGeometryObject, IToVec2 {
|
|
277
|
+
radius: number;
|
|
278
|
+
get perimeter(): number;
|
|
279
|
+
get area(): number;
|
|
280
|
+
position: Vec2;
|
|
281
|
+
get x(): number;
|
|
282
|
+
set x(val: number);
|
|
283
|
+
get y(): number;
|
|
284
|
+
set y(val: number);
|
|
285
|
+
get w(): number;
|
|
286
|
+
set w(val: number);
|
|
287
|
+
static resolve(a: unknown): Circle;
|
|
288
|
+
static resolveArgs(args: CircleArguments): Circle;
|
|
289
|
+
static cast(a: unknown): Circle | undefined;
|
|
290
|
+
static is(a: unknown): a is CircleLike;
|
|
291
|
+
constructor(position: Vec2Like, radius: number);
|
|
292
|
+
toArray(): CircleArray;
|
|
293
|
+
toJSON(): ICircle;
|
|
294
|
+
toString(): CircleString;
|
|
295
|
+
get [Symbol.toStringTag](): string;
|
|
296
|
+
[NodeJSCustomInspect](): string;
|
|
297
|
+
clone(): Circle;
|
|
298
|
+
toVec2(): Vec2Like;
|
|
299
|
+
equals(circle: CircleLike): boolean;
|
|
300
|
+
equals(x: number, y: number, radius: number): boolean;
|
|
301
|
+
equals(position: Vec2Like, radius: number): boolean;
|
|
302
|
+
inside(circle: CircleLike): boolean;
|
|
303
|
+
inside(x: number, y: number, radius: number): boolean;
|
|
304
|
+
inside(position: Vec2Like, radius: number): boolean;
|
|
305
|
+
insidePoint(point: Vec2Like): boolean;
|
|
306
|
+
insidePoint(x: number, y: number): boolean;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
interface IRectangle extends IVec2, ISize {
|
|
310
|
+
}
|
|
311
|
+
interface IToRectangle {
|
|
312
|
+
toRectangle(): RectangleLike;
|
|
313
|
+
}
|
|
314
|
+
type RectangleArray = [...Vec2Array, ...SizeArray];
|
|
315
|
+
type RectangleString = `${Vec2String}|${SizeString}`;
|
|
316
|
+
type RectangleLike = IRectangle | RectangleArray | RectangleString | IToRectangle;
|
|
317
|
+
type RectangleArguments = [rectangle: RectangleLike] | [position: Vec2Like, size: SizeLike] | RectangleArray;
|
|
318
|
+
declare class Rectangle implements IRectangle, IGeometryObject, IToBoundingBox, IToVec2, IToSize {
|
|
319
|
+
position: Vec2;
|
|
320
|
+
size: Size;
|
|
321
|
+
get area(): number;
|
|
322
|
+
get perimeter(): number;
|
|
323
|
+
get x(): number;
|
|
324
|
+
set x(val: number);
|
|
325
|
+
get y(): number;
|
|
326
|
+
set y(val: number);
|
|
327
|
+
get w(): number;
|
|
328
|
+
set w(val: number);
|
|
329
|
+
get width(): number;
|
|
330
|
+
set width(val: number);
|
|
331
|
+
get height(): number;
|
|
332
|
+
set height(val: number);
|
|
333
|
+
static resolve(a: unknown): Rectangle;
|
|
334
|
+
static resolveArgs(args: RectangleArguments): Rectangle;
|
|
335
|
+
static cast(a: unknown): Rectangle | undefined;
|
|
336
|
+
static is(a: unknown): a is RectangleLike;
|
|
337
|
+
constructor(pos: Vec2Like, size: SizeLike);
|
|
338
|
+
toArray(w?: boolean): RectangleArray;
|
|
339
|
+
toString(w?: boolean): RectangleString;
|
|
340
|
+
get [Symbol.toStringTag](): string;
|
|
341
|
+
[NodeJSCustomInspect](): string;
|
|
342
|
+
toJSON(): IRectangle;
|
|
343
|
+
toBoundingBox(): BoundingBoxLike;
|
|
344
|
+
toVec2(): Vec2Like;
|
|
345
|
+
toSize(): SizeLike;
|
|
346
|
+
clone(): Rectangle;
|
|
347
|
+
equals(rectangle: RectangleLike): boolean;
|
|
348
|
+
equals(position: Vec2Like, size: SizeLike): boolean;
|
|
349
|
+
equals(x: number, y: number, width: number, height: number): boolean;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
interface IBoundingBox {
|
|
353
|
+
left: number;
|
|
354
|
+
right: number;
|
|
355
|
+
top: number;
|
|
356
|
+
bottom: number;
|
|
357
|
+
}
|
|
358
|
+
interface IToBoundingBox {
|
|
359
|
+
toBoundingBox(): BoundingBoxLike;
|
|
360
|
+
}
|
|
361
|
+
type BoundingBoxArray = [number, number, number, number];
|
|
362
|
+
type BoundingBoxString = `${number},${number},${number},${number}`;
|
|
363
|
+
type BoundingBoxLike = IBoundingBox | BoundingBoxArray | BoundingBoxString | IToBoundingBox;
|
|
364
|
+
type BoundingBoxArgs = [bbox: BoundingBoxLike] | BoundingBoxArray;
|
|
365
|
+
declare class BoundingBox implements IBoundingBox, IRectangle, IToRectangle, IToString {
|
|
366
|
+
left: number;
|
|
367
|
+
right: number;
|
|
368
|
+
top: number;
|
|
369
|
+
bottom: number;
|
|
370
|
+
get width(): number;
|
|
371
|
+
set width(val: number);
|
|
372
|
+
get height(): number;
|
|
373
|
+
set height(val: number);
|
|
374
|
+
get x(): number;
|
|
375
|
+
set x(x: number);
|
|
376
|
+
get y(): number;
|
|
377
|
+
set y(y: number);
|
|
378
|
+
w: number;
|
|
379
|
+
static resolve(a: unknown): BoundingBox;
|
|
380
|
+
static resolveArgs(args: BoundingBoxArgs): BoundingBox;
|
|
381
|
+
static cast(a: unknown): BoundingBox | undefined;
|
|
382
|
+
static is(a: unknown): a is BoundingBoxLike;
|
|
383
|
+
constructor(left: number, right: number, top: number, bottom: number);
|
|
384
|
+
toArray(): BoundingBoxArray;
|
|
385
|
+
toString(): BoundingBoxString;
|
|
386
|
+
get [Symbol.toStringTag](): string;
|
|
387
|
+
[NodeJSCustomInspect](): string;
|
|
388
|
+
toJSON(): IBoundingBox;
|
|
389
|
+
clone(): BoundingBox;
|
|
390
|
+
equals(bbox: BoundingBoxLike): boolean;
|
|
391
|
+
equals(left: number, right: number, top: number, bottom: number): boolean;
|
|
392
|
+
toSize(): SizeLike;
|
|
393
|
+
toVec2(): Vec2Like;
|
|
394
|
+
toRectangle(): RectangleLike;
|
|
395
|
+
inside(bbox: BoundingBoxLike): boolean;
|
|
396
|
+
inside(left: number, right: number, top: number, bottom: number): boolean;
|
|
397
|
+
insidePoint(point: Vec2Like): boolean;
|
|
398
|
+
insidePoint(x: number, y: number): boolean;
|
|
399
|
+
insideCircle(circle: CircleLike): boolean;
|
|
400
|
+
insideCircle(x: number, y: number, radius: number): boolean;
|
|
401
|
+
insideCircle(position: Vec2Like, radius: number): boolean;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
interface IMat4 {
|
|
405
|
+
m00: number;
|
|
406
|
+
m01: number;
|
|
407
|
+
m02: number;
|
|
408
|
+
m03: number;
|
|
409
|
+
m10: number;
|
|
410
|
+
m11: number;
|
|
411
|
+
m12: number;
|
|
412
|
+
m13: number;
|
|
413
|
+
m20: number;
|
|
414
|
+
m21: number;
|
|
415
|
+
m22: number;
|
|
416
|
+
m23: number;
|
|
417
|
+
m30: number;
|
|
418
|
+
m31: number;
|
|
419
|
+
m32: number;
|
|
420
|
+
m33: number;
|
|
421
|
+
}
|
|
422
|
+
interface IToMat4 {
|
|
423
|
+
toMat4(): Mat4Like;
|
|
424
|
+
}
|
|
425
|
+
type Mat4Array = [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];
|
|
426
|
+
type Mat4NestedArray = [[number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number]];
|
|
427
|
+
type Mat4String = `${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number}`;
|
|
428
|
+
type Mat4Like = IMat4 | Mat4Array | Mat4NestedArray | Mat4String | number | IToMat4;
|
|
429
|
+
type Mat4Arguments = [mat: Mat4Like] | Mat4Array;
|
|
430
|
+
declare class Mat4 implements IMat4, IToMat3, IToString {
|
|
431
|
+
protected _raw: Mat4Array;
|
|
432
|
+
get m00(): number;
|
|
433
|
+
set m00(val: number);
|
|
434
|
+
get m01(): number;
|
|
435
|
+
set m01(val: number);
|
|
436
|
+
get m02(): number;
|
|
437
|
+
set m02(val: number);
|
|
438
|
+
get m03(): number;
|
|
439
|
+
set m03(val: number);
|
|
440
|
+
get m10(): number;
|
|
441
|
+
set m10(val: number);
|
|
442
|
+
get m11(): number;
|
|
443
|
+
set m11(val: number);
|
|
444
|
+
get m12(): number;
|
|
445
|
+
set m12(val: number);
|
|
446
|
+
get m13(): number;
|
|
447
|
+
set m13(val: number);
|
|
448
|
+
get m20(): number;
|
|
449
|
+
set m20(val: number);
|
|
450
|
+
get m21(): number;
|
|
451
|
+
set m21(val: number);
|
|
452
|
+
get m22(): number;
|
|
453
|
+
set m22(val: number);
|
|
454
|
+
get m23(): number;
|
|
455
|
+
set m23(val: number);
|
|
456
|
+
get m30(): number;
|
|
457
|
+
set m30(val: number);
|
|
458
|
+
get m31(): number;
|
|
459
|
+
set m31(val: number);
|
|
460
|
+
get m32(): number;
|
|
461
|
+
set m32(val: number);
|
|
462
|
+
get m33(): number;
|
|
463
|
+
set m33(val: number);
|
|
464
|
+
static resolve(a: unknown): Mat4;
|
|
465
|
+
static resolveArgs(args: Mat4Arguments): Mat4;
|
|
466
|
+
static cast(a: unknown): Mat4 | undefined;
|
|
467
|
+
static is(a: unknown): a is Mat4Like;
|
|
468
|
+
static orthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): Mat4;
|
|
469
|
+
static orthographic(bbox: BoundingBoxLike, near: number, far: number): Mat4;
|
|
470
|
+
static perspective(fov: number, aspect: number, near: number, far: number): Mat4;
|
|
471
|
+
static pointAt(position: Vec3Like, target: Vec3Like, up: Vec3Like): Mat4;
|
|
472
|
+
constructor(init?: Mat4Array);
|
|
473
|
+
toArray(): Mat4Array;
|
|
474
|
+
toNestetArray(): Mat4NestedArray;
|
|
475
|
+
toJSON(): IMat4;
|
|
476
|
+
toString(): Mat4String;
|
|
477
|
+
get [Symbol.toStringTag](): string;
|
|
478
|
+
[NodeJSCustomInspect](): string;
|
|
479
|
+
clone(): Mat4;
|
|
480
|
+
equals(mat: Mat4Like): boolean;
|
|
481
|
+
equals(...mat: Mat4Array): boolean;
|
|
482
|
+
add(mat: Mat4Like): Mat4;
|
|
483
|
+
add(...mat: Mat4Array): Mat4;
|
|
484
|
+
subtract(mat: Mat4Like): Mat4;
|
|
485
|
+
subtract(...mat: Mat4Array): Mat4;
|
|
486
|
+
multiply(mat: Mat4Like): Mat4;
|
|
487
|
+
multiply(...mat: Mat4Array): Mat4;
|
|
488
|
+
multiply(scalar: number): Mat4;
|
|
489
|
+
multiply(vec: Vec3Like): Vec3;
|
|
490
|
+
translate(x: number, y: number, z: number): Mat4;
|
|
491
|
+
translate(vec: Vec3Like): Mat4;
|
|
492
|
+
rotateX(angle: number): Mat4;
|
|
493
|
+
rotateY(angle: number): Mat4;
|
|
494
|
+
rotateZ(angle: number): Mat4;
|
|
495
|
+
rotate(x: number, y: number, z: number): Mat4;
|
|
496
|
+
rotate(vec: Vec3Like): Mat4;
|
|
497
|
+
scale(x: number, y: number, z: number): Mat4;
|
|
498
|
+
scale(vec: Vec3Like): Mat4;
|
|
499
|
+
inverse(): Mat4;
|
|
500
|
+
toMat3(): Mat3Like;
|
|
7
501
|
}
|
|
8
502
|
|
|
9
|
-
interface
|
|
10
|
-
|
|
11
|
-
|
|
503
|
+
interface IMat3 {
|
|
504
|
+
m00: number;
|
|
505
|
+
m01: number;
|
|
506
|
+
m02: number;
|
|
507
|
+
m10: number;
|
|
508
|
+
m11: number;
|
|
509
|
+
m12: number;
|
|
510
|
+
m20: number;
|
|
511
|
+
m21: number;
|
|
512
|
+
m22: number;
|
|
513
|
+
}
|
|
514
|
+
interface IToMat3 {
|
|
515
|
+
toMat3(): Mat3Like;
|
|
516
|
+
}
|
|
517
|
+
type Mat3Array = [number, number, number, number, number, number, number, number, number];
|
|
518
|
+
type Mat3NestedArray = [[number, number, number], [number, number, number], [number, number, number]];
|
|
519
|
+
type Mat3String = `${number},${number},${number},${number},${number},${number},${number},${number},${number}`;
|
|
520
|
+
type Mat3Like = IMat3 | Mat3Array | Mat3NestedArray | Mat3String | number | IToMat3;
|
|
521
|
+
type Mat3Arguments = [mat: Mat3Like] | Mat3Array;
|
|
522
|
+
declare class Mat3 implements IMat3, IToMat4, IToString {
|
|
523
|
+
protected _raw: Mat3Array;
|
|
524
|
+
get m00(): number;
|
|
525
|
+
set m00(val: number);
|
|
526
|
+
get m01(): number;
|
|
527
|
+
set m01(val: number);
|
|
528
|
+
get m02(): number;
|
|
529
|
+
set m02(val: number);
|
|
530
|
+
get m10(): number;
|
|
531
|
+
set m10(val: number);
|
|
532
|
+
get m11(): number;
|
|
533
|
+
set m11(val: number);
|
|
534
|
+
get m12(): number;
|
|
535
|
+
set m12(val: number);
|
|
536
|
+
get m20(): number;
|
|
537
|
+
set m20(val: number);
|
|
538
|
+
get m21(): number;
|
|
539
|
+
set m21(val: number);
|
|
540
|
+
get m22(): number;
|
|
541
|
+
set m22(val: number);
|
|
542
|
+
static resolve(a: unknown): Mat3;
|
|
543
|
+
static resolveArgs(args: Mat3Arguments): Mat3;
|
|
544
|
+
static cast(a: unknown): Mat3 | undefined;
|
|
545
|
+
static is(a: unknown): a is Mat3Like;
|
|
546
|
+
static projection(width: number, height: number): Mat3;
|
|
547
|
+
constructor(init?: Mat3Array);
|
|
548
|
+
toArray(): Mat3Array;
|
|
549
|
+
toNestetArray(): Mat3NestedArray;
|
|
550
|
+
toJSON(): IMat3;
|
|
551
|
+
toString(): Mat3String;
|
|
552
|
+
get [Symbol.toStringTag](): string;
|
|
553
|
+
[NodeJSCustomInspect](): string;
|
|
554
|
+
clone(): Mat3;
|
|
555
|
+
equals(mat: Mat3Like): boolean;
|
|
556
|
+
equals(...mat: Mat3Array): boolean;
|
|
557
|
+
add(mat: Mat3Like): Mat3;
|
|
558
|
+
add(...mat: Mat3Array): Mat3;
|
|
559
|
+
subtract(mat: Mat3Like): Mat3;
|
|
560
|
+
subtract(...mat: Mat3Array): Mat3;
|
|
561
|
+
multiply(mat: Mat3Like): Mat3;
|
|
562
|
+
multiply(...mat: Mat3Array): Mat3;
|
|
563
|
+
multiply(scalar: number): Mat3;
|
|
564
|
+
translate(x: number, y: number): Mat3;
|
|
565
|
+
translate(vec: Vec2Like): Mat3;
|
|
566
|
+
rotate(angle: number): Mat3;
|
|
567
|
+
scale(x: number, y: number): Mat3;
|
|
568
|
+
scale(vec: Vec2Like): Mat3;
|
|
569
|
+
determinant(): number;
|
|
570
|
+
inverse(): Mat3;
|
|
571
|
+
toMat4(): Mat4Like;
|
|
12
572
|
}
|
|
13
573
|
|
|
14
|
-
interface
|
|
15
|
-
|
|
16
|
-
|
|
574
|
+
interface IQuaternion {
|
|
575
|
+
w: number;
|
|
576
|
+
x: number;
|
|
577
|
+
y: number;
|
|
578
|
+
z: number;
|
|
17
579
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
type
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
static is(a: unknown): a is
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
580
|
+
interface IToQuaternion {
|
|
581
|
+
toQuaternion(): QuaternionLike;
|
|
582
|
+
}
|
|
583
|
+
type QuaternionArray = [number, number, number, number];
|
|
584
|
+
type QuaternionString = `${number} + ${number}i + ${number}j + ${number}k`;
|
|
585
|
+
type QuaternionLike = IQuaternion | QuaternionArray | QuaternionString | IToQuaternion;
|
|
586
|
+
type QuaternionArguments = QuaternionArray | [quaternion: QuaternionLike];
|
|
587
|
+
declare class Quaternion implements IToVec3, IToMat3, IToMat4, IToString {
|
|
588
|
+
w: number;
|
|
589
|
+
x: number;
|
|
590
|
+
y: number;
|
|
591
|
+
z: number;
|
|
592
|
+
static is(a: unknown): a is IQuaternion;
|
|
593
|
+
static resolve(a: unknown): Quaternion;
|
|
594
|
+
static resolveArgs(args: QuaternionArguments): Quaternion;
|
|
595
|
+
static cast(a: unknown): Quaternion | undefined;
|
|
596
|
+
static fromAxisAngle(axis: Vec3Like, angle: number): Quaternion;
|
|
597
|
+
static fromAxisAngle(x: number, y: number, z: number, angle: number): Quaternion;
|
|
598
|
+
static fromEuler(x: number, y: number, z: number): Quaternion;
|
|
599
|
+
static fromEuler(vec: Vec3Like): Quaternion;
|
|
600
|
+
static get zero(): Quaternion;
|
|
601
|
+
constructor(w: number, x: number, y: number, z: number);
|
|
602
|
+
toArray(): QuaternionArray;
|
|
603
|
+
toString(): QuaternionString;
|
|
604
|
+
get [Symbol.toStringTag](): string;
|
|
605
|
+
[NodeJSCustomInspect](): string;
|
|
606
|
+
toJSON(): IQuaternion;
|
|
607
|
+
clone(): Quaternion;
|
|
608
|
+
add(quaternion: QuaternionLike): Quaternion;
|
|
609
|
+
add(...quaternion: QuaternionArray): Quaternion;
|
|
610
|
+
offset(quaternion: QuaternionLike): this;
|
|
611
|
+
offset(...quaternion: QuaternionArray): this;
|
|
612
|
+
subtract(quaternion: QuaternionLike): Quaternion;
|
|
613
|
+
subtract(...quaternion: QuaternionArray): Quaternion;
|
|
614
|
+
negative(): Quaternion;
|
|
615
|
+
length(sqrt?: boolean): number;
|
|
616
|
+
normalize(): Quaternion;
|
|
617
|
+
multiply(quaternion: QuaternionLike): Quaternion;
|
|
618
|
+
multiply(...quaternion: QuaternionArray): Quaternion;
|
|
619
|
+
multiplyVector(x: number, y: number, z: number): Vec3;
|
|
620
|
+
multiplyVector(vec: Vec3Like): Vec3;
|
|
621
|
+
scale(scalar: number): Quaternion;
|
|
622
|
+
dot(quaternion: QuaternionLike): number;
|
|
623
|
+
dot(...quaternion: QuaternionArray): number;
|
|
624
|
+
inverse(): Quaternion;
|
|
625
|
+
divide(quaternion: QuaternionLike): Quaternion;
|
|
626
|
+
divide(...quaternion: QuaternionArray): Quaternion;
|
|
627
|
+
conjugate(): Quaternion;
|
|
628
|
+
exp(): Quaternion;
|
|
629
|
+
log(): Quaternion;
|
|
630
|
+
toVec3(): Vec3Like;
|
|
631
|
+
toAxisAngle(): Vec3;
|
|
632
|
+
toEuler(): Vec3;
|
|
633
|
+
toMat3(): Mat3Like;
|
|
634
|
+
toMat4(): Mat4Like;
|
|
38
635
|
}
|
|
39
636
|
|
|
40
637
|
interface IVec3 extends IVec2 {
|
|
41
638
|
z: number;
|
|
42
639
|
}
|
|
640
|
+
interface IToVec3 {
|
|
641
|
+
toVec3(): Vec3Like;
|
|
642
|
+
}
|
|
43
643
|
type Vec3Array = [number, number, number] | [number, number, number, number];
|
|
44
644
|
type Vec3String = `${number},${number},${number}` | `${number},${number},${number};${number}`;
|
|
45
|
-
type Vec3Like = IVec3 | Vec3Array | Vec3String | number;
|
|
645
|
+
type Vec3Like = IVec3 | Vec3Array | Vec3String | number | IToVec3;
|
|
46
646
|
type Vec3Arguments = [Vec3Like] | [number, number, number];
|
|
47
|
-
declare class Vec3 implements IVec3 {
|
|
647
|
+
declare class Vec3 implements IVec3, IToVec2, IToRGB, IToRGBA, IToHSL, IToHSLA, IToQuaternion, IToString {
|
|
48
648
|
x: number;
|
|
49
649
|
y: number;
|
|
50
650
|
z: number;
|
|
@@ -56,13 +656,23 @@ declare class Vec3 implements IVec3 {
|
|
|
56
656
|
static fromPoints(a: Vec3Like, b: Vec3Like): Vec3;
|
|
57
657
|
static clamp(value: Vec3Like, min: Vec3Like, max: Vec3Like): Vec3;
|
|
58
658
|
static intersectPlane(planeP: Vec3Like, planeN: Vec3Like, lineStart: Vec3Like, lineEnd: Vec3Like, t: number): Vec3;
|
|
59
|
-
|
|
659
|
+
static get zero(): Vec3;
|
|
660
|
+
static get one(): Vec3;
|
|
661
|
+
constructor(x: number, y: number, z: number, w?: number);
|
|
60
662
|
toArray(w?: boolean): Vec3Array;
|
|
61
663
|
toJSON(): IVec3;
|
|
62
664
|
toString(w?: boolean): Vec3String;
|
|
665
|
+
get [Symbol.toStringTag](): string;
|
|
666
|
+
[NodeJSCustomInspect](): string;
|
|
63
667
|
toVec2(): Vec2Like;
|
|
668
|
+
toRGB(): RGBLike;
|
|
669
|
+
toRGBA(): RGBALike;
|
|
670
|
+
toHSL(): HSLLike;
|
|
671
|
+
toHSLA(): HSLALike;
|
|
672
|
+
toQuaternion(): QuaternionLike;
|
|
64
673
|
clone(): Vec3;
|
|
65
674
|
equals(vec: Vec3Like): boolean;
|
|
675
|
+
equals(x: number, y: number, z: number): boolean;
|
|
66
676
|
setX(x: number): this;
|
|
67
677
|
setY(y: number): this;
|
|
68
678
|
setZ(z: number): this;
|
|
@@ -99,11 +709,14 @@ interface IVec2 {
|
|
|
99
709
|
y: number;
|
|
100
710
|
w: number;
|
|
101
711
|
}
|
|
712
|
+
interface IToVec2 {
|
|
713
|
+
toVec2(): Vec2Like;
|
|
714
|
+
}
|
|
102
715
|
type Vec2Array = [number, number] | [number, number, number];
|
|
103
716
|
type Vec2String = `${number},${number}` | `${number},${number};${number}`;
|
|
104
|
-
type Vec2Like = IVec2 | Vec2Array | Vec2String | number;
|
|
717
|
+
type Vec2Like = IVec2 | Vec2Array | Vec2String | number | IToVec2;
|
|
105
718
|
type Vec2Arguments = [Vec2Like] | [number, number];
|
|
106
|
-
declare class Vec2 implements IVec2 {
|
|
719
|
+
declare class Vec2 implements IVec2, IToVec3, IToSize, IToRGB, IToRGBA, IToHSL, IToHSLA, IToString {
|
|
107
720
|
x: number;
|
|
108
721
|
y: number;
|
|
109
722
|
w: number;
|
|
@@ -113,14 +726,23 @@ declare class Vec2 implements IVec2 {
|
|
|
113
726
|
static is(a: unknown): a is Vec2Like;
|
|
114
727
|
static fromPoints(a: Vec2Like, b: Vec2Like): Vec2;
|
|
115
728
|
static clamp(value: Vec2Like, min: Vec2Like, max: Vec2Like): Vec2;
|
|
116
|
-
|
|
729
|
+
static get zero(): Vec2;
|
|
730
|
+
static get one(): Vec2;
|
|
731
|
+
constructor(x: number, y: number, w?: number);
|
|
117
732
|
toArray(w?: boolean): Vec2Array;
|
|
118
733
|
toJSON(): IVec2;
|
|
119
734
|
toString(w?: boolean): Vec2String;
|
|
120
|
-
|
|
121
|
-
|
|
735
|
+
get [Symbol.toStringTag](): string;
|
|
736
|
+
[NodeJSCustomInspect](): string;
|
|
737
|
+
toSize(): SizeLike;
|
|
738
|
+
toVec3(z?: number): Vec3Like;
|
|
739
|
+
toRGB(): RGBLike;
|
|
740
|
+
toRGBA(): RGBALike;
|
|
741
|
+
toHSL(): HSLLike;
|
|
742
|
+
toHSLA(): HSLALike;
|
|
122
743
|
clone(): Vec2;
|
|
123
744
|
equals(vec: Vec2Like): boolean;
|
|
745
|
+
equals(x: number, y: number): boolean;
|
|
124
746
|
setX(x: number): this;
|
|
125
747
|
setY(y: number): this;
|
|
126
748
|
setW(w: number): this;
|
|
@@ -168,6 +790,8 @@ declare abstract class MathFunction<Input extends Array<number> = Array<number>>
|
|
|
168
790
|
* @returns The root points, this can be an empty array if no root points have been found
|
|
169
791
|
*/
|
|
170
792
|
abstract roots(): Array<Vec2>;
|
|
793
|
+
abstract get [Symbol.toStringTag](): string;
|
|
794
|
+
abstract [NodeJSCustomInspect](): string;
|
|
171
795
|
}
|
|
172
796
|
|
|
173
797
|
/**
|
|
@@ -202,13 +826,37 @@ declare class LinearFunction extends MathFunction<[number]> {
|
|
|
202
826
|
get(x: number): number;
|
|
203
827
|
roots(): Array<Vec2>;
|
|
204
828
|
toString(): LinearFunctionString;
|
|
829
|
+
get [Symbol.toStringTag](): string;
|
|
830
|
+
[NodeJSCustomInspect](): string;
|
|
205
831
|
}
|
|
206
832
|
|
|
833
|
+
/**
|
|
834
|
+
* A type that represents the sign of a number
|
|
835
|
+
*/
|
|
836
|
+
type SignCharacter = "-" | "+";
|
|
837
|
+
/**
|
|
838
|
+
* Get the sign character from a number
|
|
839
|
+
* @param num A number
|
|
840
|
+
*/
|
|
841
|
+
declare function signCharacter(num: number | bigint): SignCharacter | undefined;
|
|
842
|
+
|
|
843
|
+
/**
|
|
844
|
+
* The various types of how a quad function can be represented
|
|
845
|
+
*/
|
|
207
846
|
type QuadFunctionType = "standard";
|
|
847
|
+
/**
|
|
848
|
+
* A typed map of each quad function representations
|
|
849
|
+
*/
|
|
208
850
|
type QuadFunctionString = {
|
|
209
|
-
"standard": `f(x) = ${number}x^2 ${
|
|
851
|
+
"standard": `f(x) = ${number}x^2 ${SignCharacter} ${number}x ${SignCharacter} ${number}` | `f(x) = ${number}x^2 ${SignCharacter} ${number}x` | `f(x) = ${number}x^2`;
|
|
210
852
|
};
|
|
853
|
+
/**
|
|
854
|
+
* A string representation of a quad function
|
|
855
|
+
*/
|
|
211
856
|
type QuadFunctionStrings = QuadFunctionString[QuadFunctionType];
|
|
857
|
+
/**
|
|
858
|
+
* A class that implements a quad function with `a`, `b` and `c`
|
|
859
|
+
*/
|
|
212
860
|
declare class QuadFunction extends MathFunction<[number]> {
|
|
213
861
|
a: number;
|
|
214
862
|
b: number;
|
|
@@ -218,168 +866,56 @@ declare class QuadFunction extends MathFunction<[number]> {
|
|
|
218
866
|
get(x: number): number;
|
|
219
867
|
roots(): Array<Vec2>;
|
|
220
868
|
toString<T extends QuadFunctionType>(type?: T): QuadFunctionString[T];
|
|
869
|
+
get [Symbol.toStringTag](): string;
|
|
870
|
+
[NodeJSCustomInspect](): string;
|
|
221
871
|
}
|
|
222
872
|
|
|
873
|
+
/**
|
|
874
|
+
* A error when a value wasn't able to be resolved to another type
|
|
875
|
+
*/
|
|
223
876
|
declare class ResolveError extends Error {
|
|
224
877
|
readonly target: string;
|
|
225
878
|
readonly value: unknown;
|
|
879
|
+
/**
|
|
880
|
+
* Create a resolve exception
|
|
881
|
+
* @param target The target type name
|
|
882
|
+
* @param value A value
|
|
883
|
+
*/
|
|
226
884
|
constructor(target: string, value: unknown);
|
|
227
885
|
}
|
|
228
886
|
|
|
229
|
-
declare function sign_char(num: number | bigint): "-" | "+" | undefined;
|
|
230
|
-
|
|
231
|
-
type JavaScriptTypes = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
|
|
232
|
-
type JavaScriptTypeMap = {
|
|
233
|
-
"string": string;
|
|
234
|
-
"number": number;
|
|
235
|
-
"bigint": bigint;
|
|
236
|
-
"boolean": boolean;
|
|
237
|
-
"symbol": symbol;
|
|
238
|
-
"undefined": undefined;
|
|
239
|
-
"object": object;
|
|
240
|
-
"function": Function;
|
|
241
|
-
};
|
|
242
|
-
type HexDigit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "A" | "B" | "C" | "D" | "E" | "F";
|
|
243
|
-
type HexLike = `$${string}` | `#${string}` | `0x${string}` | string;
|
|
244
|
-
type Predicate<T> = (a: unknown) => a is T;
|
|
245
|
-
declare function check_number(obj: unknown): obj is number;
|
|
246
|
-
declare function check_hex_digit(obj: unknown): obj is HexDigit;
|
|
247
|
-
declare function get_hex_part(string: string): string;
|
|
248
|
-
declare function check_hex(obj: unknown): obj is HexLike;
|
|
249
|
-
declare function check_string(obj: unknown): obj is string;
|
|
250
|
-
declare function check_array<T>(obj: unknown, predicate?: Predicate<T>, requiredLength?: number): obj is Array<T>;
|
|
251
|
-
declare function check_number_array(obj: unknown, requiredLength?: number): obj is Array<number>;
|
|
252
|
-
declare function check_string_array(obj: unknown, requiredLength?: number): obj is Array<string>;
|
|
253
|
-
declare function has_property<Obj, Name extends string, Type extends JavaScriptTypes>(obj: Obj, name: Name, type: Type): obj is Obj & {
|
|
254
|
-
[name in Name]: JavaScriptTypeMap[Type];
|
|
255
|
-
};
|
|
256
|
-
|
|
257
887
|
declare const DJB2_OFFSET = 5381n;
|
|
258
888
|
declare function djb2<V>(value: V): bigint;
|
|
259
889
|
declare const FNV1_OFFSET = 14695981039346656037n;
|
|
260
890
|
declare const FNV1_PRIME = 1099511628211n;
|
|
261
891
|
declare function fnv1<V>(value: V): bigint;
|
|
262
892
|
declare function sdbm<V>(value: V): bigint;
|
|
263
|
-
interface IHash {
|
|
893
|
+
interface IHash extends IToString {
|
|
264
894
|
update(input: Uint8Array): this;
|
|
265
895
|
digest(): Uint8Array;
|
|
266
896
|
}
|
|
267
897
|
|
|
268
898
|
declare class MD2 implements IHash {
|
|
269
|
-
static readonly BLOCK_SIZE = 16;
|
|
270
|
-
private _data;
|
|
271
|
-
private _state;
|
|
272
|
-
private _checksum;
|
|
273
|
-
private _length;
|
|
274
|
-
constructor();
|
|
275
|
-
update(input: Uint8Array): this;
|
|
276
|
-
private _transform;
|
|
277
|
-
digest(): Uint8Array;
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
declare const cap_angle_degree: (angle: number) => number;
|
|
282
|
-
declare const cap_angle_radian: (angle: number) => number;
|
|
283
|
-
declare const radian_to_degree: (angle: number) => number;
|
|
284
|
-
declare const degree_to_radian: (angle: number) => number;
|
|
285
|
-
|
|
286
|
-
interface ICircle extends IVec2 {
|
|
287
|
-
radius: number;
|
|
288
|
-
}
|
|
289
|
-
type CircleArray = [...Vec2Array, number];
|
|
290
|
-
type CircleString = `${Vec2String}|${number}`;
|
|
291
|
-
type CircleLike = ICircle | CircleArray | CircleString;
|
|
292
|
-
declare class Circle implements ICircle, IGeometryObject, IToString {
|
|
293
|
-
radius: number;
|
|
294
|
-
get perimeter(): number;
|
|
295
|
-
get area(): number;
|
|
296
|
-
position: Vec2;
|
|
297
|
-
get x(): number;
|
|
298
|
-
set x(val: number);
|
|
299
|
-
get y(): number;
|
|
300
|
-
set y(val: number);
|
|
301
|
-
get w(): number;
|
|
302
|
-
set w(val: number);
|
|
303
|
-
static resolve(a: unknown): Circle;
|
|
304
|
-
static cast(a: unknown): Circle | undefined;
|
|
305
|
-
static is(a: unknown): a is CircleLike;
|
|
306
|
-
constructor(position: Vec2Like, radius: number);
|
|
307
|
-
toArray(): CircleArray;
|
|
308
|
-
toJSON(): ICircle;
|
|
309
|
-
toString(): CircleString;
|
|
310
|
-
clone(): Circle;
|
|
311
|
-
equals(circle: CircleLike): boolean;
|
|
312
|
-
inside(a: CircleLike): boolean;
|
|
313
|
-
insidePoint(a: Vec2Like): boolean;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
interface IRectangle extends IVec2, ISize {
|
|
317
|
-
}
|
|
318
|
-
type RectangleArray = [...Vec2Array, ...SizeArray];
|
|
319
|
-
type RectangleString = `${Vec2String}|${SizeString}`;
|
|
320
|
-
type RectangleLike = IRectangle | RectangleArray | RectangleString;
|
|
321
|
-
declare class Rectangle implements IRectangle, IGeometryObject, IToString {
|
|
322
|
-
position: Vec2;
|
|
323
|
-
size: Size;
|
|
324
|
-
get area(): number;
|
|
325
|
-
get perimeter(): number;
|
|
326
|
-
get x(): number;
|
|
327
|
-
set x(val: number);
|
|
328
|
-
get y(): number;
|
|
329
|
-
set y(val: number);
|
|
330
|
-
get w(): number;
|
|
331
|
-
set w(val: number);
|
|
332
|
-
get width(): number;
|
|
333
|
-
set width(val: number);
|
|
334
|
-
get height(): number;
|
|
335
|
-
set height(val: number);
|
|
336
|
-
static resolve(a: unknown): Rectangle;
|
|
337
|
-
static cast(a: unknown): Rectangle | undefined;
|
|
338
|
-
static is(a: unknown): a is RectangleLike;
|
|
339
|
-
constructor(pos: Vec2Like, size: SizeLike);
|
|
340
|
-
constructor(x: number, y: number, width: number, height: number);
|
|
341
|
-
toArray(w?: boolean): RectangleArray;
|
|
342
|
-
toString(w?: boolean): RectangleString;
|
|
343
|
-
toJSON(): IRectangle;
|
|
344
|
-
toBoundingBox(): BoundingBoxLike;
|
|
345
|
-
clone(): Rectangle;
|
|
346
|
-
equals(rectangle: RectangleLike): boolean;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
interface IBoundingBox {
|
|
350
|
-
left: number;
|
|
351
|
-
right: number;
|
|
352
|
-
top: number;
|
|
353
|
-
bottom: number;
|
|
354
|
-
}
|
|
355
|
-
type BoundingBoxArray = [number, number, number, number];
|
|
356
|
-
type BoundingBoxString = `${number},${number},${number},${number}`;
|
|
357
|
-
type BoundingBoxLike = IBoundingBox | BoundingBoxArray | BoundingBoxString;
|
|
358
|
-
declare class BoundingBox implements IBoundingBox, ISize, IToString {
|
|
359
|
-
left: number;
|
|
360
|
-
right: number;
|
|
361
|
-
top: number;
|
|
362
|
-
bottom: number;
|
|
363
|
-
get width(): number;
|
|
364
|
-
set width(val: number);
|
|
365
|
-
get height(): number;
|
|
366
|
-
set height(val: number);
|
|
367
|
-
static resolve(a: unknown): BoundingBox;
|
|
368
|
-
static cast(a: unknown): BoundingBox | undefined;
|
|
369
|
-
static is(a: unknown): a is BoundingBoxLike;
|
|
370
|
-
constructor(left: number, right: number, top: number, bottom: number);
|
|
371
|
-
toArray(): BoundingBoxArray;
|
|
372
|
-
toString(): BoundingBoxString;
|
|
373
|
-
toJSON(): IBoundingBox;
|
|
374
|
-
clone(): BoundingBox;
|
|
375
|
-
equals(bbox: BoundingBoxLike): boolean;
|
|
376
|
-
toSquare(): Size;
|
|
377
|
-
toRectangle(): Rectangle;
|
|
378
|
-
inside(a: BoundingBoxLike): boolean;
|
|
379
|
-
insidePoint(a: Vec2Like): boolean;
|
|
380
|
-
insideCircle(a: CircleLike): boolean;
|
|
899
|
+
static readonly BLOCK_SIZE = 16;
|
|
900
|
+
private _data;
|
|
901
|
+
private _state;
|
|
902
|
+
private _checksum;
|
|
903
|
+
private _length;
|
|
904
|
+
constructor();
|
|
905
|
+
update(input: Uint8Array): this;
|
|
906
|
+
private _transform;
|
|
907
|
+
digest(): Uint8Array;
|
|
908
|
+
toString(): string;
|
|
909
|
+
get [Symbol.toStringTag](): string;
|
|
910
|
+
[NodeJSCustomInspect](): string;
|
|
381
911
|
}
|
|
382
912
|
|
|
913
|
+
declare const MAX_ANGLE_DEGREE = 360;
|
|
914
|
+
declare const clampAngleDegree: (angle: number) => number;
|
|
915
|
+
declare const clampAngleRadian: (angle: number) => number;
|
|
916
|
+
declare const radianToDegree: (angle: number) => number;
|
|
917
|
+
declare const degreeToRadian: (angle: number) => number;
|
|
918
|
+
|
|
383
919
|
interface ITriangle extends IGeometryObject {
|
|
384
920
|
readonly a: number;
|
|
385
921
|
readonly b: number;
|
|
@@ -391,14 +927,14 @@ interface ITriangle extends IGeometryObject {
|
|
|
391
927
|
readonly height: number;
|
|
392
928
|
readonly base: number;
|
|
393
929
|
}
|
|
394
|
-
declare abstract class
|
|
395
|
-
A:
|
|
396
|
-
B:
|
|
397
|
-
C:
|
|
930
|
+
declare abstract class Triangle<T> implements ITriangle {
|
|
931
|
+
A: T;
|
|
932
|
+
B: T;
|
|
933
|
+
C: T;
|
|
398
934
|
abstract get a(): number;
|
|
399
935
|
abstract get b(): number;
|
|
400
936
|
abstract get c(): number;
|
|
401
|
-
constructor(A:
|
|
937
|
+
constructor(A: T, B: T, C: T);
|
|
402
938
|
get alpha(): number;
|
|
403
939
|
get beta(): number;
|
|
404
940
|
get gamma(): number;
|
|
@@ -407,331 +943,77 @@ declare abstract class ATriangle<P extends Vec2 | Vec3> implements ITriangle, IT
|
|
|
407
943
|
get area(): number;
|
|
408
944
|
get base(): number;
|
|
409
945
|
get height(): number;
|
|
946
|
+
toString(): string;
|
|
947
|
+
get [Symbol.toStringTag](): string;
|
|
948
|
+
[NodeJSCustomInspect](): string;
|
|
410
949
|
}
|
|
411
|
-
declare class Triangle2D extends
|
|
950
|
+
declare class Triangle2D extends Triangle<Vec2> {
|
|
412
951
|
get a(): number;
|
|
413
952
|
get b(): number;
|
|
414
953
|
get c(): number;
|
|
415
954
|
}
|
|
416
|
-
declare class Triangle3D extends
|
|
955
|
+
declare class Triangle3D extends Triangle<Vec3> {
|
|
417
956
|
get a(): number;
|
|
418
957
|
get b(): number;
|
|
419
958
|
get c(): number;
|
|
420
959
|
}
|
|
421
960
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
m33: number;
|
|
439
|
-
}
|
|
440
|
-
type Mat4Array = [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];
|
|
441
|
-
type Mat4NestedArray = [[number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number]];
|
|
442
|
-
type Mat4String = `${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number},${number}`;
|
|
443
|
-
type Mat4Like = IMat4 | Mat4Array | Mat4NestedArray | Mat4String | number;
|
|
444
|
-
declare class Mat4 implements IMat4 {
|
|
445
|
-
protected _raw: Mat4Array;
|
|
446
|
-
get m00(): number;
|
|
447
|
-
set m00(val: number);
|
|
448
|
-
get m01(): number;
|
|
449
|
-
set m01(val: number);
|
|
450
|
-
get m02(): number;
|
|
451
|
-
set m02(val: number);
|
|
452
|
-
get m03(): number;
|
|
453
|
-
set m03(val: number);
|
|
454
|
-
get m10(): number;
|
|
455
|
-
set m10(val: number);
|
|
456
|
-
get m11(): number;
|
|
457
|
-
set m11(val: number);
|
|
458
|
-
get m12(): number;
|
|
459
|
-
set m12(val: number);
|
|
460
|
-
get m13(): number;
|
|
461
|
-
set m13(val: number);
|
|
462
|
-
get m20(): number;
|
|
463
|
-
set m20(val: number);
|
|
464
|
-
get m21(): number;
|
|
465
|
-
set m21(val: number);
|
|
466
|
-
get m22(): number;
|
|
467
|
-
set m22(val: number);
|
|
468
|
-
get m23(): number;
|
|
469
|
-
set m23(val: number);
|
|
470
|
-
get m30(): number;
|
|
471
|
-
set m30(val: number);
|
|
472
|
-
get m31(): number;
|
|
473
|
-
set m31(val: number);
|
|
474
|
-
get m32(): number;
|
|
475
|
-
set m32(val: number);
|
|
476
|
-
get m33(): number;
|
|
477
|
-
set m33(val: number);
|
|
478
|
-
static resolve(a: unknown): Mat4;
|
|
479
|
-
static cast(a: unknown): Mat4 | undefined;
|
|
480
|
-
static is(a: unknown): a is Mat4Like;
|
|
481
|
-
static orthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): Mat4;
|
|
482
|
-
static perspective(fov: number, aspect: number, near: number, far: number): Mat4;
|
|
483
|
-
static pointAt(position: Vec3Like, target: Vec3Like, up: Vec3Like): Mat4;
|
|
484
|
-
constructor(init?: Mat4Array);
|
|
485
|
-
toArray(): Mat4Array;
|
|
486
|
-
toNestetArray(): Mat4NestedArray;
|
|
487
|
-
toJSON(): IMat4;
|
|
488
|
-
toString(): Mat4String;
|
|
489
|
-
clone(): Mat4;
|
|
490
|
-
equals(mat: Mat4Like): boolean;
|
|
491
|
-
add(mat: Mat4Like): Mat4;
|
|
492
|
-
subtract(mat: Mat4Like): Mat4;
|
|
493
|
-
multiply(mat: Mat4Like): Mat4;
|
|
494
|
-
multiply(scalar: number): Mat4;
|
|
495
|
-
multiply(vec: Vec3Like): Vec3;
|
|
496
|
-
translate(x: number, y: number, z: number): this;
|
|
497
|
-
translate(vec: Vec3Like): this;
|
|
498
|
-
rotateX(angle: number): Mat4;
|
|
499
|
-
rotateY(angle: number): Mat4;
|
|
500
|
-
rotateZ(angle: number): Mat4;
|
|
501
|
-
rotate(x: number, y: number, z: number): this;
|
|
502
|
-
rotate(vec: Vec3Like): this;
|
|
503
|
-
scale(x: number, y: number, z: number): this;
|
|
504
|
-
scale(vec: Vec3Like): this;
|
|
505
|
-
inverse(): Mat4;
|
|
506
|
-
toMat3(): Mat3Like;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
interface IMat3 {
|
|
510
|
-
m00: number;
|
|
511
|
-
m01: number;
|
|
512
|
-
m02: number;
|
|
513
|
-
m10: number;
|
|
514
|
-
m11: number;
|
|
515
|
-
m12: number;
|
|
516
|
-
m20: number;
|
|
517
|
-
m21: number;
|
|
518
|
-
m22: number;
|
|
519
|
-
}
|
|
520
|
-
type Mat3Array = [number, number, number, number, number, number, number, number, number];
|
|
521
|
-
type Mat3NestedArray = [[number, number, number], [number, number, number], [number, number, number]];
|
|
522
|
-
type Mat3String = `${number},${number},${number},${number},${number},${number},${number},${number},${number}`;
|
|
523
|
-
type Mat3Like = IMat3 | Mat3Array | Mat3NestedArray | Mat3String | number;
|
|
524
|
-
declare class Mat3 implements IMat3 {
|
|
525
|
-
protected _raw: Mat3Array;
|
|
526
|
-
get m00(): number;
|
|
527
|
-
set m00(val: number);
|
|
528
|
-
get m01(): number;
|
|
529
|
-
set m01(val: number);
|
|
530
|
-
get m02(): number;
|
|
531
|
-
set m02(val: number);
|
|
532
|
-
get m10(): number;
|
|
533
|
-
set m10(val: number);
|
|
534
|
-
get m11(): number;
|
|
535
|
-
set m11(val: number);
|
|
536
|
-
get m12(): number;
|
|
537
|
-
set m12(val: number);
|
|
538
|
-
get m20(): number;
|
|
539
|
-
set m20(val: number);
|
|
540
|
-
get m21(): number;
|
|
541
|
-
set m21(val: number);
|
|
542
|
-
get m22(): number;
|
|
543
|
-
set m22(val: number);
|
|
544
|
-
static resolve(a: unknown): Mat3;
|
|
545
|
-
static cast(a: unknown): Mat3 | undefined;
|
|
546
|
-
static is(a: unknown): a is Mat3Like;
|
|
547
|
-
static projection(width: number, height: number): Mat3;
|
|
548
|
-
constructor(init?: Mat3Array);
|
|
549
|
-
toArray(): Mat3Array;
|
|
550
|
-
toNestetArray(): Mat3NestedArray;
|
|
551
|
-
toJSON(): IMat3;
|
|
552
|
-
toString(): Mat3String;
|
|
553
|
-
clone(): Mat3;
|
|
554
|
-
equals(mat: Mat3Like): boolean;
|
|
555
|
-
add(mat: Mat3Like): Mat3;
|
|
556
|
-
subtract(mat: Mat3Like): Mat3;
|
|
557
|
-
multiply(mat: Mat3Like): Mat3;
|
|
558
|
-
multiply(scalar: number): Mat3;
|
|
559
|
-
translate(x: number, y: number): Mat3;
|
|
560
|
-
translate(vec: Vec2Like): Mat3;
|
|
561
|
-
rotate(angle: number): Mat3;
|
|
562
|
-
scale(x: number, y: number): Mat3;
|
|
563
|
-
scale(vec: Vec2Like): Mat3;
|
|
564
|
-
determinant(): number;
|
|
565
|
-
inverse(): Mat3;
|
|
566
|
-
toMat4(): Mat4Like;
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
interface IRGB {
|
|
570
|
-
red: number;
|
|
571
|
-
green: number;
|
|
572
|
-
blue: number;
|
|
573
|
-
}
|
|
574
|
-
type RGBArray = [number, number, number];
|
|
575
|
-
type RGBString = `rgb(${number},${number},${number})`;
|
|
576
|
-
type RGBLike = IRGB | RGBArray | RGBString;
|
|
577
|
-
interface IRBBA extends IRGB {
|
|
578
|
-
alpha: number;
|
|
579
|
-
}
|
|
580
|
-
type RGBAArray = [number, number, number, number];
|
|
581
|
-
type RGBAString = `rgba(${number},${number},${number},${number})`;
|
|
582
|
-
type RGBALike = IRBBA | RGBAArray | RGBAString;
|
|
583
|
-
type IAnyRGB = IRGB | IRBBA;
|
|
584
|
-
type AnyRGBArray = RGBArray | RGBAArray;
|
|
585
|
-
type AnyRGBString = RGBString | RGBAString;
|
|
586
|
-
type AnyRGBLike = IAnyRGB | AnyRGBArray | AnyRGBString | HexLike | number;
|
|
587
|
-
declare class RGBAColor implements IRBBA {
|
|
588
|
-
private _red;
|
|
589
|
-
get red(): number;
|
|
590
|
-
set red(val: number);
|
|
591
|
-
private _green;
|
|
592
|
-
get green(): number;
|
|
593
|
-
set green(val: number);
|
|
594
|
-
private _blue;
|
|
595
|
-
get blue(): number;
|
|
596
|
-
set blue(val: number);
|
|
597
|
-
private _alpha;
|
|
598
|
-
get alpha(): number;
|
|
599
|
-
set alpha(val: number);
|
|
600
|
-
static resolve(a: unknown): RGBAColor;
|
|
601
|
-
static cast(a: unknown): RGBAColor | undefined;
|
|
602
|
-
static is(a: unknown): a is AnyRGBLike;
|
|
603
|
-
constructor(red: number, green: number, blue: number, alpha?: number);
|
|
604
|
-
toArray(withAlpha?: boolean): AnyRGBArray;
|
|
605
|
-
toJSON(withAlpha?: boolean): IAnyRGB;
|
|
606
|
-
toString(withAlpha?: boolean): AnyRGBString;
|
|
607
|
-
toHSL(withAlpha?: boolean): HSLColor;
|
|
608
|
-
invert(withAlpha?: boolean): RGBAColor;
|
|
609
|
-
}
|
|
610
|
-
interface IHSL {
|
|
611
|
-
hue: number;
|
|
612
|
-
saturation: number;
|
|
613
|
-
luminace: number;
|
|
614
|
-
}
|
|
615
|
-
type HSLArray = [number, number, number];
|
|
616
|
-
type HSLString = `hsl(${number},${number},${number})`;
|
|
617
|
-
type HSLLike = IHSL | HSLArray | HSLString;
|
|
618
|
-
interface IHSLA extends IHSL {
|
|
619
|
-
alpha: number;
|
|
620
|
-
}
|
|
621
|
-
type HSLAArray = [number, number, number, number];
|
|
622
|
-
type HSLAString = `hsla(${number},${number},${number},${number})`;
|
|
623
|
-
type HSLALike = IHSLA | HSLAArray | HSLAString;
|
|
624
|
-
type IAnyHSL = IHSL | IHSLA;
|
|
625
|
-
type AnyHSLArray = HSLArray | HSLAArray;
|
|
626
|
-
type AnyHSLString = HSLString | HSLAString;
|
|
627
|
-
type AnyHSLLike = IAnyHSL | AnyHSLArray | AnyHSLString | HexLike | number;
|
|
628
|
-
declare class HSLColor implements IHSLA {
|
|
629
|
-
private _hue;
|
|
630
|
-
get hue(): number;
|
|
631
|
-
set hue(val: number);
|
|
632
|
-
private _saturation;
|
|
633
|
-
get saturation(): number;
|
|
634
|
-
set saturation(val: number);
|
|
635
|
-
private _luminace;
|
|
636
|
-
get luminace(): number;
|
|
637
|
-
set luminace(val: number);
|
|
638
|
-
private _alpha;
|
|
639
|
-
get alpha(): number;
|
|
640
|
-
set alpha(val: number);
|
|
641
|
-
static resolve(a: unknown): HSLColor;
|
|
642
|
-
static cast(a: unknown): HSLColor | undefined;
|
|
643
|
-
static is(a: unknown): boolean;
|
|
644
|
-
constructor(hue: number, saturation: number, luminace: number, alpha?: number);
|
|
645
|
-
toArray(withAlpha?: boolean): AnyHSLArray;
|
|
646
|
-
toJSON(withAlpha?: boolean): IAnyHSL;
|
|
647
|
-
toString(withAlpha?: boolean): AnyHSLString;
|
|
648
|
-
toRGB(withAlpha?: boolean): RGBAColor;
|
|
649
|
-
invert(withAlpha?: boolean): HSLColor;
|
|
650
|
-
}
|
|
651
|
-
type AnyColor = RGBAColor | HSLColor;
|
|
652
|
-
type AnyColorArray = AnyRGBArray | AnyHSLArray;
|
|
653
|
-
type AnyColorString = AnyRGBString | AnyHSLString;
|
|
654
|
-
type IColor = IAnyRGB | IAnyHSL;
|
|
655
|
-
type AnyColorLike = AnyColorArray | AnyColorString | IColor | HexLike | number;
|
|
656
|
-
declare function resolveColor(a: unknown, preferHSL?: boolean): AnyColor;
|
|
657
|
-
declare function castColor(a: unknown, preferHSL?: boolean): AnyColor | undefined;
|
|
658
|
-
|
|
659
|
-
interface IQuaternion {
|
|
660
|
-
w: number;
|
|
661
|
-
x: number;
|
|
662
|
-
y: number;
|
|
663
|
-
z: number;
|
|
664
|
-
}
|
|
665
|
-
type QuaternionArray = [number, number, number, number];
|
|
666
|
-
type QuaternionString = `${number} + ${number}i + ${number}j + ${number}k`;
|
|
667
|
-
type QuaternionLike = IQuaternion | QuaternionArray | QuaternionString;
|
|
668
|
-
declare class Quaternion {
|
|
669
|
-
w: number;
|
|
670
|
-
x: number;
|
|
671
|
-
y: number;
|
|
672
|
-
z: number;
|
|
673
|
-
static is(a: unknown): a is IQuaternion;
|
|
674
|
-
static resolve(a: unknown): Quaternion;
|
|
675
|
-
static cast(a: unknown): Quaternion | undefined;
|
|
676
|
-
static fromAxisAngle(axis: Vec3Like, angle: number): Quaternion;
|
|
677
|
-
static fromEuler(x: number, y: number, z: number): Quaternion;
|
|
678
|
-
static fromEuler(vec: Vec3Like): Quaternion;
|
|
679
|
-
constructor(w?: number, x?: number, y?: number, z?: number);
|
|
680
|
-
toArray(): QuaternionArray;
|
|
681
|
-
toString(): QuaternionString;
|
|
682
|
-
toJSON(): IQuaternion;
|
|
683
|
-
clone(): Quaternion;
|
|
684
|
-
add(a: QuaternionLike): Quaternion;
|
|
685
|
-
offset(a: QuaternionLike): this;
|
|
686
|
-
subtract(a: QuaternionLike): Quaternion;
|
|
687
|
-
negative(): Quaternion;
|
|
688
|
-
length(sqrt?: boolean): number;
|
|
689
|
-
normalize(): Quaternion;
|
|
690
|
-
multiply(a: QuaternionLike): Quaternion;
|
|
691
|
-
multiplyVector(x: number, y: number, z: number): Vec3;
|
|
692
|
-
multiplyVector(vec: Vec3Like): Vec3;
|
|
693
|
-
scale(scalar: number): Quaternion;
|
|
694
|
-
dot(a: QuaternionLike): number;
|
|
695
|
-
inverse(): Quaternion;
|
|
696
|
-
divide(a: QuaternionLike): Quaternion;
|
|
697
|
-
conjugate(): Quaternion;
|
|
698
|
-
exp(): Quaternion;
|
|
699
|
-
log(): Quaternion;
|
|
700
|
-
toVector(): Vec3;
|
|
701
|
-
toAxisAngle(): Vec3;
|
|
702
|
-
toEuler(): Vec3;
|
|
961
|
+
declare class Transform2D implements IToMat3, IToString {
|
|
962
|
+
parent?: Transform2D | undefined;
|
|
963
|
+
origin: Vec2;
|
|
964
|
+
localPosition: Vec2;
|
|
965
|
+
localRotation: number;
|
|
966
|
+
get localRotationDegree(): number;
|
|
967
|
+
set localRotationDegree(v: number);
|
|
968
|
+
localScale: Vec2;
|
|
969
|
+
get globalPosition(): Vec2;
|
|
970
|
+
get globalRotation(): number;
|
|
971
|
+
get globalRotationDegree(): number;
|
|
972
|
+
get globalScale(): Vec2;
|
|
973
|
+
constructor(position: Vec2Like, rotation: number, scale: Vec2Like, parent?: Transform2D | undefined);
|
|
974
|
+
toString(): string;
|
|
975
|
+
get [Symbol.toStringTag](): string;
|
|
976
|
+
[NodeJSCustomInspect](): string;
|
|
703
977
|
toMat3(): Mat3;
|
|
704
|
-
|
|
978
|
+
toGlobalMat3(): Mat3;
|
|
705
979
|
}
|
|
706
|
-
|
|
707
980
|
/**
|
|
708
981
|
* Represents a 3D transform for 3D graphics
|
|
709
982
|
*/
|
|
710
|
-
declare class
|
|
983
|
+
declare class Transform3D implements IToMat4, IToString {
|
|
984
|
+
parent?: Transform3D | undefined;
|
|
985
|
+
origin: Vec3;
|
|
711
986
|
/**
|
|
712
|
-
* The position
|
|
987
|
+
* The local position
|
|
713
988
|
*/
|
|
714
|
-
|
|
989
|
+
localPosition: Vec3;
|
|
715
990
|
/**
|
|
716
|
-
* The rotation
|
|
991
|
+
* The local rotation
|
|
717
992
|
*/
|
|
718
|
-
|
|
993
|
+
localRotation: Quaternion;
|
|
719
994
|
/**
|
|
720
|
-
* The scale
|
|
995
|
+
* The local scale
|
|
721
996
|
*/
|
|
722
|
-
|
|
997
|
+
localScale: Vec3;
|
|
998
|
+
get globalPosition(): Vec3;
|
|
999
|
+
get globalRotation(): Quaternion;
|
|
1000
|
+
get globalScale(): Vec3;
|
|
723
1001
|
/**
|
|
724
1002
|
* Create a new transform with `position`, `rotation` and `scale`
|
|
725
1003
|
* @param position The position as a Vec3
|
|
726
1004
|
* @param rotation The rotation as a Quaternion
|
|
727
1005
|
* @param scale The scale as a Vec3
|
|
728
1006
|
*/
|
|
729
|
-
constructor(position: Vec3Like, rotation: QuaternionLike, scale: Vec3Like);
|
|
1007
|
+
constructor(position: Vec3Like, rotation: QuaternionLike, scale: Vec3Like, parent?: Transform3D | undefined);
|
|
1008
|
+
toString(): string;
|
|
1009
|
+
get [Symbol.toStringTag](): string;
|
|
1010
|
+
[NodeJSCustomInspect](): string;
|
|
730
1011
|
/**
|
|
731
1012
|
* Convert the transform into a 4x3 matrix
|
|
732
1013
|
* @returns A 4x4 matrix from the transform
|
|
733
1014
|
*/
|
|
734
1015
|
toMat4(): Mat4;
|
|
1016
|
+
toGlobalMat4(): Mat4;
|
|
735
1017
|
}
|
|
736
1018
|
|
|
737
1019
|
/**
|
|
@@ -748,7 +1030,8 @@ declare function clamp<T extends number | bigint>(value: T, min: T, max: T): T;
|
|
|
748
1030
|
* @param b The input value b
|
|
749
1031
|
* @returns The result
|
|
750
1032
|
*/
|
|
751
|
-
declare function
|
|
1033
|
+
declare function logHypot(a: number, b: number): number;
|
|
752
1034
|
declare const EPSILON = 1e-16;
|
|
1035
|
+
declare const lerp: <T extends number | bigint>(a: T, b: T, t: T) => number;
|
|
753
1036
|
|
|
754
|
-
export {
|
|
1037
|
+
export { AnyColor, type AnyColorArguments, type AnyColorArray, type AnyColorLike, type AnyColorString, type AnyHSLArguments, type AnyHSLArray, type AnyHSLLike, type AnyHSLString, type AnyRGBArguments, type AnyRGBArray, type AnyRGBLike, type AnyRGBString, BoundingBox, type BoundingBoxArgs, type BoundingBoxArray, type BoundingBoxLike, type BoundingBoxString, Circle, type CircleArguments, type CircleArray, type CircleLike, type CircleString, DJB2_OFFSET, EPSILON, FNV1_OFFSET, FNV1_PRIME, type FixedArray, HSLA, type HSLAArguments, type HSLAArray, type HSLALike, type HSLAString, type HSLArguments, type HSLArray, type HSLLike, type HSLString, type HexLike, type IAnyColor, type IAnyHSL, type IAnyRGB, type IAnyToColor, type IAnyToHSL, type IAnyToRGB, type IBoundingBox, type ICircle, type IGeometryObject, type IHSL, type IHSLA, type IHash, type IMat3, type IMat4, type IQuaternion, type IRBBA, type IRGB, type IRectangle, type ISize, type IToBoundingBox, type IToCircle, type IToHSL, type IToHSLA, type IToMat3, type IToMat4, type IToQuaternion, type IToRGB, type IToRGBA, type IToRectangle, type IToSize, type IToVec2, type IToVec3, type ITriangle, type IVec2, type IVec3, type JavaScriptFunction, type JavaScriptNumber, type JavaScriptTypeMap, type JavaScriptTypes, LinearFunction, type LinearFunctionString, MAX_ANGLE_DEGREE, MD2, Mat3, type Mat3Arguments, type Mat3Array, type Mat3Like, type Mat3NestedArray, type Mat3String, Mat4, type Mat4Arguments, type Mat4Array, type Mat4Like, type Mat4NestedArray, type Mat4String, MathFunction, NodeJSCustomInspect, type Predicate, QuadFunction, type QuadFunctionString, type QuadFunctionStrings, type QuadFunctionType, Quaternion, type QuaternionArguments, type QuaternionArray, type QuaternionLike, type QuaternionString, RGBA, type RGBAArguments, type RGBAArray, type RGBALike, type RGBAString, type RGBArguments, type RGBArray, type RGBLike, type RGBString, Rectangle, type RectangleArguments, type RectangleArray, type RectangleLike, type RectangleString, ResolveError, type SignCharacter, Size, type SizeArguments, type SizeArray, type SizeLike, type SizeString, Transform2D, Transform3D, Triangle, Triangle2D, Triangle3D, Vec2, type Vec2Arguments, type Vec2Array, type Vec2Like, type Vec2String, Vec3, type Vec3Arguments, type Vec3Array, type Vec3Like, type Vec3String, checkArray, checkHex, checkNumber, checkNumberArray, checkString, checkStringArray, clamp, clampAngleDegree, clampAngleRadian, degreeToRadian, djb2, fnv1, getHexValue, hasProperty, lerp, logHypot, radianToDegree, sdbm, signCharacter };
|