@benev/math 0.3.0-2 → 0.3.0-4

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 (104) hide show
  1. package/package.json +1 -1
  2. package/s/index.ts +1 -2
  3. package/s/tools/noise.ts +5 -15
  4. package/s/tools/randy.ts +4 -4
  5. package/x/index.d.ts +1 -1
  6. package/x/index.js +1 -1
  7. package/x/tools/noise.d.ts +1 -8
  8. package/x/tools/noise.js +5 -16
  9. package/x/tools/noise.js.map +1 -1
  10. package/x/tools/randy.d.ts +2 -2
  11. package/x/tools/randy.js +4 -4
  12. package/x/tools/randy.js.map +1 -1
  13. package/s/tools/make-noise.ts +0 -13
  14. package/x/concepts/angles.d.ts +0 -29
  15. package/x/concepts/angles.js +0 -62
  16. package/x/concepts/angles.js.map +0 -1
  17. package/x/concepts/circular.d.ts +0 -17
  18. package/x/concepts/circular.js +0 -70
  19. package/x/concepts/circular.js.map +0 -1
  20. package/x/concepts/noise.d.ts +0 -9
  21. package/x/concepts/noise.js +0 -20
  22. package/x/concepts/noise.js.map +0 -1
  23. package/x/concepts/quat.d.ts +0 -35
  24. package/x/concepts/quat.js +0 -110
  25. package/x/concepts/quat.js.map +0 -1
  26. package/x/concepts/randy.d.ts +0 -39
  27. package/x/concepts/randy.js +0 -95
  28. package/x/concepts/randy.js.map +0 -1
  29. package/x/concepts/scalar.d.ts +0 -51
  30. package/x/concepts/scalar.js +0 -219
  31. package/x/concepts/scalar.js.map +0 -1
  32. package/x/concepts/spline.d.ts +0 -9
  33. package/x/concepts/spline.js +0 -59
  34. package/x/concepts/spline.js.map +0 -1
  35. package/x/concepts/vec2.d.ts +0 -114
  36. package/x/concepts/vec2.js +0 -314
  37. package/x/concepts/vec2.js.map +0 -1
  38. package/x/concepts/vec3.d.ts +0 -117
  39. package/x/concepts/vec3.js +0 -357
  40. package/x/concepts/vec3.js.map +0 -1
  41. package/x/concepts/vec4.d.ts +0 -21
  42. package/x/concepts/vec4.js +0 -62
  43. package/x/concepts/vec4.js.map +0 -1
  44. package/x/helpers/angles.d.ts +0 -19
  45. package/x/helpers/angles.js +0 -41
  46. package/x/helpers/angles.js.map +0 -1
  47. package/x/helpers/circular.d.ts +0 -17
  48. package/x/helpers/circular.js +0 -71
  49. package/x/helpers/circular.js.map +0 -1
  50. package/x/helpers/noise.d.ts +0 -9
  51. package/x/helpers/noise.js +0 -20
  52. package/x/helpers/noise.js.map +0 -1
  53. package/x/helpers/randy.d.ts +0 -31
  54. package/x/helpers/randy.js +0 -85
  55. package/x/helpers/randy.js.map +0 -1
  56. package/x/helpers/scalar.d.ts +0 -51
  57. package/x/helpers/scalar.js +0 -219
  58. package/x/helpers/scalar.js.map +0 -1
  59. package/x/helpers/spline.d.ts +0 -9
  60. package/x/helpers/spline.js +0 -61
  61. package/x/helpers/spline.js.map +0 -1
  62. package/x/importmap.json +0 -7
  63. package/x/primitives/circular.d.ts +0 -17
  64. package/x/primitives/circular.js +0 -70
  65. package/x/primitives/circular.js.map +0 -1
  66. package/x/primitives/quat.d.ts +0 -35
  67. package/x/primitives/quat.js +0 -110
  68. package/x/primitives/quat.js.map +0 -1
  69. package/x/primitives/scalar.d.ts +0 -51
  70. package/x/primitives/scalar.js +0 -219
  71. package/x/primitives/scalar.js.map +0 -1
  72. package/x/primitives/vec2.d.ts +0 -114
  73. package/x/primitives/vec2.js +0 -319
  74. package/x/primitives/vec2.js.map +0 -1
  75. package/x/primitives/vec3.d.ts +0 -117
  76. package/x/primitives/vec3.js +0 -363
  77. package/x/primitives/vec3.js.map +0 -1
  78. package/x/primitives/vec4.d.ts +0 -21
  79. package/x/primitives/vec4.js +0 -62
  80. package/x/primitives/vec4.js.map +0 -1
  81. package/x/tools/circular.d.ts +0 -17
  82. package/x/tools/circular.js +0 -71
  83. package/x/tools/circular.js.map +0 -1
  84. package/x/tools/scalar.d.ts +0 -51
  85. package/x/tools/scalar.js +0 -219
  86. package/x/tools/scalar.js.map +0 -1
  87. package/x/utils/angles.d.ts +0 -19
  88. package/x/utils/angles.js +0 -41
  89. package/x/utils/angles.js.map +0 -1
  90. package/x/utils/circular.d.ts +0 -17
  91. package/x/utils/circular.js +0 -70
  92. package/x/utils/circular.js.map +0 -1
  93. package/x/utils/noise.d.ts +0 -9
  94. package/x/utils/noise.js +0 -20
  95. package/x/utils/noise.js.map +0 -1
  96. package/x/utils/randy.d.ts +0 -31
  97. package/x/utils/randy.js +0 -85
  98. package/x/utils/randy.js.map +0 -1
  99. package/x/utils/scalar.d.ts +0 -51
  100. package/x/utils/scalar.js +0 -219
  101. package/x/utils/scalar.js.map +0 -1
  102. package/x/utils/spline.d.ts +0 -9
  103. package/x/utils/spline.js +0 -61
  104. 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-4",
4
4
  "description": "game math toolkit",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/s/index.ts CHANGED
@@ -7,9 +7,8 @@ export * from "./core/vec3.js"
7
7
  export * from "./core/vec4.js"
8
8
 
9
9
  export * from "./tools/angles.js"
10
- export * from "./tools/noise.js"
11
10
  export * from "./tools/randy.js"
12
- export * from "./tools/make-noise.js"
11
+ export * from "./tools/noise.js"
13
12
  export * as spline from "./tools/spline.js"
14
13
 
15
14
  export * from "./optimizers/hash-map.js"
package/s/tools/noise.ts CHANGED
@@ -1,22 +1,12 @@
1
1
 
2
- import {Randy, Random} from "./randy.js"
3
2
  import {createNoise2D} from "simplex-noise"
3
+ import {Random} from "./randy.js"
4
4
 
5
- export class Noise {
6
- static seed(seed: number = Randy.randomSeed()) {
7
- const random = Randy.makeRandom(seed)
8
- return new this(random)
9
- }
10
-
11
- #n2d: (x: number, y: number) => number
12
-
13
- constructor(public readonly random: Random) {
14
- this.#n2d = createNoise2D(random)
15
- }
5
+ export function makeNoiseSampler(random: Random) {
6
+ const noise2d = createNoise2D(random)
16
7
 
17
- /** sample the noise field, returning a number from 0 to 1. */
18
- sample(x: number, y = 0, scale = 1) {
19
- const s = this.#n2d(x * scale, y * scale)
8
+ return (x: number, y = 0, scale = 1) => {
9
+ const s = noise2d(x * scale, y * scale)
20
10
  return (s + 1) / 2
21
11
  }
22
12
  }
package/s/tools/randy.ts CHANGED
@@ -5,17 +5,17 @@ export type Random = () => number
5
5
  export class Randy {
6
6
  random: Random
7
7
 
8
- constructor(public readonly seed: number = Randy.randomSeed()) {
9
- this.random = Randy.makeRandom(seed)
8
+ constructor(public readonly seed = Randy.seed()) {
9
+ this.random = Randy.random(seed)
10
10
  }
11
11
 
12
12
  /** obtain a random positive 32 bit integer. */
13
- static randomSeed() {
13
+ static seed() {
14
14
  return Math.floor(Math.random() * 2147483647)
15
15
  }
16
16
 
17
17
  /** seed a pseudo-random number generator function that produces numbers between 0 and 1. */
18
- static makeRandom(seed: number): Random {
18
+ static random(seed = Randy.seed()): Random {
19
19
  seed = (seed ^ 0x6D2B79F5) + 0x1E35A7BD
20
20
  seed = (Math.abs(seed | 0) % 2147483647) || 1
21
21
 
package/x/index.d.ts CHANGED
@@ -5,8 +5,8 @@ export * from "./core/vec2.js";
5
5
  export * from "./core/vec3.js";
6
6
  export * from "./core/vec4.js";
7
7
  export * from "./tools/angles.js";
8
- export * from "./tools/noise.js";
9
8
  export * from "./tools/randy.js";
9
+ export * from "./tools/noise.js";
10
10
  export * as spline from "./tools/spline.js";
11
11
  export * from "./optimizers/hash-map.js";
12
12
  export * from "./optimizers/hash-set.js";
package/x/index.js CHANGED
@@ -5,8 +5,8 @@ export * from "./core/vec2.js";
5
5
  export * from "./core/vec3.js";
6
6
  export * from "./core/vec4.js";
7
7
  export * from "./tools/angles.js";
8
- export * from "./tools/noise.js";
9
8
  export * from "./tools/randy.js";
9
+ export * from "./tools/noise.js";
10
10
  export * as spline from "./tools/spline.js";
11
11
  export * from "./optimizers/hash-map.js";
12
12
  export * from "./optimizers/hash-set.js";
@@ -1,9 +1,2 @@
1
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
- }
2
+ export declare function makeNoiseSampler(random: Random): (x: number, y?: number, scale?: number) => number;
package/x/tools/noise.js CHANGED
@@ -1,20 +1,9 @@
1
- import { Randy } from "./randy.js";
2
1
  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);
2
+ export function makeNoiseSampler(random) {
3
+ const noise2d = createNoise2D(random);
4
+ return (x, y = 0, scale = 1) => {
5
+ const s = noise2d(x * scale, y * scale);
17
6
  return (s + 1) / 2;
18
- }
7
+ };
19
8
  }
20
9
  //# sourceMappingURL=noise.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../s/tools/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
+ {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../s/tools/noise.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAA;AAG3C,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC9C,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"}
@@ -5,9 +5,9 @@ export declare class Randy {
5
5
  random: Random;
6
6
  constructor(seed?: number);
7
7
  /** obtain a random positive 32 bit integer. */
8
- static randomSeed(): number;
8
+ static seed(): number;
9
9
  /** seed a pseudo-random number generator function that produces numbers between 0 and 1. */
10
- static makeRandom(seed: number): Random;
10
+ static random(seed?: number): Random;
11
11
  /** obtain a random positive integer. */
12
12
  integer(): number;
13
13
  /** return true or false, given a 0 to 1 probability fraction. */
package/x/tools/randy.js CHANGED
@@ -2,16 +2,16 @@
2
2
  export class Randy {
3
3
  seed;
4
4
  random;
5
- constructor(seed = Randy.randomSeed()) {
5
+ constructor(seed = Randy.seed()) {
6
6
  this.seed = seed;
7
- this.random = Randy.makeRandom(seed);
7
+ this.random = Randy.random(seed);
8
8
  }
9
9
  /** obtain a random positive 32 bit integer. */
10
- static randomSeed() {
10
+ static seed() {
11
11
  return Math.floor(Math.random() * 2147483647);
12
12
  }
13
13
  /** seed a pseudo-random number generator function that produces numbers between 0 and 1. */
14
- static makeRandom(seed) {
14
+ static random(seed = Randy.seed()) {
15
15
  seed = (seed ^ 0x6D2B79F5) + 0x1E35A7BD;
16
16
  seed = (Math.abs(seed | 0) % 2147483647) || 1;
17
17
  function random() {
@@ -1 +1 @@
1
- {"version":3,"file":"randy.js","sourceRoot":"","sources":["../../s/tools/randy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"randy.js","sourceRoot":"","sources":["../../s/tools/randy.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
-
2
- import {createNoise2D} from "simplex-noise"
3
- import {Random} from "./randy.js"
4
-
5
- export function makeNoise(random: Random) {
6
- const noise2d = createNoise2D(random)
7
-
8
- return (x: number, y = 0, scale = 1) => {
9
- const s = noise2d(x * scale, y * scale)
10
- return (s + 1) / 2
11
- }
12
- }
13
-
@@ -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
- }