@fbltd/math 1.0.23 → 1.0.25

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.
@@ -1,17 +1,52 @@
1
+ import { validateType } from "../type.utils.js";
2
+ import { normalizeShade } from './utils.js';
1
3
  export class Color {
2
- red;
3
- green;
4
- blue;
5
- constructor(red, green, blue) {
6
- this.red = red;
7
- this.green = green;
8
- this.blue = blue;
9
- this.red = Math.max(Math.min(Math.round(red), 255), 0);
10
- this.green = Math.max(Math.min(Math.round(green), 255), 0);
11
- this.blue = Math.max(Math.min(Math.round(blue), 255), 0);
12
- }
13
- toCSS() {
14
- return Color.toCSS(this);
4
+ _red;
5
+ _green;
6
+ _blue;
7
+ _alpha;
8
+ constructor(_red, _green, _blue, _alpha = 255) {
9
+ this._red = _red;
10
+ this._green = _green;
11
+ this._blue = _blue;
12
+ this._alpha = _alpha;
13
+ this.red = _red;
14
+ this.green = _green;
15
+ this.blue = _blue;
16
+ this.alpha = _alpha;
17
+ }
18
+ set red(value) {
19
+ this._red = Math.max(Math.min(Math.round(value), 255), 0);
20
+ }
21
+ set green(value) {
22
+ this._green = Math.max(Math.min(Math.round(value), 255), 0);
23
+ }
24
+ set blue(value) {
25
+ this._blue = Math.max(Math.min(Math.round(value), 255), 0);
26
+ }
27
+ set alpha(value) {
28
+ this._alpha = Math.max(Math.min(Math.round(value), 255), 0);
29
+ }
30
+ get red() {
31
+ return this._red;
32
+ }
33
+ get green() {
34
+ return this._green;
35
+ }
36
+ get blue() {
37
+ return this._blue;
38
+ }
39
+ get alpha() {
40
+ return this._alpha;
41
+ }
42
+ [Symbol.toPrimitive]() {
43
+ return this.toString();
44
+ }
45
+ toString(format = 'hex') {
46
+ return Color.toString(this, format);
47
+ }
48
+ toNumber() {
49
+ return Color.toNumber(this);
15
50
  }
16
51
  isEqual(c) {
17
52
  return Color.areEquals(this, c);
@@ -19,13 +54,23 @@ export class Color {
19
54
  static ofNumber(value) {
20
55
  return new Color((value & 0xFF0000) >> 16, (value & 0xFF00) >> 8, value & 0xFF);
21
56
  }
57
+ static ofNumberAlpha(value) {
58
+ return new Color((value & 0xFF0000) >> 24, (value & 0xFF0000) >> 16, (value & 0xFF00) >> 8, value & 0xFF);
59
+ }
22
60
  static toNumber(color) {
23
61
  return (((color.red << 16) | color.green) << 16) | color.blue;
24
62
  }
25
63
  static areEquals(c1, c2) {
26
64
  return Color.toNumber(c1) === Color.toNumber(c2);
27
65
  }
28
- static toCSS(color) {
29
- return `rgb(${color.red},${color.green},${color.blue})`;
66
+ static toString(color, format = 'hex') {
67
+ switch (format) {
68
+ case "rgba":
69
+ return `rgba(${color.red},${color.green},${color.blue},${normalizeShade(color.alpha)})`;
70
+ case "hex":
71
+ return `#${color.red.toString(16)}${color.green.toString(16)}${color.blue.toString(16)}${color.alpha.toString(16)}`;
72
+ default:
73
+ validateType(format);
74
+ }
30
75
  }
31
76
  }
@@ -60,7 +60,7 @@ export class ConicGradient {
60
60
  toCanvas(ctx, center) {
61
61
  const gradient = ctx.createConicGradient(0, ...center);
62
62
  for (let color of this.colors) {
63
- gradient.addColorStop(color.angle, color.color.toCSS());
63
+ gradient.addColorStop(color.angle, color.color.toString());
64
64
  }
65
65
  return gradient;
66
66
  }
@@ -0,0 +1,7 @@
1
+ import { denormalize, normalize } from "../utils.js";
2
+ export function normalizeShade(value) {
3
+ return normalize(value, 255);
4
+ }
5
+ export function denormalizeShade(value) {
6
+ return denormalize(value, 255);
7
+ }
@@ -67,19 +67,9 @@ export class Matrix2d {
67
67
  return Matrix2d.multiply(m, Matrix2d.skewIdentity(x, y, units));
68
68
  }
69
69
  static isApproximatelyEqual(m1, m2) {
70
- return (approximately(m1[0], m2[0]) &&
71
- approximately(m1[1], m2[1]) &&
72
- approximately(m1[2], m2[2]) &&
73
- approximately(m1[3], m2[3]) &&
74
- approximately(m1[4], m2[4]) &&
75
- approximately(m1[5], m2[5]));
70
+ return m1.every((element, index) => approximately(element, m2[index]));
76
71
  }
77
72
  static isEqual(m1, m2) {
78
- return (m1[0], m2[0] &&
79
- m1[1], m2[1] &&
80
- m1[2], m2[2] &&
81
- m1[3], m2[3] &&
82
- m1[4], m2[4] &&
83
- m1[5], m2[5]);
73
+ return m1.every((element, index) => element === m2[index]);
84
74
  }
85
75
  }
@@ -1,4 +1,5 @@
1
- import { approximately } from "../../index.js";
1
+ import { Angle, AngleUnits, approximately } from "../../index.js";
2
+ import { validateType } from "../type.utils.js";
2
3
  export const identityMatrix3d = [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0];
3
4
  Object.freeze(identityMatrix3d);
4
5
  export class Matrix3d {
@@ -28,32 +29,71 @@ export class Matrix3d {
28
29
  point[0] * matrix[2] + point[1] * matrix[5] + point[2] * matrix[8] + matrix[11],
29
30
  ];
30
31
  }
31
- static isApproximatelyEqual(m1, m2) {
32
- return (approximately(m1[0], m2[0]) &&
33
- approximately(m1[1], m2[1]) &&
34
- approximately(m1[2], m2[2]) &&
35
- approximately(m1[3], m2[3]) &&
36
- approximately(m1[4], m2[4]) &&
37
- approximately(m1[5], m2[5]) &&
38
- approximately(m1[6], m2[6]) &&
39
- approximately(m1[7], m2[7]) &&
40
- approximately(m1[8], m2[8]) &&
41
- approximately(m1[9], m2[9]) &&
42
- approximately(m1[10], m2[10]) &&
43
- approximately(m1[11], m2[11]));
32
+ static translateIdentity(x, y = 0, z = 0) {
33
+ return [
34
+ 1, 0, 0, 0, 1, 0, 0, 0, 1, x, y, z
35
+ ];
36
+ }
37
+ static scaleIdentity(x, y = 1, z = 1) {
38
+ return [
39
+ x, 0, 0, 0, y, 0, 0, 0, z, 0, 0, 0
40
+ ];
41
+ }
42
+ static rotateIdentityX(value, unit = AngleUnits.Deg) {
43
+ value = Angle.toRad(value, unit);
44
+ const cos = Math.cos(value);
45
+ const sin = Math.sin(value);
46
+ return [1, 0, 0, 0, cos, sin, 0, -sin, cos, 0, 0, 0];
47
+ }
48
+ static rotateIdentityY(value, unit = AngleUnits.Deg) {
49
+ value = Angle.toRad(value, unit);
50
+ const cos = Math.cos(value);
51
+ const sin = Math.sin(value);
52
+ return [cos, 0, -sin, 0, 1, 0, sin, 0, cos, 0, 0, 0];
53
+ }
54
+ static rotateIdentityZ(value, unit = AngleUnits.Deg) {
55
+ value = Angle.toRad(value, unit);
56
+ const cos = Math.cos(value);
57
+ const sin = Math.sin(value);
58
+ return [cos, sin, 0, -sin, cos, 0, 0, 0, 1, 0, 0, 0];
59
+ }
60
+ static translate(m, x, y = 0, z = 0) {
61
+ return Matrix3d.multiply(m, Matrix3d.translateIdentity(x, y, z));
62
+ }
63
+ static translateX(m, x) {
64
+ return Matrix3d.translate(m, x);
65
+ }
66
+ static translateY(m, y) {
67
+ return Matrix3d.translate(m, 0, y);
68
+ }
69
+ static translateZ(m, z) {
70
+ return Matrix3d.translate(m, 0, 0, z);
71
+ }
72
+ static scale(m, x, y, z) {
73
+ return Matrix3d.multiply(m, Matrix3d.scaleIdentity(x, y, z));
74
+ }
75
+ static scaleX(m, x) {
76
+ return Matrix3d.scale(m, x);
77
+ }
78
+ static scaleY(m, y) {
79
+ return Matrix3d.scale(m, 1, y);
80
+ }
81
+ static scaleZ(m, z) {
82
+ return Matrix3d.scale(m, 1, 1, z);
83
+ }
84
+ static rotateX(m, angle, units = AngleUnits.Deg) {
85
+ return Matrix3d.multiply(m, Matrix3d.rotateIdentityX(angle, units));
86
+ }
87
+ static rotateY(m, angle, units = AngleUnits.Deg) {
88
+ return Matrix3d.multiply(m, Matrix3d.rotateIdentityY(angle, units));
89
+ }
90
+ static rotateZ(m, angle, units = AngleUnits.Deg) {
91
+ return Matrix3d.multiply(m, Matrix3d.rotateIdentityZ(angle, units));
92
+ }
93
+ static isApproximatelyEqual(m1, m2, withPrecision) {
94
+ return m1.every((element, index) => approximately(element, m2[index], withPrecision));
44
95
  }
45
96
  static isEqual(m1, m2) {
46
- return (m1[0], m2[0] &&
47
- m1[1], m2[1] &&
48
- m1[2], m2[2] &&
49
- m1[3], m2[3] &&
50
- m1[4], m2[4] &&
51
- m1[5], m2[5] &&
52
- m1[6], m2[6] &&
53
- m1[7], m2[7] &&
54
- m1[8], m2[8] &&
55
- m1[9], m2[9] &&
56
- m1[10], m2[10] &&
57
- m1[11], m2[11]);
97
+ return m1.every((element, index) => element === m2[index]);
58
98
  }
59
99
  }
@@ -1 +1,3 @@
1
- export {};
1
+ export function validateType(value) {
2
+ throw new Error('Wrong type passed into');
3
+ }
@@ -14,3 +14,9 @@ export function isCorrectNumber(value) {
14
14
  }
15
15
  return false;
16
16
  }
17
+ export function normalize(value, top, bottom = 0) {
18
+ return (value - bottom) / (top - bottom);
19
+ }
20
+ export function denormalize(value, top, bottom = 0) {
21
+ return (top - bottom) * value + bottom;
22
+ }
@@ -1,13 +1,25 @@
1
1
  export declare class Color {
2
- red: number;
3
- green: number;
4
- blue: number;
5
- constructor(red: number, green: number, blue: number);
6
- toCSS(): string;
2
+ private _red;
3
+ private _green;
4
+ private _blue;
5
+ private _alpha;
6
+ constructor(_red: number, _green: number, _blue: number, _alpha?: number);
7
+ set red(value: number);
8
+ set green(value: number);
9
+ set blue(value: number);
10
+ set alpha(value: number);
11
+ get red(): number;
12
+ get green(): number;
13
+ get blue(): number;
14
+ get alpha(): number;
15
+ [Symbol.toPrimitive](): string;
16
+ toString(format?: Parameters<typeof Color.toString>[1]): string;
17
+ toNumber(): number;
7
18
  isEqual(c: Color): boolean;
8
19
  static ofNumber(value: number): Color;
20
+ static ofNumberAlpha(value: number): Color;
9
21
  static toNumber(color: Color): number;
10
22
  static areEquals(c1: Color, c2: Color): boolean;
11
- static toCSS(color: Color): string;
23
+ static toString(color: Color, format?: 'rgba' | 'hex'): string;
12
24
  }
13
25
  //# sourceMappingURL=color.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/colors/color.ts"],"names":[],"mappings":"AAAA,qBAAa,KAAK;IACK,GAAG,EAAE,MAAM;IAAS,KAAK,EAAE,MAAM;IAAS,IAAI,EAAE,MAAM;gBAAtD,GAAG,EAAE,MAAM,EAAS,KAAK,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM;IAMzE,KAAK;IAIL,OAAO,CAAC,CAAC,EAAE,KAAK;IAIhB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAQ7B,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;IAI5B,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK;IAIrC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK;CAI5B"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/colors/color.ts"],"names":[],"mappings":"AAGA,qBAAa,KAAK;IACF,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAU,OAAO,CAAC,MAAM;gBAA3E,IAAI,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,MAAM,EAAU,MAAM,SAAM;IAOrG,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAEpB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED,IAAI,GAAG,IAhBQ,MAAM,CAkBpB;IAED,IAAI,KAAK,IAhBQ,MAAM,CAkBtB;IAED,IAAI,IAAI,IAhBQ,MAAM,CAkBrB;IAED,IAAI,KAAK,IAhBQ,MAAM,CAkBtB;IAED,CAAC,MAAM,CAAC,WAAW,CAAC;IAIpB,QAAQ,CAAC,MAAM,GAAE,UAAU,CAAC,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAS;IAI7D,QAAQ;IAIR,OAAO,CAAC,CAAC,EAAE,KAAK;IAIhB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAQ7B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM;IASlC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;IAI5B,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK;IAIrC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAE,MAAM,GAAG,KAAa;CAW/D"}
@@ -0,0 +1,3 @@
1
+ export declare function normalizeShade(value: number): number;
2
+ export declare function denormalizeShade(value: number): number;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/colors/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,UAE3C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,UAE7C"}
@@ -19,6 +19,6 @@ export declare class Matrix2d {
19
19
  static skewY(m: IMatrix2d, y: number, units?: AngleUnits): IMatrix2d;
20
20
  static skew(m: IMatrix2d, x: number, y?: number, units?: AngleUnits): IMatrix2d;
21
21
  static isApproximatelyEqual(m1: IMatrix2d, m2: IMatrix2d): boolean;
22
- static isEqual(m1: IMatrix2d, m2: IMatrix2d): number;
22
+ static isEqual(m1: IMatrix2d, m2: IMatrix2d): boolean;
23
23
  }
24
24
  //# sourceMappingURL=matrix2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix2d.d.ts","sourceRoot":"","sources":["../../../../src/matrices/matrix2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAiB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAEpD,eAAO,MAAM,gBAAgB,EAAE,SAA0D,CAAC;AAE1F,wBAAgB,iBAAiB,IAAI,SAAS,CAE7C;AA2BD,qBAAa,QAAQ;IAWjB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE;IAe3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAOxD,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAIzD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAI/D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAOvE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAI7E,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAI7D,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAInE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAQ5E,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAIxE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAIxE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,EAAE,KAAK,aAAiB,GAAG,SAAS;IAI9E,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;IAWxD,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;CAU9C"}
1
+ {"version":3,"file":"matrix2d.d.ts","sourceRoot":"","sources":["../../../../src/matrices/matrix2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAiB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAEpD,eAAO,MAAM,gBAAgB,EAAE,SAA0D,CAAC;AAE1F,wBAAgB,iBAAiB,IAAI,SAAS,CAE7C;AA2BD,qBAAa,QAAQ;IAWjB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE;IAe3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAOxD,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAIzD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAI/D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAOvE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAI7E,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAI7D,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,SAAS;IAInE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAQ5E,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAIxE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,aAAiB,GAAG,SAAS;IAIxE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,EAAE,KAAK,aAAiB,GAAG,SAAS;IAI9E,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;IAIxD,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;CAG9C"}
@@ -1,11 +1,27 @@
1
- import { type IPoint3 } from "../../index.js";
2
- import type { IFixedLengthArray, INonEmptyArray } from "../type.utils.js";
1
+ import { AngleUnits, type IPoint3 } from "../../index.js";
2
+ import { type IFixedLengthArray, type INonEmptyArray } from "../type.utils.js";
3
3
  export type IMatrix3d = IFixedLengthArray<12, number>;
4
4
  export declare const identityMatrix3d: IMatrix3d;
5
5
  export declare class Matrix3d {
6
6
  static multiply(matrix: IMatrix3d, ...rest: INonEmptyArray<IMatrix3d>): [number, number, number, number, number, number, number, number, number, number, number, number];
7
7
  static apply(matrix: IMatrix3d, point: IPoint3): IPoint3;
8
- static isApproximatelyEqual(m1: IMatrix3d, m2: IMatrix3d): boolean;
9
- static isEqual(m1: IMatrix3d, m2: IMatrix3d): number;
8
+ static translateIdentity(x: number, y?: number, z?: number): IMatrix3d;
9
+ static scaleIdentity(x: number, y?: number, z?: number): IMatrix3d;
10
+ static rotateIdentityX(value: number, unit?: AngleUnits): IMatrix3d;
11
+ static rotateIdentityY(value: number, unit?: AngleUnits): IMatrix3d;
12
+ static rotateIdentityZ(value: number, unit?: AngleUnits): IMatrix3d;
13
+ static translate(m: IMatrix3d, x: number, y?: number, z?: number): IMatrix3d;
14
+ static translateX(m: IMatrix3d, x: number): IMatrix3d;
15
+ static translateY(m: IMatrix3d, y: number): IMatrix3d;
16
+ static translateZ(m: IMatrix3d, z: number): IMatrix3d;
17
+ static scale(m: IMatrix3d, x: number, y?: number, z?: number): IMatrix3d;
18
+ static scaleX(m: IMatrix3d, x: number): IMatrix3d;
19
+ static scaleY(m: IMatrix3d, y: number): IMatrix3d;
20
+ static scaleZ(m: IMatrix3d, z: number): IMatrix3d;
21
+ static rotateX(m: IMatrix3d, angle: number, units?: AngleUnits): [number, number, number, number, number, number, number, number, number, number, number, number];
22
+ static rotateY(m: IMatrix3d, angle: number, units?: AngleUnits): [number, number, number, number, number, number, number, number, number, number, number, number];
23
+ static rotateZ(m: IMatrix3d, angle: number, units?: AngleUnits): [number, number, number, number, number, number, number, number, number, number, number, number];
24
+ static isApproximatelyEqual(m1: IMatrix3d, m2: IMatrix3d, withPrecision?: number): boolean;
25
+ static isEqual(m1: IMatrix3d, m2: IMatrix3d): boolean;
10
26
  }
11
27
  //# sourceMappingURL=matrix3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix3d.d.ts","sourceRoot":"","sources":["../../../../src/matrices/matrix3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;AAErD,eAAO,MAAM,gBAAgB,EAAE,SAAgD,CAAC;AAGhF,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC;IAyBrE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAQxD,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;IAiBxD,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;CAgB9C"}
1
+ {"version":3,"file":"matrix3d.d.ts","sourceRoot":"","sources":["../../../../src/matrices/matrix3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAiB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7F,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;AAErD,eAAO,MAAM,gBAAgB,EAAE,SAAgD,CAAC;AAGhF,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC;IAyBrE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAQxD,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,GAAG,SAAS;IAM5D,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,GAAG,SAAS;IAMxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,UAA2B,GAAG,SAAS;IAOnF,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,UAA2B,GAAG,SAAS;IAOnF,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,UAA2B,GAAG,SAAS;IAOnF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,GAAG,SAAS;IAIlE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;IAOxE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIjD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIjD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAIjD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,UAA2B;IAO9E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,UAA2B;IAO9E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,UAA2B;IAQ9E,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM;IAIhF,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;CAG9C"}
@@ -1,5 +1,6 @@
1
1
  export type INonEmptyArray<T = any> = [T, ...T[]];
2
2
  type IFixedLengthArrayUtil<TLength extends number, TItem extends any, TArray extends Array<TItem>> = TArray['length'] extends TLength ? TArray : IFixedLengthArrayUtil<TLength, TItem, [TItem, ...TArray]>;
3
3
  export type IFixedLengthArray<TLength extends number, TItem> = number extends TLength ? never : TLength extends number ? IFixedLengthArrayUtil<TLength, TItem, [TItem]> : never;
4
+ export declare function validateType(value: never): never;
4
5
  export {};
5
6
  //# sourceMappingURL=type.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.utils.d.ts","sourceRoot":"","sources":["../../../src/type.utils.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;AAGjD,KAAK,qBAAqB,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK,SAAS,GAAG,EAAE,MAAM,SAAS,KAAK,CAAC,KAAK,CAAC,IAC7F,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO,GAAG,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAA;AAKzG,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK,IACvD,MAAM,SAAS,OAAO,GAAG,KAAK,GAC9B,OAAO,SAAS,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GACvE,KAAK,CAAA"}
1
+ {"version":3,"file":"type.utils.d.ts","sourceRoot":"","sources":["../../../src/type.utils.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;AAGjD,KAAK,qBAAqB,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK,SAAS,GAAG,EAAE,MAAM,SAAS,KAAK,CAAC,KAAK,CAAC,IAC7F,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO,GAAG,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAA;AAKzG,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK,IACvD,MAAM,SAAS,OAAO,GAAG,KAAK,GAC9B,OAAO,SAAS,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GACvE,KAAK,CAAA;AAET,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAEhD"}
@@ -1,4 +1,6 @@
1
1
  export declare function approximately(theValue: number, is: number, withPrecision?: number): boolean;
2
2
  export declare function toPositive(value: number, range: number): number;
3
3
  export declare function isCorrectNumber(value: any): boolean;
4
+ export declare function normalize(value: number, top: number, bottom?: number): number;
5
+ export declare function denormalize(value: number, top: number, bottom?: number): number;
4
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,GAAE,MAAa,WAEvF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAGtD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,WAOzC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,GAAE,MAAa,WAEvF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAGtD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,WAOzC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,UAE/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,UAEjE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fbltd/math",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "description": "Math and geometry utilities",
5
5
  "sideEffects": false,
6
6
  "main": "dist/bin/index.js",