@benev/math 0.3.0-2 → 0.3.0-3

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 (98) hide show
  1. package/package.json +1 -1
  2. package/x/index.d.ts +1 -0
  3. package/x/index.js +1 -0
  4. package/x/index.js.map +1 -1
  5. package/x/tools/make-noise.d.ts +2 -0
  6. package/x/tools/make-noise.js +9 -0
  7. package/x/tools/make-noise.js.map +1 -0
  8. package/x/concepts/angles.d.ts +0 -29
  9. package/x/concepts/angles.js +0 -62
  10. package/x/concepts/angles.js.map +0 -1
  11. package/x/concepts/circular.d.ts +0 -17
  12. package/x/concepts/circular.js +0 -70
  13. package/x/concepts/circular.js.map +0 -1
  14. package/x/concepts/noise.d.ts +0 -9
  15. package/x/concepts/noise.js +0 -20
  16. package/x/concepts/noise.js.map +0 -1
  17. package/x/concepts/quat.d.ts +0 -35
  18. package/x/concepts/quat.js +0 -110
  19. package/x/concepts/quat.js.map +0 -1
  20. package/x/concepts/randy.d.ts +0 -39
  21. package/x/concepts/randy.js +0 -95
  22. package/x/concepts/randy.js.map +0 -1
  23. package/x/concepts/scalar.d.ts +0 -51
  24. package/x/concepts/scalar.js +0 -219
  25. package/x/concepts/scalar.js.map +0 -1
  26. package/x/concepts/spline.d.ts +0 -9
  27. package/x/concepts/spline.js +0 -59
  28. package/x/concepts/spline.js.map +0 -1
  29. package/x/concepts/vec2.d.ts +0 -114
  30. package/x/concepts/vec2.js +0 -314
  31. package/x/concepts/vec2.js.map +0 -1
  32. package/x/concepts/vec3.d.ts +0 -117
  33. package/x/concepts/vec3.js +0 -357
  34. package/x/concepts/vec3.js.map +0 -1
  35. package/x/concepts/vec4.d.ts +0 -21
  36. package/x/concepts/vec4.js +0 -62
  37. package/x/concepts/vec4.js.map +0 -1
  38. package/x/helpers/angles.d.ts +0 -19
  39. package/x/helpers/angles.js +0 -41
  40. package/x/helpers/angles.js.map +0 -1
  41. package/x/helpers/circular.d.ts +0 -17
  42. package/x/helpers/circular.js +0 -71
  43. package/x/helpers/circular.js.map +0 -1
  44. package/x/helpers/noise.d.ts +0 -9
  45. package/x/helpers/noise.js +0 -20
  46. package/x/helpers/noise.js.map +0 -1
  47. package/x/helpers/randy.d.ts +0 -31
  48. package/x/helpers/randy.js +0 -85
  49. package/x/helpers/randy.js.map +0 -1
  50. package/x/helpers/scalar.d.ts +0 -51
  51. package/x/helpers/scalar.js +0 -219
  52. package/x/helpers/scalar.js.map +0 -1
  53. package/x/helpers/spline.d.ts +0 -9
  54. package/x/helpers/spline.js +0 -61
  55. package/x/helpers/spline.js.map +0 -1
  56. package/x/importmap.json +0 -7
  57. package/x/primitives/circular.d.ts +0 -17
  58. package/x/primitives/circular.js +0 -70
  59. package/x/primitives/circular.js.map +0 -1
  60. package/x/primitives/quat.d.ts +0 -35
  61. package/x/primitives/quat.js +0 -110
  62. package/x/primitives/quat.js.map +0 -1
  63. package/x/primitives/scalar.d.ts +0 -51
  64. package/x/primitives/scalar.js +0 -219
  65. package/x/primitives/scalar.js.map +0 -1
  66. package/x/primitives/vec2.d.ts +0 -114
  67. package/x/primitives/vec2.js +0 -319
  68. package/x/primitives/vec2.js.map +0 -1
  69. package/x/primitives/vec3.d.ts +0 -117
  70. package/x/primitives/vec3.js +0 -363
  71. package/x/primitives/vec3.js.map +0 -1
  72. package/x/primitives/vec4.d.ts +0 -21
  73. package/x/primitives/vec4.js +0 -62
  74. package/x/primitives/vec4.js.map +0 -1
  75. package/x/tools/circular.d.ts +0 -17
  76. package/x/tools/circular.js +0 -71
  77. package/x/tools/circular.js.map +0 -1
  78. package/x/tools/scalar.d.ts +0 -51
  79. package/x/tools/scalar.js +0 -219
  80. package/x/tools/scalar.js.map +0 -1
  81. package/x/utils/angles.d.ts +0 -19
  82. package/x/utils/angles.js +0 -41
  83. package/x/utils/angles.js.map +0 -1
  84. package/x/utils/circular.d.ts +0 -17
  85. package/x/utils/circular.js +0 -70
  86. package/x/utils/circular.js.map +0 -1
  87. package/x/utils/noise.d.ts +0 -9
  88. package/x/utils/noise.js +0 -20
  89. package/x/utils/noise.js.map +0 -1
  90. package/x/utils/randy.d.ts +0 -31
  91. package/x/utils/randy.js +0 -85
  92. package/x/utils/randy.js.map +0 -1
  93. package/x/utils/scalar.d.ts +0 -51
  94. package/x/utils/scalar.js +0 -219
  95. package/x/utils/scalar.js.map +0 -1
  96. package/x/utils/spline.d.ts +0 -9
  97. package/x/utils/spline.js +0 -61
  98. package/x/utils/spline.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benev/math",
3
- "version": "0.3.0-2",
3
+ "version": "0.3.0-3",
4
4
  "description": "game math toolkit",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/x/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from "./core/vec4.js";
7
7
  export * from "./tools/angles.js";
8
8
  export * from "./tools/noise.js";
9
9
  export * from "./tools/randy.js";
10
+ export * from "./tools/make-noise.js";
10
11
  export * as spline from "./tools/spline.js";
11
12
  export * from "./optimizers/hash-map.js";
12
13
  export * from "./optimizers/hash-set.js";
package/x/index.js CHANGED
@@ -7,6 +7,7 @@ export * from "./core/vec4.js";
7
7
  export * from "./tools/angles.js";
8
8
  export * from "./tools/noise.js";
9
9
  export * from "./tools/randy.js";
10
+ export * from "./tools/make-noise.js";
10
11
  export * as spline from "./tools/spline.js";
11
12
  export * from "./optimizers/hash-map.js";
12
13
  export * from "./optimizers/hash-set.js";
package/x/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAE9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,oBAAoB,CAAA;AAElC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAE9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,oBAAoB,CAAA;AAElC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Random } from "./randy.js";
2
+ export declare function makeNoise(random: Random): (x: number, y?: number, scale?: number) => number;
@@ -0,0 +1,9 @@
1
+ import { createNoise2D } from "simplex-noise";
2
+ export function makeNoise(random) {
3
+ const noise2d = createNoise2D(random);
4
+ return (x, y = 0, scale = 1) => {
5
+ const s = noise2d(x * scale, y * scale);
6
+ return (s + 1) / 2;
7
+ };
8
+ }
9
+ //# sourceMappingURL=make-noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-noise.js","sourceRoot":"","sources":["../../s/tools/make-noise.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAA;AAG3C,MAAM,UAAU,SAAS,CAAC,MAAc;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAErC,OAAO,CAAC,CAAS,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;QACvC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAA;AACF,CAAC"}
@@ -1,29 +0,0 @@
1
- export declare const Radians: {
2
- pi: number;
3
- circle: number;
4
- /** @deprecated use Radians.toDegrees instead */
5
- to: {
6
- degrees(r: number): number;
7
- arcseconds(r: number): number;
8
- turns(r: number): number;
9
- };
10
- /** @deprecated use Degrees.toRadians instead */
11
- from: {
12
- turns(t: number): number;
13
- degrees(d: number): number;
14
- arcseconds(a: number): number;
15
- };
16
- toDegrees(r: number): number;
17
- toArcseconds(r: number): number;
18
- toTurns(r: number): number;
19
- circleDistance(radiansA: number, radiansB: number): number;
20
- };
21
- export declare const Turns: {
22
- toRadians(t: number): number;
23
- };
24
- export declare const Arcseconds: {
25
- toRadians(a: number): number;
26
- };
27
- export declare const Degrees: {
28
- toRadians(d: number): number;
29
- };
@@ -1,62 +0,0 @@
1
- import { Scalar } from "./scalar.js";
2
- const pi = Math.PI;
3
- const circle = 2 * Math.PI;
4
- const to = {
5
- degrees(r) {
6
- return r * (180 / pi);
7
- },
8
- arcseconds(r) {
9
- return to.degrees(r) * 3600;
10
- },
11
- turns(r) {
12
- return r / circle;
13
- },
14
- };
15
- const from = {
16
- turns(t) {
17
- return t * circle;
18
- },
19
- degrees(d) {
20
- return d * (pi / 180);
21
- },
22
- arcseconds(a) {
23
- return from.degrees(a / 3600);
24
- }
25
- };
26
- export const Radians = {
27
- pi,
28
- circle,
29
- /** @deprecated use Radians.toDegrees instead */
30
- to,
31
- /** @deprecated use Degrees.toRadians instead */
32
- from,
33
- toDegrees(r) {
34
- return r * (180 / pi);
35
- },
36
- toArcseconds(r) {
37
- return to.degrees(r) * 3600;
38
- },
39
- toTurns(r) {
40
- return r / circle;
41
- },
42
- circleDistance(radiansA, radiansB) {
43
- const diff = Math.abs(Scalar.wrap(radiansA - radiansB, 0, Radians.circle));
44
- return Math.min(diff, Radians.circle - diff);
45
- },
46
- };
47
- export const Turns = {
48
- toRadians(t) {
49
- return t * circle;
50
- },
51
- };
52
- export const Arcseconds = {
53
- toRadians(a) {
54
- return from.degrees(a / 3600);
55
- },
56
- };
57
- export const Degrees = {
58
- toRadians(d) {
59
- return d * (pi / 180);
60
- },
61
- };
62
- //# sourceMappingURL=angles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"angles.js","sourceRoot":"","sources":["../../s/concepts/angles.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAElC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;AAClB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;AAE1B,MAAM,EAAE,GAAG;IACV,OAAO,CAAC,CAAS;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;IACtB,CAAC;IACD,UAAU,CAAC,CAAS;QACnB,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAC5B,CAAC;IACD,KAAK,CAAC,CAAS;QACd,OAAO,CAAC,GAAG,MAAM,CAAA;IAClB,CAAC;CACD,CAAA;AAED,MAAM,IAAI,GAAG;IACZ,KAAK,CAAC,CAAS;QACd,OAAO,CAAC,GAAG,MAAM,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,CAAS;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAA;IACtB,CAAC;IACD,UAAU,CAAC,CAAS;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC9B,CAAC;CACD,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,EAAE;IACF,MAAM;IAEN,gDAAgD;IAChD,EAAE;IAEF,gDAAgD;IAChD,IAAI;IAEJ,SAAS,CAAC,CAAS;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;IACtB,CAAC;IACD,YAAY,CAAC,CAAS;QACrB,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAC5B,CAAC;IACD,OAAO,CAAC,CAAS;QAChB,OAAO,CAAC,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,cAAc,CAAC,QAAgB,EAAE,QAAgB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC7C,CAAC;CACD,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACpB,SAAS,CAAC,CAAS;QAClB,OAAO,CAAC,GAAG,MAAM,CAAA;IAClB,CAAC;CACD,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,SAAS,CAAC,CAAS;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC9B,CAAC;CACD,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,SAAS,CAAC,CAAS;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAA;IACtB,CAAC;CACD,CAAA"}
@@ -1,17 +0,0 @@
1
- export declare class Circular {
2
- x: number;
3
- constructor(x: number);
4
- clone(): Circular;
5
- set(x: number): this;
6
- static value(x: number | Circular): number;
7
- static normalize(x: number): number;
8
- normalize(): this;
9
- static difference(x: number, y: number): number;
10
- difference(y: number | Circular): number;
11
- static lerp(x: number, y: number, fraction: number, max?: number): number;
12
- lerp(y: number | Circular, fraction: number, max?: number): this;
13
- static step(x: number, y: number, delta: number): number;
14
- step(y: number | Circular, delta: number): this;
15
- static approach(x: number, y: number, speed: number, deltaTime: number, speedLimit?: number): number;
16
- approach(y: number | Circular, speed: number, deltaTime: number, speedLimit?: number): this;
17
- }
@@ -1,70 +0,0 @@
1
- import { Scalar } from "./scalar.js";
2
- export class Circular {
3
- x;
4
- constructor(x) {
5
- this.x = x;
6
- }
7
- clone() {
8
- return new Circular(this.x);
9
- }
10
- set(x) {
11
- this.x = x;
12
- return this;
13
- }
14
- static value(x) {
15
- return typeof x === "number"
16
- ? x
17
- : x.x;
18
- }
19
- static normalize(x) {
20
- return Scalar.wrap(x, 0, 2 * Math.PI);
21
- }
22
- normalize() {
23
- this.x = Circular.normalize(this.x);
24
- return this;
25
- }
26
- static difference(x, y) {
27
- x = this.normalize(x);
28
- y = this.normalize(y);
29
- let delta = y - x;
30
- if (delta > Math.PI)
31
- delta -= 2 * Math.PI;
32
- if (delta < -Math.PI)
33
- delta += 2 * Math.PI;
34
- return delta;
35
- }
36
- difference(y) {
37
- return Circular.difference(this.x, Circular.value(y));
38
- }
39
- static lerp(x, y, fraction, max) {
40
- const difference = this.difference(x, y);
41
- let delta = difference * fraction;
42
- if (max !== undefined && Math.abs(delta) > max)
43
- delta = Math.sign(delta) * max;
44
- return this.normalize(x + delta);
45
- }
46
- lerp(y, fraction, max) {
47
- this.x = Circular.lerp(this.x, Circular.value(y), fraction, max);
48
- return this;
49
- }
50
- static step(x, y, delta) {
51
- const difference = this.difference(x, y);
52
- return this.normalize(Math.abs(difference) <= delta
53
- ? y
54
- : x + (Math.sign(difference) * delta));
55
- }
56
- step(y, delta) {
57
- this.x = Circular.step(this.x, Circular.value(y), delta);
58
- return this;
59
- }
60
- static approach(x, y, speed, deltaTime, speedLimit) {
61
- const difference = this.difference(x, y);
62
- const change = Scalar.creep(difference, speed, deltaTime, speedLimit);
63
- return this.normalize(x + change);
64
- }
65
- approach(y, speed, deltaTime, speedLimit) {
66
- this.x = Circular.approach(this.x, Circular.value(y), speed, deltaTime, speedLimit);
67
- return this;
68
- }
69
- }
70
- //# sourceMappingURL=circular.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circular.js","sourceRoot":"","sources":["../../s/concepts/circular.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { Random } from "./randy.js";
2
- export declare class Noise {
3
- #private;
4
- readonly random: Random;
5
- static seed(seed?: number): Noise;
6
- constructor(random: Random);
7
- /** sample the noise field, returning a number from 0 to 1. */
8
- sample(x: number, y?: number, scale?: number): number;
9
- }
@@ -1,20 +0,0 @@
1
- import { Randy } from "./randy.js";
2
- import { createNoise2D } from "simplex-noise";
3
- export class Noise {
4
- random;
5
- static seed(seed = Randy.randomSeed()) {
6
- const random = Randy.makeRandom(seed);
7
- return new this(random);
8
- }
9
- #n2d;
10
- constructor(random) {
11
- this.random = random;
12
- this.#n2d = createNoise2D(random);
13
- }
14
- /** sample the noise field, returning a number from 0 to 1. */
15
- sample(x, y = 0, scale = 1) {
16
- const s = this.#n2d(x * scale, y * scale);
17
- return (s + 1) / 2;
18
- }
19
- }
20
- //# sourceMappingURL=noise.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../s/concepts/noise.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAS,MAAM,YAAY,CAAA;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAA;AAE3C,MAAM,OAAO,KAAK;IAQW;IAP5B,MAAM,CAAC,IAAI,CAAC,OAAe,KAAK,CAAC,UAAU,EAAE;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC;IAED,IAAI,CAAkC;IAEtC,YAA4B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,CAAS,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;QACzC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC;CACD"}
@@ -1,35 +0,0 @@
1
- import { Xyz } from "./vec3.js";
2
- export type QuatArray = [number, number, number, number];
3
- export type Xyzw = {
4
- x: number;
5
- y: number;
6
- z: number;
7
- w: number;
8
- };
9
- export declare class Quat {
10
- x: number;
11
- y: number;
12
- z: number;
13
- w: number;
14
- constructor(x: number, y: number, z: number, w: number);
15
- static new(x: number, y: number, z: number, w: number): Quat;
16
- static identity(): Quat;
17
- static array(q: QuatArray): Quat;
18
- static import({ x, y, z, w }: Xyzw): Quat;
19
- static from(q: QuatArray | Xyzw): Quat;
20
- static rotate_(pitch: number, yaw: number, roll: number): Quat;
21
- static rotate(vec: Xyz): Quat;
22
- array(): QuatArray;
23
- toString(): string;
24
- clone(): Quat;
25
- transform_(x: number, y: number, z: number, w: number, global?: boolean): Quat;
26
- transform({ x, y, z, w }: Xyzw, global?: boolean): Quat;
27
- rotate_(pitch: number, yaw: number, roll: number, global?: boolean): Quat;
28
- rotate({ x: pitch, y: yaw, z: roll }: Xyz, global?: boolean): Quat;
29
- rotateAroundAxis_(angle: number, axisX: number, axisY: number, axisZ: number, global?: boolean): Quat;
30
- rotateAroundAxis(angle: number, axis: Xyz, global?: boolean): Quat;
31
- set_(x: number, y: number, z: number, w: number): this;
32
- set({ x, y, z, w }: Xyzw): this;
33
- multiply_(x2: number, y2: number, z2: number, w2: number): Quat;
34
- multiply(...quats: Quat[]): this;
35
- }
@@ -1,110 +0,0 @@
1
- export class Quat {
2
- x;
3
- y;
4
- z;
5
- w;
6
- constructor(x, y, z, w) {
7
- this.x = x;
8
- this.y = y;
9
- this.z = z;
10
- this.w = w;
11
- }
12
- static new(x, y, z, w) {
13
- return new this(x, y, z, w);
14
- }
15
- static identity() {
16
- return new this(0, 0, 0, 1);
17
- }
18
- static array(q) {
19
- return new this(...q);
20
- }
21
- static import({ x, y, z, w }) {
22
- return new this(x, y, z, w);
23
- }
24
- static from(q) {
25
- return Array.isArray(q)
26
- ? this.array(q)
27
- : this.import(q);
28
- }
29
- static rotate_(pitch, yaw, roll) {
30
- return this.identity().rotate_(pitch, yaw, roll);
31
- }
32
- static rotate(vec) {
33
- return this.identity().rotate(vec);
34
- }
35
- array() {
36
- const { x, y, z, w } = this;
37
- return [x, y, z, w];
38
- }
39
- toString() {
40
- return `(Quat x${this.x.toFixed(2)}, y${this.y.toFixed(2)}, z${this.z.toFixed(2)}, w${this.w.toFixed(2)})`;
41
- }
42
- clone() {
43
- return new Quat(...this.array());
44
- }
45
- transform_(x, y, z, w, global = false) {
46
- if (global) {
47
- const original = this.array();
48
- return this.set_(x, y, z, w).multiply_(...original);
49
- }
50
- else {
51
- return this.multiply_(x, y, z, w);
52
- }
53
- }
54
- transform({ x, y, z, w }, global = false) {
55
- return this.transform_(x, y, z, w, global);
56
- }
57
- rotate_(pitch, yaw, roll, global = false) {
58
- const cx = Math.cos(pitch * 0.5), sx = Math.sin(pitch * 0.5);
59
- const cy = Math.cos(yaw * 0.5), sy = Math.sin(yaw * 0.5);
60
- const cz = Math.cos(roll * 0.5), sz = Math.sin(roll * 0.5);
61
- const x = sx * cy * cz + cx * sy * sz;
62
- const y = cx * sy * cz - sx * cy * sz;
63
- const z = cx * cy * sz + sx * sy * cz;
64
- const w = cx * cy * cz - sx * sy * sz;
65
- return this.transform_(x, y, z, w, global);
66
- }
67
- rotate({ x: pitch, y: yaw, z: roll }, global = false) {
68
- return this.rotate_(pitch, yaw, roll, global);
69
- }
70
- rotateAroundAxis_(angle, axisX, axisY, axisZ, global = false) {
71
- const halfAngle = angle * 0.5;
72
- const sinHalf = Math.sin(halfAngle);
73
- const x = axisX * sinHalf;
74
- const y = axisY * sinHalf;
75
- const z = axisZ * sinHalf;
76
- const w = Math.cos(halfAngle);
77
- return this.transform_(x, y, z, w, global);
78
- }
79
- rotateAroundAxis(angle, axis, global = false) {
80
- return this.rotateAroundAxis_(angle, axis.x, axis.y, axis.z, global);
81
- }
82
- set_(x, y, z, w) {
83
- this.x = x;
84
- this.y = y;
85
- this.z = z;
86
- this.w = w;
87
- return this;
88
- }
89
- set({ x, y, z, w }) {
90
- this.x = x;
91
- this.y = y;
92
- this.z = z;
93
- this.w = w;
94
- return this;
95
- }
96
- multiply_(x2, y2, z2, w2) {
97
- const { x, y, z, w } = this;
98
- this.x = w * x2 + x * w2 + y * z2 - z * y2;
99
- this.y = w * y2 - x * z2 + y * w2 + z * x2;
100
- this.z = w * z2 + x * y2 - y * x2 + z * w2;
101
- this.w = w * w2 - x * x2 - y * y2 - z * z2;
102
- return this;
103
- }
104
- multiply(...quats) {
105
- for (const { x, y, z, w } of quats)
106
- this.multiply_(x, y, z, w);
107
- return this;
108
- }
109
- }
110
- //# sourceMappingURL=quat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quat.js","sourceRoot":"","sources":["../../s/concepts/quat.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- export type Random = () => number;
2
- /** utility for generating and using random numbers. */
3
- export declare class Randy {
4
- readonly seed: number;
5
- random: Random;
6
- constructor(seed?: number);
7
- /** obtain a random positive 32 bit integer. */
8
- static randomSeed(): number;
9
- /** seed a pseudo-random number generator function that produces numbers between 0 and 1. */
10
- static makeRandom(seed: number): Random;
11
- /** obtain a random positive integer. */
12
- integer(): number;
13
- /** return true or false, given a 0 to 1 probability fraction. */
14
- roll(chance?: number): boolean;
15
- /** generate a random number between two numbers. */
16
- range(a: number, b: number): number;
17
- /** generate a random integer between two numbers (inclusive). */
18
- integerRange(a: number, b: number): number;
19
- /** randomly choose an index given an array length. */
20
- index(length: number): number;
21
- /** return a random item from the given array. */
22
- choose<T>(array: T[]): T;
23
- /** remove and return a random item from the given array. */
24
- yoink<T>(array: T[]): T;
25
- /** randomly select a number of array items. */
26
- select<T>(count: number, array: T[]): T[];
27
- /** remove and return a number of items from the given array. */
28
- take<T>(count: number, array: T[]): T[];
29
- /** shuffle an array in-place using (fisher-yates) */
30
- shuffle<T>(array: T[]): T[];
31
- /** @deprecated create an instance with the given seed number. */
32
- static seed(seed: number): Randy;
33
- /** @deprecated renamed to `take` */
34
- extract<T>(count: number, array: T[]): T[];
35
- /** @deprecated renamed to `range` */
36
- between(a: number, b: number): number;
37
- /** @deprecated renamed to `integerRange` */
38
- integerBetween(a: number, b: number): number;
39
- }
@@ -1,95 +0,0 @@
1
- /** utility for generating and using random numbers. */
2
- export class Randy {
3
- seed;
4
- random;
5
- constructor(seed = Randy.randomSeed()) {
6
- this.seed = seed;
7
- this.random = Randy.makeRandom(seed);
8
- }
9
- /** obtain a random positive 32 bit integer. */
10
- static randomSeed() {
11
- return Math.floor(Math.random() * 2147483647);
12
- }
13
- /** seed a pseudo-random number generator function that produces numbers between 0 and 1. */
14
- static makeRandom(seed) {
15
- seed = (seed ^ 0x6D2B79F5) + 0x1E35A7BD;
16
- seed = (Math.abs(seed | 0) % 2147483647) || 1;
17
- function random() {
18
- seed = (Math.imul(48271, seed) | 0) % 2147483647;
19
- return (seed & 2147483647) / 2147483648;
20
- }
21
- random(); // discard first value
22
- return random;
23
- }
24
- /** obtain a random positive integer. */
25
- integer() {
26
- return Math.floor(this.random() * 2147483647);
27
- }
28
- /** return true or false, given a 0 to 1 probability fraction. */
29
- roll(chance = 0.5) {
30
- return this.random() <= chance;
31
- }
32
- /** generate a random number between two numbers. */
33
- range(a, b) {
34
- const difference = b - a;
35
- const value = difference * this.random();
36
- return a + value;
37
- }
38
- /** generate a random integer between two numbers (inclusive). */
39
- integerRange(a, b) {
40
- return Math.round(this.range(a, b));
41
- }
42
- /** randomly choose an index given an array length. */
43
- index(length) {
44
- return Math.floor(this.random() * length);
45
- }
46
- /** return a random item from the given array. */
47
- choose(array) {
48
- return array[this.index(array.length)];
49
- }
50
- /** remove and return a random item from the given array. */
51
- yoink(array) {
52
- const index = this.index(array.length);
53
- const [item] = array.splice(index, 1);
54
- return item;
55
- }
56
- /** randomly select a number of array items. */
57
- select(count, array) {
58
- const copy = [...array];
59
- if (count >= array.length)
60
- return copy;
61
- const selection = [];
62
- for (let i = 0; i < count; i++)
63
- selection.push(this.yoink(copy));
64
- return selection;
65
- }
66
- /** remove and return a number of items from the given array. */
67
- take(count, array) {
68
- const selection = [];
69
- for (let i = 0; i < count; i++) {
70
- if (array.length === 0)
71
- return selection;
72
- selection.push(this.yoink(array));
73
- }
74
- return selection;
75
- }
76
- /** shuffle an array in-place using (fisher-yates) */
77
- shuffle(array) {
78
- for (let i = array.length - 1; i > 0; i--) {
79
- const j = Math.floor(this.random() * (i + 1));
80
- [array[i], array[j]] = [array[j], array[i]];
81
- }
82
- return array;
83
- }
84
- /** @deprecated create an instance with the given seed number. */
85
- static seed(seed) {
86
- return new this(seed);
87
- }
88
- /** @deprecated renamed to `take` */
89
- extract(count, array) { return this.take(count, array); }
90
- /** @deprecated renamed to `range` */
91
- between(a, b) { return this.range(a, b); }
92
- /** @deprecated renamed to `integerRange` */
93
- integerBetween(a, b) { return this.integerRange(a, b); }
94
- }
95
- //# sourceMappingURL=randy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"randy.js","sourceRoot":"","sources":["../../s/concepts/randy.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- export declare class Scalar {
2
- x: number;
3
- constructor(x: number);
4
- static new(x: number): Scalar;
5
- clone(): Scalar;
6
- set(x: number): this;
7
- static isBetween(x: number, a?: number, b?: number): boolean;
8
- isBetween(a?: number, b?: number): boolean;
9
- static isNear(x: number, y: number, epsilon?: number): boolean;
10
- isNear(y: number, epsilon?: number): boolean;
11
- static add(...nums: number[]): number;
12
- add(...nums: number[]): this;
13
- subtract(...nums: number[]): this;
14
- static min(x: number, minimum?: number): number;
15
- min(minimum?: number): this;
16
- static max(x: number, maximum?: number): number;
17
- max(maximum?: number): this;
18
- static clamp(x: number, a?: number, b?: number): number;
19
- clamp(a?: number, b?: number): this;
20
- static lerp(x: number, y: number, fraction: number, max?: number): number;
21
- lerp(y: number, fraction: number, max?: number): this;
22
- static step(x: number, y: number, delta: number): number;
23
- step(y: number, delta: number): this;
24
- static creep(difference: number, speed: number, deltaTime: number, speedLimit?: number): number;
25
- static approach(x: number, y: number, speed: number, deltaTime: number, speedLimit?: number): number;
26
- approach(y: number, speed: number, deltaTime: number, speedLimit?: number): this;
27
- static wrap(x: number, a?: number, b?: number): number;
28
- wrap(a?: number, b?: number): this;
29
- static constrainProximity(x: number, y: number, range: number): number;
30
- constrainProximity(y: number, range: number): this;
31
- static inverse(x: number): number;
32
- inverse(): this;
33
- static center(x: number): number;
34
- center(): this;
35
- static uncenter(x: number): number;
36
- uncenter(): this;
37
- static map(x: number, a: number, b: number): number;
38
- map(a: number, b: number): this;
39
- static remap(x: number, a1: number, a2: number, b1?: number, b2?: number, clamp?: boolean): number;
40
- remap(a1: number, a2: number, b1?: number, b2?: number, clamp?: boolean): this;
41
- static magnify(x: number): number;
42
- magnify(): this;
43
- static floor(x: number): number;
44
- floor(): this;
45
- static ceil(x: number): number;
46
- ceil(): this;
47
- static round(x: number): number;
48
- round(): this;
49
- static smooth(x: number, y: number, smoothing: number): number;
50
- smooth(y: number, smoothing: number): this;
51
- }