@benev/math 0.2.0-0 → 0.2.0-1

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 (90) hide show
  1. package/README.md +110 -23
  2. package/package.json +2 -1
  3. package/s/{primitives → core}/quat.ts +56 -16
  4. package/s/{primitives → core}/vec2.ts +52 -38
  5. package/s/{primitives → core}/vec3.ts +57 -47
  6. package/s/{primitives → core}/vec4.ts +13 -16
  7. package/s/index.ts +11 -12
  8. package/s/optimizers/hash-map.ts +4 -0
  9. package/s/optimizers/hash-set.ts +4 -0
  10. package/s/optimizers/zen.ts +27 -26
  11. package/s/physics/2d/collide2d.ts +2 -2
  12. package/s/physics/2d/intersect2d.ts +9 -6
  13. package/s/shapes/2d/circle.ts +25 -7
  14. package/s/shapes/2d/rect.ts +48 -19
  15. package/s/shapes/3d/box.ts +65 -20
  16. package/s/shapes/3d/segment.ts +12 -10
  17. package/s/{utils → tools}/angles.ts +7 -1
  18. package/s/{primitives → tools}/circular.ts +5 -3
  19. package/s/{primitives → tools}/scalar.ts +11 -11
  20. package/s/{utils → tools}/spline.ts +12 -11
  21. package/x/{primitives → core}/quat.d.ts +10 -5
  22. package/x/{primitives → core}/quat.js +49 -12
  23. package/x/core/quat.js.map +1 -0
  24. package/x/{primitives → core}/vec2.d.ts +16 -17
  25. package/x/{primitives → core}/vec2.js +37 -21
  26. package/x/core/vec2.js.map +1 -0
  27. package/x/{primitives → core}/vec3.d.ts +19 -20
  28. package/x/{primitives → core}/vec3.js +46 -27
  29. package/x/core/vec3.js.map +1 -0
  30. package/x/{primitives → core}/vec4.d.ts +5 -7
  31. package/x/{primitives → core}/vec4.js +12 -12
  32. package/x/core/vec4.js.map +1 -0
  33. package/x/index.d.ts +10 -10
  34. package/x/index.js +10 -10
  35. package/x/index.js.map +1 -1
  36. package/x/optimizers/hash-map.d.ts +1 -0
  37. package/x/optimizers/hash-map.js +3 -0
  38. package/x/optimizers/hash-map.js.map +1 -1
  39. package/x/optimizers/hash-set.d.ts +1 -0
  40. package/x/optimizers/hash-set.js +3 -0
  41. package/x/optimizers/hash-set.js.map +1 -1
  42. package/x/optimizers/zen.d.ts +14 -13
  43. package/x/optimizers/zen.js +29 -28
  44. package/x/optimizers/zen.js.map +1 -1
  45. package/x/physics/2d/collide2d.d.ts +1 -1
  46. package/x/physics/2d/collide2d.js +2 -2
  47. package/x/physics/2d/collide2d.js.map +1 -1
  48. package/x/physics/2d/intersect2d.d.ts +1 -1
  49. package/x/physics/2d/intersect2d.js +7 -5
  50. package/x/physics/2d/intersect2d.js.map +1 -1
  51. package/x/shapes/2d/circle.d.ts +11 -3
  52. package/x/shapes/2d/circle.js +19 -7
  53. package/x/shapes/2d/circle.js.map +1 -1
  54. package/x/shapes/2d/rect.d.ts +20 -10
  55. package/x/shapes/2d/rect.js +47 -24
  56. package/x/shapes/2d/rect.js.map +1 -1
  57. package/x/shapes/3d/box.d.ts +21 -8
  58. package/x/shapes/3d/box.js +56 -17
  59. package/x/shapes/3d/box.js.map +1 -1
  60. package/x/shapes/3d/segment.d.ts +5 -5
  61. package/x/shapes/3d/segment.js +11 -9
  62. package/x/shapes/3d/segment.js.map +1 -1
  63. package/x/{utils → tools}/angles.d.ts +2 -0
  64. package/x/{utils → tools}/angles.js +7 -1
  65. package/x/tools/angles.js.map +1 -0
  66. package/x/{primitives → tools}/circular.js +4 -3
  67. package/x/tools/circular.js.map +1 -0
  68. package/x/{utils → tools}/noise.js.map +1 -1
  69. package/x/{utils → tools}/randy.js.map +1 -1
  70. package/x/{primitives → tools}/scalar.d.ts +4 -4
  71. package/x/{primitives → tools}/scalar.js +11 -11
  72. package/x/tools/scalar.js.map +1 -0
  73. package/x/{utils → tools}/spline.d.ts +3 -3
  74. package/x/{utils → tools}/spline.js +4 -2
  75. package/x/tools/spline.js.map +1 -0
  76. package/x/primitives/circular.js.map +0 -1
  77. package/x/primitives/quat.js.map +0 -1
  78. package/x/primitives/scalar.js.map +0 -1
  79. package/x/primitives/vec2.js.map +0 -1
  80. package/x/primitives/vec3.js.map +0 -1
  81. package/x/primitives/vec4.js.map +0 -1
  82. package/x/utils/angles.js.map +0 -1
  83. package/x/utils/spline.js.map +0 -1
  84. /package/s/{utils → tools}/noise.ts +0 -0
  85. /package/s/{utils → tools}/randy.ts +0 -0
  86. /package/x/{primitives → tools}/circular.d.ts +0 -0
  87. /package/x/{utils → tools}/noise.d.ts +0 -0
  88. /package/x/{utils → tools}/noise.js +0 -0
  89. /package/x/{utils → tools}/randy.d.ts +0 -0
  90. /package/x/{utils → tools}/randy.js +0 -0
@@ -1,5 +1,5 @@
1
- import { Vec2 } from "../../primitives/vec2.js";
2
- import { Scalar } from "../../primitives/scalar.js";
1
+ import { Vec2 } from "../../core/vec2.js";
2
+ import { Scalar } from "../../tools/scalar.js";
3
3
  import { rectVsCircle, rectVsRect } from "./collide2d.js";
4
4
  export class Intersection {
5
5
  contactPoint;
@@ -19,10 +19,12 @@ export function intersectRectVsRect(a, b) {
19
19
  const overlapX = Math.min(a.max.x - b.min.x, b.max.x - a.min.x);
20
20
  const overlapY = Math.min(a.max.y - b.min.y, b.max.y - a.min.y);
21
21
  const depth = Math.min(overlapX, overlapY);
22
- const contactPoint = new Vec2(Scalar.clamp((a.center.x + b.center.x) / 2, b.min.x, b.max.x), Scalar.clamp((a.center.y + b.center.y) / 2, b.min.y, b.max.y));
22
+ const aCenter = a.center();
23
+ const bCenter = b.center();
24
+ const contactPoint = new Vec2(Scalar.clamp((aCenter.x + bCenter.x) / 2, b.min.x, b.max.x), Scalar.clamp((aCenter.y + bCenter.y) / 2, b.min.y, b.max.y));
23
25
  const normalA = depth === overlapX
24
- ? new Vec2(b.center.x > a.center.x ? -1 : 1, 0)
25
- : new Vec2(0, b.center.y > a.center.y ? -1 : 1);
26
+ ? new Vec2(bCenter.x > aCenter.x ? -1 : 1, 0)
27
+ : new Vec2(0, bCenter.y > aCenter.y ? -1 : 1);
26
28
  const normalB = normalA.clone().multiplyBy(-1);
27
29
  return new Intersection(contactPoint, depth, normalA, normalB);
28
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"intersect2d.js","sourceRoot":"","sources":["../../../s/physics/2d/intersect2d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intersect2d.js","sourceRoot":"","sources":["../../../s/physics/2d/intersect2d.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,18 @@
1
1
  import { Rect } from "./rect.js";
2
- import { Vec2 } from "../../primitives/vec2.js";
2
+ import { Vec2, XyArray, Xy } from "../../core/vec2.js";
3
+ export type CircleJson = [center: XyArray, radius: number];
4
+ export type CircleLike = {
5
+ center: Xy;
6
+ radius: number;
7
+ };
3
8
  export declare class Circle {
4
9
  center: Vec2;
5
10
  radius: number;
6
11
  constructor(center: Vec2, radius: number);
7
- offset(delta: Vec2): this;
8
- boundingBox(): Rect;
12
+ static from(data: CircleJson | CircleLike): Circle;
13
+ toJSON(): CircleJson;
9
14
  clone(): Circle;
15
+ set(circle: CircleLike): void;
16
+ translate(delta: Vec2): this;
17
+ boundingBox(): Rect;
10
18
  }
@@ -1,5 +1,5 @@
1
1
  import { Rect } from "./rect.js";
2
- import { Vec2 } from "../../primitives/vec2.js";
2
+ import { Vec2 } from "../../core/vec2.js";
3
3
  export class Circle {
4
4
  center;
5
5
  radius;
@@ -7,16 +7,28 @@ export class Circle {
7
7
  this.center = center;
8
8
  this.radius = radius;
9
9
  }
10
- offset(delta) {
11
- this.center.add(delta);
12
- return this;
10
+ static from(data) {
11
+ return Array.isArray(data)
12
+ ? new this(Vec2.from(data[0]), data[1])
13
+ : new this(Vec2.from(data.center), data.radius);
13
14
  }
14
- boundingBox() {
15
- const extent = Vec2.all(this.radius * 2);
16
- return new Rect(this.center, extent);
15
+ toJSON() {
16
+ return [this.center.clone().toJSON(), this.radius];
17
17
  }
18
18
  clone() {
19
19
  return new Circle(this.center.clone(), this.radius);
20
20
  }
21
+ set(circle) {
22
+ this.center.set(circle.center);
23
+ this.radius = circle.radius;
24
+ }
25
+ translate(delta) {
26
+ this.center.add(delta);
27
+ return this;
28
+ }
29
+ boundingBox() {
30
+ const size = Vec2.all(this.radius * 2);
31
+ return Rect.fromCenter(this.center.clone(), size);
32
+ }
21
33
  }
22
34
  //# sourceMappingURL=circle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"circle.js","sourceRoot":"","sources":["../../../s/shapes/2d/circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,IAAI,EAAC,MAAM,0BAA0B,CAAA;AAE7C,MAAM,OAAO,MAAM;IAEV;IACA;IAFR,YACQ,MAAY,EACZ,MAAc;QADd,WAAM,GAAN,MAAM,CAAM;QACZ,WAAM,GAAN,MAAM,CAAQ;IACnB,CAAC;IAEJ,MAAM,CAAC,KAAW;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,WAAW;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;CACD"}
1
+ {"version":3,"file":"circle.js","sourceRoot":"","sources":["../../../s/shapes/2d/circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,IAAI,EAAc,MAAM,oBAAoB,CAAA;AAKpD,MAAM,OAAO,MAAM;IAEV;IACA;IAFR,YACQ,MAAY,EACZ,MAAc;QADd,WAAM,GAAN,MAAM,CAAM;QACZ,WAAM,GAAN,MAAM,CAAQ;IACnB,CAAC;IAEJ,MAAM,CAAC,IAAI,CAAC,IAA6B;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,MAAM;QACL,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;IAED,GAAG,CAAC,MAAkB;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED,SAAS,CAAC,KAAW;QACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,WAAW;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA;IAClD,CAAC;CACD"}
@@ -1,13 +1,23 @@
1
- import { Vec2 } from "../../primitives/vec2.js";
1
+ import { Vec2, XyArray, Xy } from "../../core/vec2.js";
2
+ export type RectJson = [min: XyArray, max: XyArray];
3
+ export type RectLike = {
4
+ min: Xy;
5
+ max: Xy;
6
+ };
2
7
  export declare class Rect {
3
- center: Vec2;
4
- extent: Vec2;
5
- constructor(center: Vec2, extent: Vec2);
6
- static fromCorner(min: Vec2, extent: Vec2): Rect;
7
- get min(): Vec2;
8
- get max(): Vec2;
9
- offset(delta: Vec2): this;
10
- boundingBox(): this;
11
- contains(point: Vec2): boolean;
8
+ min: Vec2;
9
+ max: Vec2;
10
+ constructor(min: Vec2, max: Vec2);
11
+ static from(data: RectJson | RectLike): Rect;
12
+ static fromCorner(min: Vec2, size: Vec2): Rect;
13
+ static fromCenter(center: Vec2, size: Vec2): Rect;
12
14
  clone(): Rect;
15
+ toJSON(): RectJson;
16
+ set(rect: RectLike): void;
17
+ normalize(): this;
18
+ size(): Vec2;
19
+ center(): Vec2;
20
+ translate(delta: Vec2): this;
21
+ contains(point: Vec2): boolean;
22
+ boundingBox(): Rect;
13
23
  }
@@ -1,36 +1,59 @@
1
+ import { Vec2 } from "../../core/vec2.js";
1
2
  import { pointVsRect } from "../../physics/2d/collide2d.js";
2
3
  export class Rect {
3
- center;
4
- extent;
5
- constructor(center, extent) {
6
- this.center = center;
7
- this.extent = extent;
8
- if (extent.x < 0 || extent.y < 0)
9
- throw new Error(`invalid negative extent, ${extent.toString()}`);
10
- }
11
- static fromCorner(min, extent) {
12
- return new this(min.add(extent.clone().half()), extent);
13
- }
14
- get min() {
15
- return this.center.clone()
16
- .subtract(this.extent.clone().half());
17
- }
18
- get max() {
19
- return this.center.clone()
20
- .add(this.extent.clone().half());
21
- }
22
- offset(delta) {
23
- this.center.add(delta);
4
+ min;
5
+ max;
6
+ constructor(min, max) {
7
+ this.min = min;
8
+ this.max = max;
9
+ }
10
+ static from(data) {
11
+ return Array.isArray(data)
12
+ ? new this(Vec2.from(data[0]), Vec2.from(data[1]))
13
+ : new this(Vec2.from(data.min), Vec2.from(data.max));
14
+ }
15
+ static fromCorner(min, size) {
16
+ const max = min.clone().add(size);
17
+ return new this(min, max);
18
+ }
19
+ static fromCenter(center, size) {
20
+ const halfSize = size.clone().half();
21
+ const min = center.clone().subtract(halfSize);
22
+ const max = center.clone().add(halfSize);
23
+ return new this(min, max);
24
+ }
25
+ clone() {
26
+ return new Rect(this.min.clone(), this.max.clone());
27
+ }
28
+ toJSON() {
29
+ return [this.min.toJSON(), this.max.toJSON()];
30
+ }
31
+ set(rect) {
32
+ this.min.set(rect.min);
33
+ this.max.set(rect.max);
34
+ }
35
+ normalize() {
36
+ const { min, max } = this;
37
+ this.min.set(Vec2.min(min, max));
38
+ this.max.set(Vec2.max(min, max));
24
39
  return this;
25
40
  }
26
- boundingBox() {
41
+ size() {
42
+ return this.max.clone().subtract(this.min);
43
+ }
44
+ center() {
45
+ return this.min.clone().add(this.size().half());
46
+ }
47
+ translate(delta) {
48
+ this.min.add(delta);
49
+ this.max.add(delta);
27
50
  return this;
28
51
  }
29
52
  contains(point) {
30
53
  return pointVsRect(point, this);
31
54
  }
32
- clone() {
33
- return new Rect(this.center.clone(), this.extent.clone());
55
+ boundingBox() {
56
+ return this.clone();
34
57
  }
35
58
  }
36
59
  //# sourceMappingURL=rect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rect.js","sourceRoot":"","sources":["../../../s/shapes/2d/rect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAA;AAEzD,MAAM,OAAO,IAAI;IAEP;IACA;IAFT,YACS,MAAY,EACZ,MAAY;QADZ,WAAM,GAAN,MAAM,CAAM;QACZ,WAAM,GAAN,MAAM,CAAM;QAEpB,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAS,EAAE,MAAY;QACxC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;aACxB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;aACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,KAAW;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,QAAQ,CAAC,KAAW;QACnB,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IAC1D,CAAC;CACD"}
1
+ {"version":3,"file":"rect.js","sourceRoot":"","sources":["../../../s/shapes/2d/rect.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAc,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAA;AAKzD,MAAM,OAAO,IAAI;IAER;IACA;IAFR,YACQ,GAAS,EACT,GAAS;QADT,QAAG,GAAH,GAAG,CAAM;QACT,QAAG,GAAH,GAAG,CAAM;IACd,CAAC;IAEJ,MAAM,CAAC,IAAI,CAAC,IAAyB;QACpC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAS,EAAE,IAAU;QACtC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAY,EAAE,IAAU;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,MAAM;QACL,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,GAAG,CAAC,IAAc;QACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,SAAS;QACR,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAChC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,SAAS,CAAC,KAAW;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,QAAQ,CAAC,KAAW;QACnB,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACD"}
@@ -1,11 +1,24 @@
1
- import { Vec3 } from "../../primitives/vec3.js";
1
+ import { Vec3, XyzArray, Xyz } from "../../core/vec3.js";
2
+ export type BoxJson = [min: XyzArray, max: XyzArray];
3
+ export type BoxLike = {
4
+ min: Xyz;
5
+ max: Xyz;
6
+ };
2
7
  export declare class Box {
3
- center: Vec3;
4
- extent: Vec3;
5
- constructor(center: Vec3, extent: Vec3);
6
- static fromCorner(min: Vec3, extent: Vec3): Box;
7
- get min(): Vec3;
8
- get max(): Vec3;
8
+ min: Vec3;
9
+ max: Vec3;
10
+ constructor(min: Vec3, max: Vec3);
11
+ static from(data: BoxJson | BoxLike): Box;
12
+ static fromCorner(min: Vec3, size: Vec3): Box;
13
+ static fromCenter(center: Vec3, size: Vec3): Box;
14
+ toJSON(): BoxJson;
9
15
  clone(): Box;
10
- grow(increase: number): this;
16
+ set(box: BoxLike): void;
17
+ size(): Vec3;
18
+ center(): Vec3;
19
+ normalize(): this;
20
+ translate_(x: number, y: number, z: number): this;
21
+ translate(delta: Vec3): this;
22
+ grow(increase: Vec3): this;
23
+ growBy(increase: number): this;
11
24
  }
@@ -1,28 +1,67 @@
1
+ import { Vec3 } from "../../core/vec3.js";
1
2
  export class Box {
2
- center;
3
- extent;
4
- constructor(center, extent) {
5
- this.center = center;
6
- this.extent = extent;
7
- if (extent.x < 0 || extent.y < 0 || extent.z < 0)
8
- throw new Error(`invalid negative extent, ${extent.toString()}`);
3
+ min;
4
+ max;
5
+ constructor(min, max) {
6
+ this.min = min;
7
+ this.max = max;
9
8
  }
10
- static fromCorner(min, extent) {
11
- return new this(min.clone().add(extent.clone().half()), extent);
9
+ static from(data) {
10
+ return Array.isArray(data)
11
+ ? new this(Vec3.from(data[0]), Vec3.from(data[1]))
12
+ : new this(Vec3.from(data.min), Vec3.from(data.max));
12
13
  }
13
- get min() {
14
- return this.center.clone()
15
- .subtract(this.extent.clone().half());
14
+ static fromCorner(min, size) {
15
+ return new this(min, min.clone().add(size));
16
16
  }
17
- get max() {
18
- return this.center.clone()
19
- .add(this.extent.clone().half());
17
+ static fromCenter(center, size) {
18
+ const halfSize = size.clone().half();
19
+ const min = center.clone().subtract(halfSize);
20
+ const max = center.clone().add(halfSize);
21
+ return new this(min, max);
22
+ }
23
+ toJSON() {
24
+ return [this.min.toJSON(), this.max.toJSON()];
20
25
  }
21
26
  clone() {
22
- return new Box(this.center.clone(), this.extent.clone());
27
+ return new Box(this.min.clone(), this.max.clone());
28
+ }
29
+ set(box) {
30
+ this.min.set(box.min);
31
+ this.max.set(box.max);
32
+ }
33
+ size() {
34
+ return this.max.clone().subtract(this.min);
35
+ }
36
+ center() {
37
+ return this.min.clone().add(this.size().half());
38
+ }
39
+ normalize() {
40
+ const { min, max } = this;
41
+ this.min.set(Vec3.min(min, max));
42
+ this.max.set(Vec3.max(min, max));
43
+ return this;
44
+ }
45
+ translate_(x, y, z) {
46
+ this.min.add_(x, y, z);
47
+ this.max.add_(x, y, z);
48
+ return this;
49
+ }
50
+ translate(delta) {
51
+ this.min.add(delta);
52
+ this.max.add(delta);
53
+ return this;
23
54
  }
24
55
  grow(increase) {
25
- this.extent.addBy(increase);
56
+ const halfIncrease = increase.clone().half();
57
+ this.min.subtract(halfIncrease);
58
+ this.max.add(halfIncrease);
59
+ return this;
60
+ }
61
+ growBy(increase) {
62
+ const halfIncrease = increase / 2;
63
+ this.min.subtractBy(halfIncrease);
64
+ this.max.addBy(halfIncrease);
26
65
  return this;
27
66
  }
28
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"box.js","sourceRoot":"","sources":["../../../s/shapes/3d/box.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,GAAG;IAEN;IACA;IAFT,YACS,MAAY,EACZ,MAAY;QADZ,WAAM,GAAN,MAAM,CAAM;QACZ,WAAM,GAAN,MAAM,CAAM;QAEpB,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAS,EAAE,MAAY;QACxC,OAAO,IAAI,IAAI,CACd,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EACtC,MAAM,CACN,CAAA;IACF,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;aACxB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;aACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,CAAC,QAAgB;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC3B,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
1
+ {"version":3,"file":"box.js","sourceRoot":"","sources":["../../../s/shapes/3d/box.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { Vec3 } from "../../primitives/vec3.js";
1
+ import { Vec3 } from "../../core/vec3.js";
2
2
  export declare class Segment {
3
3
  start: Vec3;
4
4
  end: Vec3;
5
5
  constructor(start: Vec3, end: Vec3);
6
- get vector(): Vec3;
7
- get length(): number;
8
- get center(): Vec3;
6
+ vector(): Vec3;
7
+ length(): number;
8
+ center(): Vec3;
9
9
  clone(): Segment;
10
10
  fromStart(length: number): Vec3;
11
11
  point(fraction: number): Vec3;
12
- scale(fraction: number): void;
12
+ scale(fraction: number): this;
13
13
  }
@@ -5,31 +5,33 @@ export class Segment {
5
5
  this.start = start;
6
6
  this.end = end;
7
7
  }
8
- get vector() {
8
+ vector() {
9
9
  return this.end.clone().subtract(this.start);
10
10
  }
11
- get length() {
11
+ length() {
12
12
  return this.start.distance(this.end);
13
13
  }
14
- get center() {
14
+ center() {
15
15
  return this.start.clone()
16
16
  .add(this.end)
17
- .divideBy(2);
17
+ .half();
18
18
  }
19
19
  clone() {
20
20
  return new Segment(this.start.clone(), this.end.clone());
21
21
  }
22
22
  fromStart(length) {
23
- const direction = this.vector.normalize();
23
+ const direction = this.vector().normalize();
24
24
  return this.start.clone().add(direction.multiplyBy(length));
25
25
  }
26
26
  point(fraction) {
27
- return this.start.clone().add(this.vector.multiplyBy(fraction));
27
+ return this.start.clone().add(this.vector().multiplyBy(fraction));
28
28
  }
29
29
  scale(fraction) {
30
- const newHalfVector = this.vector.multiplyBy(fraction / 2);
31
- this.start.set(this.center.subtract(newHalfVector));
32
- this.end.set(this.center.add(newHalfVector));
30
+ const { center } = this;
31
+ const newHalfVector = this.vector().multiplyBy(fraction / 2);
32
+ this.start.set(center().subtract(newHalfVector));
33
+ this.end.set(center().add(newHalfVector));
34
+ return this;
33
35
  }
34
36
  }
35
37
  //# sourceMappingURL=segment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../../s/shapes/3d/segment.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,OAAO;IAEX;IACA;IAFR,YACQ,KAAW,EACX,GAAS;QADT,UAAK,GAAL,KAAK,CAAM;QACX,QAAG,GAAH,GAAG,CAAM;IACd,CAAC;IAEJ,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;aACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;aACb,QAAQ,CAAC,CAAC,CAAC,CAAA;IACd,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,OAAO,CACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAClB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAChB,CAAA;IACF,CAAC;IAED,SAAS,CAAC,MAAc;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,QAAgB;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,QAAgB;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;IAC7C,CAAC;CACD"}
1
+ {"version":3,"file":"segment.js","sourceRoot":"","sources":["../../../s/shapes/3d/segment.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,OAAO;IAEX;IACA;IAFR,YACQ,KAAW,EACX,GAAS;QADT,UAAK,GAAL,KAAK,CAAM;QACX,QAAG,GAAH,GAAG,CAAM;IACd,CAAC;IAEJ,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;aACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;aACb,IAAI,EAAE,CAAA;IACT,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,OAAO,CACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAClB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAChB,CAAA;IACF,CAAC;IAED,SAAS,CAAC,MAAc;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAA;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,QAAgB;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,QAAgB;QACrB,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAA;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;QAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;QACzC,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
@@ -8,10 +8,12 @@ export declare const Radians: {
8
8
  };
9
9
  export declare const Turns: {
10
10
  toRadians(t: number): number;
11
+ toDegrees(t: number): number;
11
12
  };
12
13
  export declare const Arcseconds: {
13
14
  toRadians(a: number): number;
14
15
  };
15
16
  export declare const Degrees: {
16
17
  toRadians(d: number): number;
18
+ toTurns(d: number): number;
17
19
  };
@@ -1,4 +1,4 @@
1
- import { Scalar } from "../primitives/scalar.js";
1
+ import { Scalar } from "./scalar.js";
2
2
  const pi = Math.PI;
3
3
  export const Radians = {
4
4
  circle: 2 * pi,
@@ -21,6 +21,9 @@ export const Turns = {
21
21
  toRadians(t) {
22
22
  return t * Radians.circle;
23
23
  },
24
+ toDegrees(t) {
25
+ return Radians.toDegrees(Turns.toRadians(t));
26
+ },
24
27
  };
25
28
  export const Arcseconds = {
26
29
  toRadians(a) {
@@ -31,5 +34,8 @@ export const Degrees = {
31
34
  toRadians(d) {
32
35
  return d * (pi / 180);
33
36
  },
37
+ toTurns(d) {
38
+ return Radians.toTurns(Degrees.toRadians(d));
39
+ },
34
40
  };
35
41
  //# sourceMappingURL=angles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angles.js","sourceRoot":"","sources":["../../s/tools/angles.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAElC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;AAElB,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,MAAM,EAAE,CAAC,GAAG,EAAE;IACd,UAAU,EAAE,EAAE;IAEd,SAAS,CAAC,CAAS;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;IACtB,CAAC;IACD,YAAY,CAAC,CAAS;QACrB,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACnC,CAAC;IACD,OAAO,CAAC,CAAS;QAChB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;IAC1B,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,OAAO,CAAC,MAAM,CAAA;IAC1B,CAAC;IACD,SAAS,CAAC,CAAS;QAClB,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,CAAC;CACD,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,SAAS,CAAC,CAAS;QAClB,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACnC,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;IACD,OAAO,CAAC,CAAS;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,CAAC;CACD,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { Scalar } from "./scalar.js";
2
+ const circle = 2 * Math.PI;
2
3
  export class Circular {
3
4
  x;
4
5
  constructor(x) {
@@ -17,7 +18,7 @@ export class Circular {
17
18
  : x.x;
18
19
  }
19
20
  static normalize(x) {
20
- return Scalar.wrap(x, 0, 2 * Math.PI);
21
+ return Scalar.wrap(x, 0, circle);
21
22
  }
22
23
  normalize() {
23
24
  this.x = Circular.normalize(this.x);
@@ -28,9 +29,9 @@ export class Circular {
28
29
  y = this.normalize(y);
29
30
  let delta = y - x;
30
31
  if (delta > Math.PI)
31
- delta -= 2 * Math.PI;
32
+ delta -= circle;
32
33
  if (delta < -Math.PI)
33
- delta += 2 * Math.PI;
34
+ delta += circle;
34
35
  return delta;
35
36
  }
36
37
  difference(y) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circular.js","sourceRoot":"","sources":["../../s/tools/circular.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAElC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;AAE1B,MAAM,OAAO,QAAQ;IACD;IAAnB,YAAmB,CAAS;QAAT,MAAC,GAAD,CAAC,CAAQ;IAAG,CAAC;IAEhC,KAAK;QACJ,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IAED,GAAG,CAAC,CAAS;QACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,CAAoB;QAChC,OAAO,OAAO,CAAC,KAAK,QAAQ;YAC3B,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,CAAS;QACzB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACjC,CAAC;IAAC,SAAS;QACV,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,CAAS,EAAE,CAAS;QACrC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;YAAE,KAAK,IAAI,MAAM,CAAA;QACpC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;YAAE,KAAK,IAAI,MAAM,CAAA;QACrC,OAAO,KAAK,CAAA;IACb,CAAC;IAAC,UAAU,CAAC,CAAoB;QAChC,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,QAAgB,EAAE,GAAY;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,IAAI,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAA;QACjC,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG;YAC7C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;IACjC,CAAC;IAAC,IAAI,CAAC,CAAoB,EAAE,QAAgB,EAAE,GAAY;QAC1D,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;QAChE,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,IAAI,CAAC,SAAS,CACpB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK;YAC5B,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CACtC,CAAA;IACF,CAAC;IAAC,IAAI,CAAC,CAAoB,EAAE,KAAa;QACzC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACxD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,SAAiB,EAAE,UAAmB;QAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QACrE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IAClC,CAAC;IAAC,QAAQ,CAAC,CAAoB,EAAE,KAAa,EAAE,SAAiB,EAAE,UAAmB;QACrF,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QACnF,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../s/utils/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,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 +1 @@
1
- {"version":3,"file":"randy.js","sourceRoot":"","sources":["../../s/utils/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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"}
@@ -11,10 +11,10 @@ export declare class Scalar {
11
11
  static add(...nums: number[]): number;
12
12
  add(...nums: number[]): this;
13
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;
14
+ static atLeast(x: number, least?: number): number;
15
+ atLeast(least?: number): this;
16
+ static atMost(x: number, most?: number): number;
17
+ atMost(most?: number): this;
18
18
  static clamp(x: number, a?: number, b?: number): number;
19
19
  clamp(a?: number, b?: number): this;
20
20
  static lerp(x: number, y: number, fraction: number, max?: number): number;
@@ -40,7 +40,7 @@ export class Scalar {
40
40
  return x;
41
41
  }
42
42
  add(...nums) {
43
- this.x = Scalar.add(...nums);
43
+ this.x = Scalar.add(this.x, ...nums);
44
44
  return this;
45
45
  }
46
46
  subtract(...nums) {
@@ -48,23 +48,23 @@ export class Scalar {
48
48
  this.x -= n;
49
49
  return this;
50
50
  }
51
- static min(x, minimum = 0) {
52
- return Math.max(x, minimum);
51
+ static atLeast(x, least = 0) {
52
+ return Math.max(x, least);
53
53
  }
54
- min(minimum = 0) {
55
- this.x = Scalar.min(this.x, minimum);
54
+ atLeast(least = 0) {
55
+ this.x = Scalar.atLeast(this.x, least);
56
56
  return this;
57
57
  }
58
- static max(x, maximum = 1) {
59
- return Math.min(x, maximum);
58
+ static atMost(x, most = 1) {
59
+ return Math.min(x, most);
60
60
  }
61
- max(maximum = 1) {
62
- this.x = Scalar.max(this.x, maximum);
61
+ atMost(most = 1) {
62
+ this.x = Scalar.atMost(this.x, most);
63
63
  return this;
64
64
  }
65
65
  static clamp(x, a = 0, b = 1) {
66
- x = Scalar.min(x, Math.min(a, b));
67
- x = Scalar.max(x, Math.max(a, b));
66
+ x = Scalar.atLeast(x, Math.min(a, b));
67
+ x = Scalar.atMost(x, Math.max(a, b));
68
68
  return x;
69
69
  }
70
70
  clamp(a = 0, b = 1) {