@fbltd/math 1.0.3 → 1.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.
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./src"), exports);
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Angle = exports.AngleUnits = void 0;
5
+ var utils_1 = require("./utils");
6
+ var AngleUnits;
7
+ (function (AngleUnits) {
8
+ AngleUnits[AngleUnits["Deg"] = 0] = "Deg";
9
+ AngleUnits[AngleUnits["Rad"] = 1] = "Rad";
10
+ AngleUnits[AngleUnits["Turn"] = 2] = "Turn";
11
+ })(AngleUnits || (exports.AngleUnits = AngleUnits = {}));
12
+ var Angle = (function () {
13
+ function Angle() {
14
+ }
15
+ Angle.toRad = function (angle, unit) {
16
+ if (unit === void 0) { unit = AngleUnits.Deg; }
17
+ switch (unit) {
18
+ case AngleUnits.Rad:
19
+ return angle;
20
+ case AngleUnits.Deg:
21
+ return angle * Math.PI / 180;
22
+ case AngleUnits.Turn:
23
+ return Math.PI * 2 * angle;
24
+ }
25
+ };
26
+ Angle.toTurn = function (angle, unit) {
27
+ if (unit === void 0) { unit = AngleUnits.Deg; }
28
+ switch (unit) {
29
+ case AngleUnits.Turn:
30
+ return angle;
31
+ case AngleUnits.Deg:
32
+ return angle / 360;
33
+ case AngleUnits.Rad:
34
+ return angle / (Math.PI * 2);
35
+ }
36
+ };
37
+ Angle.toDeg = function (angle, unit) {
38
+ if (unit === void 0) { unit = AngleUnits.Rad; }
39
+ switch (unit) {
40
+ case AngleUnits.Deg:
41
+ return angle;
42
+ case AngleUnits.Turn:
43
+ return angle * 360;
44
+ case AngleUnits.Rad:
45
+ return angle * 180 / Math.PI;
46
+ }
47
+ };
48
+ Angle.toPositive = function (angle, unit) {
49
+ switch (unit) {
50
+ case AngleUnits.Deg:
51
+ return (0, utils_1.toPositive)(angle, 360);
52
+ case AngleUnits.Turn:
53
+ return (0, utils_1.toPositive)(angle, 1);
54
+ case AngleUnits.Rad:
55
+ return (0, utils_1.toPositive)(angle, Math.PI * 2);
56
+ }
57
+ };
58
+ Angle.normalize = function (angle, unit) {
59
+ switch (unit) {
60
+ case AngleUnits.Deg:
61
+ return Angle.toPositive(angle, unit) % 360;
62
+ case AngleUnits.Rad:
63
+ return Angle.toPositive(angle, unit) % (Math.PI * 2);
64
+ case AngleUnits.Turn:
65
+ return Angle.toPositive(angle, unit) % 1;
66
+ }
67
+ };
68
+ Angle.toCSS = function (angle, unit) {
69
+ if (!(0, utils_1.isCorrectNumber)(angle))
70
+ return '';
71
+ return "rotate(".concat(angle).concat(Angle.angleUnitCorrespondence[unit], ")");
72
+ };
73
+ Angle.angleUnitCorrespondence = (_a = {},
74
+ _a[AngleUnits.Rad] = 'rad',
75
+ _a[AngleUnits.Turn] = 'turn',
76
+ _a[AngleUnits.Deg] = 'deg',
77
+ _a);
78
+ return Angle;
79
+ }());
80
+ exports.Angle = Angle;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Color = void 0;
4
+ var Color = (function () {
5
+ function Color(red, green, blue) {
6
+ this.red = red;
7
+ this.green = green;
8
+ this.blue = blue;
9
+ this.red = Math.max(Math.min(red, 255), 0);
10
+ this.green = Math.max(Math.min(green, 255), 0);
11
+ this.blue = Math.max(Math.min(blue, 255), 0);
12
+ }
13
+ Color.prototype.toCSS = function () {
14
+ return "rgb(".concat(this.red, ", ").concat(this.green, ", ").concat(this.blue, ")");
15
+ };
16
+ return Color;
17
+ }());
18
+ exports.Color = Color;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ConicGradient = void 0;
13
+ var color_1 = require("./color");
14
+ var ConicGradient = (function () {
15
+ function ConicGradient() {
16
+ var colors = [];
17
+ for (var _i = 0; _i < arguments.length; _i++) {
18
+ colors[_i] = arguments[_i];
19
+ }
20
+ this.colors = __spreadArray([], colors, true).sort(function (a, b) { return a.angle - b.angle; });
21
+ this.colors.push({
22
+ angle: 1,
23
+ color: this.colors[0].color
24
+ });
25
+ }
26
+ ConicGradient.prototype.getColorAtAngle = function (angle) {
27
+ var prev = undefined;
28
+ var next = undefined;
29
+ for (var _i = 0, _a = this.colors; _i < _a.length; _i++) {
30
+ var color = _a[_i];
31
+ if (color.angle === angle)
32
+ return color.color;
33
+ if (color.angle < angle)
34
+ prev = color;
35
+ if (color.angle > angle) {
36
+ next = color;
37
+ break;
38
+ }
39
+ }
40
+ if (!prev || !next)
41
+ return undefined;
42
+ var coef = (angle - prev.angle) / (next.angle - prev.angle);
43
+ return new color_1.Color(Math.floor((next.color.red - prev.color.red) * coef + prev.color.red), Math.floor((next.color.green - prev.color.green) * coef + prev.color.green), Math.floor((next.color.blue - prev.color.blue) * coef + prev.color.blue));
44
+ };
45
+ ConicGradient.prototype.getAngleByColor = function (color) {
46
+ var prev;
47
+ var next = this.colors[0];
48
+ if (color.red === next.color.red && color.green === next.color.green && color.blue === next.color.blue)
49
+ return next.angle;
50
+ for (var i = 1; i < this.colors.length; i++) {
51
+ next = this.colors[i];
52
+ prev = this.colors[i - 1];
53
+ if (color.red === next.color.red && color.green === next.color.green && color.blue === next.color.blue)
54
+ return next.angle;
55
+ var redDif = next.color.red - prev.color.red;
56
+ var greenDif = next.color.green - prev.color.green;
57
+ var blueDif = next.color.blue - prev.color.blue;
58
+ var redDifColor = color.red - prev.color.red;
59
+ var greenDifColor = color.green - prev.color.green;
60
+ var blueDifColor = color.blue - prev.color.blue;
61
+ if (((redDifColor >= 0 && redDifColor <= redDif) || (redDifColor <= 0 && redDifColor >= redDif)) &&
62
+ ((greenDifColor >= 0 && greenDifColor <= greenDif) || (greenDifColor <= 0 && greenDifColor >= greenDif)) &&
63
+ ((blueDifColor >= 0 && blueDifColor <= blueDif) || (blueDifColor <= 0 && blueDifColor >= blueDif))) {
64
+ var redCoef = ((color.red - prev.color.red) / (next.color.red - prev.color.red));
65
+ var greenCoef = ((color.green - prev.color.green) / (next.color.green - prev.color.green));
66
+ var blueCoef = ((color.blue - prev.color.blue) / (next.color.blue - prev.color.blue));
67
+ var coefs = [redCoef, greenCoef, blueCoef].filter(Boolean);
68
+ return (next.angle - prev.angle) * Math.min.apply(Math, coefs) + prev.angle;
69
+ }
70
+ }
71
+ return undefined;
72
+ };
73
+ ConicGradient.prototype.isColorInRange = function (color) {
74
+ return Boolean(this.getAngleByColor(color));
75
+ };
76
+ ConicGradient.prototype.toCanvas = function (ctx, center) {
77
+ var gradient = ctx.createConicGradient.apply(ctx, __spreadArray([0], center, false));
78
+ for (var _i = 0, _a = this.colors; _i < _a.length; _i++) {
79
+ var color = _a[_i];
80
+ gradient.addColorStop(color.angle, color.color.toCSS());
81
+ }
82
+ return gradient;
83
+ };
84
+ ConicGradient.prototype.toCSS = function () {
85
+ var s = '';
86
+ for (var _i = 0, _a = this.colors; _i < _a.length; _i++) {
87
+ var color = _a[_i];
88
+ if (s)
89
+ s += ',';
90
+ s += "rgb(".concat(color.color.red, ",").concat(color.color.green, ",").concat(color.color.blue, ")");
91
+ }
92
+ s = "conic-gradient(in srgb from 0.25turn at 50% 50%, ".concat(s, ")");
93
+ return s;
94
+ };
95
+ return ConicGradient;
96
+ }());
97
+ exports.ConicGradient = ConicGradient;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./color"), exports);
18
+ __exportStar(require("./conic.gradient"), exports);
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Circle = void 0;
4
+ var matrix_1 = require("../matrix");
5
+ var Circle = (function () {
6
+ function Circle(center, r) {
7
+ this.center = center;
8
+ this.r = r;
9
+ }
10
+ Circle.prototype.transform = function (matrix) {
11
+ this.center = matrix_1.Matrix2d.apply(matrix, this.center);
12
+ };
13
+ return Circle;
14
+ }());
15
+ exports.Circle = Circle;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./point"), exports);
18
+ __exportStar(require("./circle"), exports);
19
+ __exportStar(require("./straight-line"), exports);
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Point2 = void 0;
4
+ var Point2 = (function () {
5
+ function Point2() {
6
+ }
7
+ Point2.sum = function (p1, p2) {
8
+ return [
9
+ p1[0] + p2[0],
10
+ p1[1] + p2[1],
11
+ ];
12
+ };
13
+ Point2.scale = function (v, factor) {
14
+ return [
15
+ v[0] * factor,
16
+ v[1] * factor,
17
+ ];
18
+ };
19
+ return Point2;
20
+ }());
21
+ exports.Point2 = Point2;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StraightLine = void 0;
4
+ var matrix_1 = require("../matrix");
5
+ var StraightLine = (function () {
6
+ function StraightLine(p1, p2) {
7
+ this.p1 = p1;
8
+ this.p2 = p2;
9
+ }
10
+ StraightLine.prototype.transform = function (matrix, transformThis) {
11
+ if (transformThis === void 0) { transformThis = false; }
12
+ if (transformThis) {
13
+ return this;
14
+ }
15
+ return new StraightLine(matrix_1.Matrix2d.apply(matrix, this.p1), matrix_1.Matrix2d.apply(matrix, this.p2));
16
+ };
17
+ return StraightLine;
18
+ }());
19
+ exports.StraightLine = StraightLine;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./angle"), exports);
18
+ __exportStar(require("./matrix"), exports);
19
+ __exportStar(require("./operator"), exports);
20
+ __exportStar(require("./utils"), exports);
21
+ __exportStar(require("./colors"), exports);
22
+ __exportStar(require("./figures"), exports);
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Matrix2d = exports.identityMatrix = void 0;
4
+ exports.identityMatrix = [1, 0, 0, 1, 0, 0];
5
+ var Matrix2d = (function () {
6
+ function Matrix2d() {
7
+ }
8
+ Matrix2d.multiply = function (matrix) {
9
+ var matrices = [];
10
+ for (var _i = 1; _i < arguments.length; _i++) {
11
+ matrices[_i - 1] = arguments[_i];
12
+ }
13
+ for (var _a = 0, matrices_1 = matrices; _a < matrices_1.length; _a++) {
14
+ var m = matrices_1[_a];
15
+ matrix = [
16
+ matrix[0] * m[0] + matrix[2] * m[1],
17
+ matrix[1] * m[0] + matrix[3] * m[1],
18
+ matrix[0] * m[2] + matrix[2] * m[3],
19
+ matrix[1] * m[2] + matrix[3] * m[3],
20
+ matrix[0] * m[4] + matrix[2] * m[5] + matrix[4],
21
+ matrix[1] * m[4] + matrix[3] * m[5] + matrix[5],
22
+ ];
23
+ }
24
+ return matrix;
25
+ };
26
+ Matrix2d.apply = function (matrix, point) {
27
+ return [
28
+ matrix[0] * point[0] + matrix[2] * point[1] + matrix[4],
29
+ matrix[1] * point[0] + matrix[3] * point[1] + matrix[5],
30
+ ];
31
+ };
32
+ return Matrix2d;
33
+ }());
34
+ exports.Matrix2d = Matrix2d;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Operator = void 0;
4
+ var angle_1 = require("./angle");
5
+ var Operator = (function () {
6
+ function Operator() {
7
+ }
8
+ Operator.rotateIdentity = function (angle, unit) {
9
+ if (unit === void 0) { unit = angle_1.AngleUnits.Deg; }
10
+ angle = angle_1.Angle.toRad(angle, unit);
11
+ this.temp1 = Math.cos(angle);
12
+ this.temp2 = Math.sin(angle);
13
+ return [
14
+ this.temp1,
15
+ this.temp2,
16
+ -this.temp2,
17
+ this.temp1,
18
+ 0, 0
19
+ ];
20
+ };
21
+ return Operator;
22
+ }());
23
+ exports.Operator = Operator;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.approximately = approximately;
4
+ exports.toPositive = toPositive;
5
+ exports.isCorrectNumber = isCorrectNumber;
6
+ function approximately(theValue, is, withPrecision) {
7
+ if (withPrecision === void 0) { withPrecision = 1e-8; }
8
+ return Math.abs(theValue - is) <= withPrecision;
9
+ }
10
+ function toPositive(value, range) {
11
+ if (value >= 0)
12
+ return Math.abs(value);
13
+ return Math.abs((range + value % range) % range);
14
+ }
15
+ function isCorrectNumber(value) {
16
+ var v = +value;
17
+ if (!isNaN(value) && isFinite(value)) {
18
+ v = parseFloat(value);
19
+ return !isNaN(v) && isFinite(v);
20
+ }
21
+ return false;
22
+ }
@@ -0,0 +1 @@
1
+ export * from './src';
@@ -0,0 +1,14 @@
1
+ export declare enum AngleUnits {
2
+ Deg = 0,
3
+ Rad = 1,
4
+ Turn = 2
5
+ }
6
+ export declare class Angle {
7
+ static toRad(angle: number, unit?: AngleUnits): number;
8
+ static toTurn(angle: number, unit?: AngleUnits): number;
9
+ static toDeg(angle: number, unit?: AngleUnits): number;
10
+ static toPositive(angle: number, unit: AngleUnits): number;
11
+ static normalize(angle: number, unit: AngleUnits): number;
12
+ static toCSS(angle: number, unit: AngleUnits): string;
13
+ static angleUnitCorrespondence: Record<AngleUnits, string>;
14
+ }
@@ -0,0 +1,7 @@
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;
7
+ }
@@ -0,0 +1,17 @@
1
+ import { Color } from "./color";
2
+ import { IPoint2 } from "../figures";
3
+ export declare class ConicGradient {
4
+ colors: {
5
+ angle: number;
6
+ color: Color;
7
+ }[];
8
+ constructor(...colors: {
9
+ angle: number;
10
+ color: Color;
11
+ }[]);
12
+ getColorAtAngle(angle: number): Color;
13
+ getAngleByColor(color: Color): number;
14
+ isColorInRange(color: Color): boolean;
15
+ toCanvas(ctx: CanvasRenderingContext2D, center: IPoint2): CanvasGradient;
16
+ toCSS(): string;
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from './color';
2
+ export * from './conic.gradient';
@@ -0,0 +1,8 @@
1
+ import { IPoint2 } from "./point";
2
+ import { IMatrix2d } from "../matrix";
3
+ export declare class Circle {
4
+ center: IPoint2;
5
+ r: number;
6
+ constructor(center: IPoint2, r: number);
7
+ transform(matrix: IMatrix2d): void;
8
+ }
@@ -0,0 +1,3 @@
1
+ export * from './point';
2
+ export * from './circle';
3
+ export * from './straight-line';
@@ -0,0 +1,5 @@
1
+ export type IPoint2 = [number, number];
2
+ export declare class Point2 {
3
+ static sum(p1: IPoint2, p2: IPoint2): IPoint2;
4
+ static scale(v: IPoint2, factor: number): IPoint2;
5
+ }
@@ -0,0 +1,8 @@
1
+ import { IPoint2 } from "./point";
2
+ import { IMatrix2d } from "../matrix";
3
+ export declare class StraightLine {
4
+ p1: IPoint2;
5
+ p2: IPoint2;
6
+ constructor(p1: IPoint2, p2: IPoint2);
7
+ transform(matrix: IMatrix2d, transformThis?: boolean): StraightLine;
8
+ }
@@ -0,0 +1,6 @@
1
+ export * from './angle';
2
+ export * from './matrix';
3
+ export * from './operator';
4
+ export * from './utils';
5
+ export * from './colors';
6
+ export * from './figures';
@@ -0,0 +1,14 @@
1
+ import { IPoint2 } from "./figures";
2
+ export type IMatrix2d = [
3
+ number,
4
+ number,
5
+ number,
6
+ number,
7
+ number,
8
+ number
9
+ ];
10
+ export declare const identityMatrix: IMatrix2d;
11
+ export declare class Matrix2d {
12
+ static multiply(matrix: IMatrix2d, ...matrices: IMatrix2d[]): IMatrix2d;
13
+ static apply(matrix: IMatrix2d, point: IPoint2): IPoint2;
14
+ }
@@ -0,0 +1,7 @@
1
+ import { IMatrix2d } from "./matrix";
2
+ import { AngleUnits } from "./angle";
3
+ export declare class Operator {
4
+ private static temp1;
5
+ private static temp2;
6
+ static rotateIdentity(angle: number, unit?: AngleUnits): IMatrix2d;
7
+ }
@@ -0,0 +1,3 @@
1
+ export declare function approximately(theValue: number, is: number, withPrecision?: number): boolean;
2
+ export declare function toPositive(value: number, range: number): number;
3
+ export declare function isCorrectNumber(value: any): boolean;
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@fbltd/math",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "",
5
- "main": "dist/math.ts",
5
+ "main": "dist/bin/index.js",
6
+ "types": "dist/types/index.d.ts",
6
7
  "files": [
7
8
  "dist",
8
9
  "README.ms"
package/dist/math.d.ts DELETED
@@ -1,121 +0,0 @@
1
- declare module "src/utils" {
2
- export function approximately(theValue: number, is: number, withPrecision?: number): boolean;
3
- export function toPositive(value: number, range: number): number;
4
- export function isCorrectNumber(value: any): boolean;
5
- }
6
- declare module "src/angle" {
7
- export enum AngleUnits {
8
- Deg = 0,
9
- Rad = 1,
10
- Turn = 2
11
- }
12
- export class Angle {
13
- static toRad(angle: number, unit?: AngleUnits): number;
14
- static toTurn(angle: number, unit?: AngleUnits): number;
15
- static toDeg(angle: number, unit?: AngleUnits): number;
16
- static toPositive(angle: number, unit: AngleUnits): number;
17
- static normalize(angle: number, unit: AngleUnits): number;
18
- static toCSS(angle: number, unit: AngleUnits): string;
19
- static angleUnitCorrespondence: Record<AngleUnits, string>;
20
- }
21
- }
22
- declare module "src/figures/point" {
23
- export type IPoint2 = [number, number];
24
- export class Point2 {
25
- static sum(p1: IPoint2, p2: IPoint2): IPoint2;
26
- static scale(v: IPoint2, factor: number): IPoint2;
27
- }
28
- }
29
- declare module "src/figures/circle" {
30
- import { IPoint2 } from "src/figures/point";
31
- import { IMatrix2d } from "src/matrix";
32
- export class Circle {
33
- center: IPoint2;
34
- r: number;
35
- constructor(center: IPoint2, r: number);
36
- transform(matrix: IMatrix2d): void;
37
- }
38
- }
39
- declare module "src/figures/straight-line" {
40
- import { IPoint2 } from "src/figures/point";
41
- import { IMatrix2d } from "src/matrix";
42
- export class StraightLine {
43
- p1: IPoint2;
44
- p2: IPoint2;
45
- constructor(p1: IPoint2, p2: IPoint2);
46
- transform(matrix: IMatrix2d, transformThis?: boolean): StraightLine;
47
- }
48
- }
49
- declare module "src/figures/index" {
50
- export * from "src/figures/point";
51
- export * from "src/figures/circle";
52
- export * from "src/figures/straight-line";
53
- }
54
- declare module "src/matrix" {
55
- import { IPoint2 } from "src/figures/index";
56
- export type IMatrix2d = [
57
- number,
58
- number,
59
- number,
60
- number,
61
- number,
62
- number
63
- ];
64
- export const identityMatrix: IMatrix2d;
65
- export class Matrix2d {
66
- static multiply(matrix: IMatrix2d, ...matrices: IMatrix2d[]): IMatrix2d;
67
- static apply(matrix: IMatrix2d, point: IPoint2): IPoint2;
68
- }
69
- }
70
- declare module "src/operator" {
71
- import { IMatrix2d } from "src/matrix";
72
- import { AngleUnits } from "src/angle";
73
- export class Operator {
74
- private static temp1;
75
- private static temp2;
76
- static rotateIdentity(angle: number, unit?: AngleUnits): IMatrix2d;
77
- }
78
- }
79
- declare module "src/colors/color" {
80
- export class Color {
81
- red: number;
82
- green: number;
83
- blue: number;
84
- constructor(red: number, green: number, blue: number);
85
- toCSS(): string;
86
- }
87
- }
88
- declare module "src/colors/conic.gradient" {
89
- import { Color } from "src/colors/color";
90
- import { IPoint2 } from "src/figures/index";
91
- export class ConicGradient {
92
- colors: {
93
- angle: number;
94
- color: Color;
95
- }[];
96
- constructor(...colors: {
97
- angle: number;
98
- color: Color;
99
- }[]);
100
- getColorAtAngle(angle: number): Color;
101
- getAngleByColor(color: Color): number;
102
- isColorInRange(color: Color): boolean;
103
- toCanvas(ctx: CanvasRenderingContext2D, center: IPoint2): CanvasGradient;
104
- toCSS(): string;
105
- }
106
- }
107
- declare module "src/colors/index" {
108
- export * from "src/colors/color";
109
- export * from "src/colors/conic.gradient";
110
- }
111
- declare module "src/index" {
112
- export * from "src/angle";
113
- export * from "src/matrix";
114
- export * from "src/operator";
115
- export * from "src/utils";
116
- export * from "src/colors/index";
117
- export * from "src/figures/index";
118
- }
119
- declare module "index" {
120
- export * from "src/index";
121
- }
package/dist/math.js DELETED
@@ -1,385 +0,0 @@
1
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
- if (k2 === undefined) k2 = k;
3
- var desc = Object.getOwnPropertyDescriptor(m, k);
4
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
- desc = { enumerable: true, get: function() { return m[k]; } };
6
- }
7
- Object.defineProperty(o, k2, desc);
8
- }) : (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- o[k2] = m[k];
11
- }));
12
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
13
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
14
- };
15
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
16
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
17
- if (ar || !(i in from)) {
18
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
19
- ar[i] = from[i];
20
- }
21
- }
22
- return to.concat(ar || Array.prototype.slice.call(from));
23
- };
24
- define("src/utils", ["require", "exports"], function (require, exports) {
25
- "use strict";
26
- Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.approximately = approximately;
28
- exports.toPositive = toPositive;
29
- exports.isCorrectNumber = isCorrectNumber;
30
- function approximately(theValue, is, withPrecision) {
31
- if (withPrecision === void 0) { withPrecision = 1e-8; }
32
- return Math.abs(theValue - is) <= withPrecision;
33
- }
34
- function toPositive(value, range) {
35
- if (value >= 0)
36
- return Math.abs(value);
37
- return Math.abs((range + value % range) % range);
38
- }
39
- function isCorrectNumber(value) {
40
- var v = +value;
41
- if (!isNaN(value) && isFinite(value)) {
42
- v = parseFloat(value);
43
- return !isNaN(v) && isFinite(v);
44
- }
45
- return false;
46
- }
47
- });
48
- define("src/angle", ["require", "exports", "src/utils"], function (require, exports, utils_1) {
49
- "use strict";
50
- var _a;
51
- Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.Angle = exports.AngleUnits = void 0;
53
- var AngleUnits;
54
- (function (AngleUnits) {
55
- AngleUnits[AngleUnits["Deg"] = 0] = "Deg";
56
- AngleUnits[AngleUnits["Rad"] = 1] = "Rad";
57
- AngleUnits[AngleUnits["Turn"] = 2] = "Turn";
58
- })(AngleUnits || (exports.AngleUnits = AngleUnits = {}));
59
- var Angle = (function () {
60
- function Angle() {
61
- }
62
- Angle.toRad = function (angle, unit) {
63
- if (unit === void 0) { unit = AngleUnits.Deg; }
64
- switch (unit) {
65
- case AngleUnits.Rad:
66
- return angle;
67
- case AngleUnits.Deg:
68
- return angle * Math.PI / 180;
69
- case AngleUnits.Turn:
70
- return Math.PI * 2 * angle;
71
- }
72
- };
73
- Angle.toTurn = function (angle, unit) {
74
- if (unit === void 0) { unit = AngleUnits.Deg; }
75
- switch (unit) {
76
- case AngleUnits.Turn:
77
- return angle;
78
- case AngleUnits.Deg:
79
- return angle / 360;
80
- case AngleUnits.Rad:
81
- return angle / (Math.PI * 2);
82
- }
83
- };
84
- Angle.toDeg = function (angle, unit) {
85
- if (unit === void 0) { unit = AngleUnits.Rad; }
86
- switch (unit) {
87
- case AngleUnits.Deg:
88
- return angle;
89
- case AngleUnits.Turn:
90
- return angle * 360;
91
- case AngleUnits.Rad:
92
- return angle * 180 / Math.PI;
93
- }
94
- };
95
- Angle.toPositive = function (angle, unit) {
96
- switch (unit) {
97
- case AngleUnits.Deg:
98
- return (0, utils_1.toPositive)(angle, 360);
99
- case AngleUnits.Turn:
100
- return (0, utils_1.toPositive)(angle, 1);
101
- case AngleUnits.Rad:
102
- return (0, utils_1.toPositive)(angle, Math.PI * 2);
103
- }
104
- };
105
- Angle.normalize = function (angle, unit) {
106
- switch (unit) {
107
- case AngleUnits.Deg:
108
- return Angle.toPositive(angle, unit) % 360;
109
- case AngleUnits.Rad:
110
- return Angle.toPositive(angle, unit) % (Math.PI * 2);
111
- case AngleUnits.Turn:
112
- return Angle.toPositive(angle, unit) % 1;
113
- }
114
- };
115
- Angle.toCSS = function (angle, unit) {
116
- if (!(0, utils_1.isCorrectNumber)(angle))
117
- return '';
118
- return "rotate(".concat(angle).concat(Angle.angleUnitCorrespondence[unit], ")");
119
- };
120
- Angle.angleUnitCorrespondence = (_a = {},
121
- _a[AngleUnits.Rad] = 'rad',
122
- _a[AngleUnits.Turn] = 'turn',
123
- _a[AngleUnits.Deg] = 'deg',
124
- _a);
125
- return Angle;
126
- }());
127
- exports.Angle = Angle;
128
- });
129
- define("src/figures/point", ["require", "exports"], function (require, exports) {
130
- "use strict";
131
- Object.defineProperty(exports, "__esModule", { value: true });
132
- exports.Point2 = void 0;
133
- var Point2 = (function () {
134
- function Point2() {
135
- }
136
- Point2.sum = function (p1, p2) {
137
- return [
138
- p1[0] + p2[0],
139
- p1[1] + p2[1],
140
- ];
141
- };
142
- Point2.scale = function (v, factor) {
143
- return [
144
- v[0] * factor,
145
- v[1] * factor,
146
- ];
147
- };
148
- return Point2;
149
- }());
150
- exports.Point2 = Point2;
151
- });
152
- define("src/figures/circle", ["require", "exports", "src/matrix"], function (require, exports, matrix_1) {
153
- "use strict";
154
- Object.defineProperty(exports, "__esModule", { value: true });
155
- exports.Circle = void 0;
156
- var Circle = (function () {
157
- function Circle(center, r) {
158
- this.center = center;
159
- this.r = r;
160
- }
161
- Circle.prototype.transform = function (matrix) {
162
- this.center = matrix_1.Matrix2d.apply(matrix, this.center);
163
- };
164
- return Circle;
165
- }());
166
- exports.Circle = Circle;
167
- });
168
- define("src/figures/straight-line", ["require", "exports", "src/matrix"], function (require, exports, matrix_2) {
169
- "use strict";
170
- Object.defineProperty(exports, "__esModule", { value: true });
171
- exports.StraightLine = void 0;
172
- var StraightLine = (function () {
173
- function StraightLine(p1, p2) {
174
- this.p1 = p1;
175
- this.p2 = p2;
176
- }
177
- StraightLine.prototype.transform = function (matrix, transformThis) {
178
- if (transformThis === void 0) { transformThis = false; }
179
- if (transformThis) {
180
- return this;
181
- }
182
- return new StraightLine(matrix_2.Matrix2d.apply(matrix, this.p1), matrix_2.Matrix2d.apply(matrix, this.p2));
183
- };
184
- return StraightLine;
185
- }());
186
- exports.StraightLine = StraightLine;
187
- });
188
- define("src/figures/index", ["require", "exports", "src/figures/point", "src/figures/circle", "src/figures/straight-line"], function (require, exports, point_1, circle_1, straight_line_1) {
189
- "use strict";
190
- Object.defineProperty(exports, "__esModule", { value: true });
191
- __exportStar(point_1, exports);
192
- __exportStar(circle_1, exports);
193
- __exportStar(straight_line_1, exports);
194
- });
195
- define("src/matrix", ["require", "exports"], function (require, exports) {
196
- "use strict";
197
- Object.defineProperty(exports, "__esModule", { value: true });
198
- exports.Matrix2d = exports.identityMatrix = void 0;
199
- exports.identityMatrix = [1, 0, 0, 1, 0, 0];
200
- var Matrix2d = (function () {
201
- function Matrix2d() {
202
- }
203
- Matrix2d.multiply = function (matrix) {
204
- var matrices = [];
205
- for (var _i = 1; _i < arguments.length; _i++) {
206
- matrices[_i - 1] = arguments[_i];
207
- }
208
- for (var _a = 0, matrices_1 = matrices; _a < matrices_1.length; _a++) {
209
- var m = matrices_1[_a];
210
- matrix = [
211
- matrix[0] * m[0] + matrix[2] * m[1],
212
- matrix[1] * m[0] + matrix[3] * m[1],
213
- matrix[0] * m[2] + matrix[2] * m[3],
214
- matrix[1] * m[2] + matrix[3] * m[3],
215
- matrix[0] * m[4] + matrix[2] * m[5] + matrix[4],
216
- matrix[1] * m[4] + matrix[3] * m[5] + matrix[5],
217
- ];
218
- }
219
- return matrix;
220
- };
221
- Matrix2d.apply = function (matrix, point) {
222
- return [
223
- matrix[0] * point[0] + matrix[2] * point[1] + matrix[4],
224
- matrix[1] * point[0] + matrix[3] * point[1] + matrix[5],
225
- ];
226
- };
227
- return Matrix2d;
228
- }());
229
- exports.Matrix2d = Matrix2d;
230
- });
231
- define("src/operator", ["require", "exports", "src/angle"], function (require, exports, angle_1) {
232
- "use strict";
233
- Object.defineProperty(exports, "__esModule", { value: true });
234
- exports.Operator = void 0;
235
- var Operator = (function () {
236
- function Operator() {
237
- }
238
- Operator.rotateIdentity = function (angle, unit) {
239
- if (unit === void 0) { unit = angle_1.AngleUnits.Deg; }
240
- angle = angle_1.Angle.toRad(angle, unit);
241
- this.temp1 = Math.cos(angle);
242
- this.temp2 = Math.sin(angle);
243
- return [
244
- this.temp1,
245
- this.temp2,
246
- -this.temp2,
247
- this.temp1,
248
- 0, 0
249
- ];
250
- };
251
- return Operator;
252
- }());
253
- exports.Operator = Operator;
254
- });
255
- define("src/colors/color", ["require", "exports"], function (require, exports) {
256
- "use strict";
257
- Object.defineProperty(exports, "__esModule", { value: true });
258
- exports.Color = void 0;
259
- var Color = (function () {
260
- function Color(red, green, blue) {
261
- this.red = red;
262
- this.green = green;
263
- this.blue = blue;
264
- this.red = Math.max(Math.min(red, 255), 0);
265
- this.green = Math.max(Math.min(green, 255), 0);
266
- this.blue = Math.max(Math.min(blue, 255), 0);
267
- }
268
- Color.prototype.toCSS = function () {
269
- return "rgb(".concat(this.red, ", ").concat(this.green, ", ").concat(this.blue, ")");
270
- };
271
- return Color;
272
- }());
273
- exports.Color = Color;
274
- });
275
- define("src/colors/conic.gradient", ["require", "exports", "src/colors/color"], function (require, exports, color_1) {
276
- "use strict";
277
- Object.defineProperty(exports, "__esModule", { value: true });
278
- exports.ConicGradient = void 0;
279
- var ConicGradient = (function () {
280
- function ConicGradient() {
281
- var colors = [];
282
- for (var _i = 0; _i < arguments.length; _i++) {
283
- colors[_i] = arguments[_i];
284
- }
285
- this.colors = __spreadArray([], colors, true).sort(function (a, b) { return a.angle - b.angle; });
286
- this.colors.push({
287
- angle: 1,
288
- color: this.colors[0].color
289
- });
290
- }
291
- ConicGradient.prototype.getColorAtAngle = function (angle) {
292
- var prev = undefined;
293
- var next = undefined;
294
- for (var _i = 0, _a = this.colors; _i < _a.length; _i++) {
295
- var color = _a[_i];
296
- if (color.angle === angle)
297
- return color.color;
298
- if (color.angle < angle)
299
- prev = color;
300
- if (color.angle > angle) {
301
- next = color;
302
- break;
303
- }
304
- }
305
- if (!prev || !next)
306
- return undefined;
307
- var coef = (angle - prev.angle) / (next.angle - prev.angle);
308
- return new color_1.Color(Math.floor((next.color.red - prev.color.red) * coef + prev.color.red), Math.floor((next.color.green - prev.color.green) * coef + prev.color.green), Math.floor((next.color.blue - prev.color.blue) * coef + prev.color.blue));
309
- };
310
- ConicGradient.prototype.getAngleByColor = function (color) {
311
- var prev;
312
- var next = this.colors[0];
313
- if (color.red === next.color.red && color.green === next.color.green && color.blue === next.color.blue)
314
- return next.angle;
315
- for (var i = 1; i < this.colors.length; i++) {
316
- next = this.colors[i];
317
- prev = this.colors[i - 1];
318
- if (color.red === next.color.red && color.green === next.color.green && color.blue === next.color.blue)
319
- return next.angle;
320
- var redDif = next.color.red - prev.color.red;
321
- var greenDif = next.color.green - prev.color.green;
322
- var blueDif = next.color.blue - prev.color.blue;
323
- var redDifColor = color.red - prev.color.red;
324
- var greenDifColor = color.green - prev.color.green;
325
- var blueDifColor = color.blue - prev.color.blue;
326
- if (((redDifColor >= 0 && redDifColor <= redDif) || (redDifColor <= 0 && redDifColor >= redDif)) &&
327
- ((greenDifColor >= 0 && greenDifColor <= greenDif) || (greenDifColor <= 0 && greenDifColor >= greenDif)) &&
328
- ((blueDifColor >= 0 && blueDifColor <= blueDif) || (blueDifColor <= 0 && blueDifColor >= blueDif))) {
329
- var redCoef = ((color.red - prev.color.red) / (next.color.red - prev.color.red));
330
- var greenCoef = ((color.green - prev.color.green) / (next.color.green - prev.color.green));
331
- var blueCoef = ((color.blue - prev.color.blue) / (next.color.blue - prev.color.blue));
332
- var coefs = [redCoef, greenCoef, blueCoef].filter(Boolean);
333
- return (next.angle - prev.angle) * Math.min.apply(Math, coefs) + prev.angle;
334
- }
335
- }
336
- return undefined;
337
- };
338
- ConicGradient.prototype.isColorInRange = function (color) {
339
- return Boolean(this.getAngleByColor(color));
340
- };
341
- ConicGradient.prototype.toCanvas = function (ctx, center) {
342
- var gradient = ctx.createConicGradient.apply(ctx, __spreadArray([0], center, false));
343
- for (var _i = 0, _a = this.colors; _i < _a.length; _i++) {
344
- var color = _a[_i];
345
- gradient.addColorStop(color.angle, color.color.toCSS());
346
- }
347
- return gradient;
348
- };
349
- ConicGradient.prototype.toCSS = function () {
350
- var s = '';
351
- for (var _i = 0, _a = this.colors; _i < _a.length; _i++) {
352
- var color = _a[_i];
353
- if (s)
354
- s += ',';
355
- s += "rgb(".concat(color.color.red, ",").concat(color.color.green, ",").concat(color.color.blue, ")");
356
- }
357
- s = "conic-gradient(in srgb from 0.25turn at 50% 50%, ".concat(s, ")");
358
- return s;
359
- };
360
- return ConicGradient;
361
- }());
362
- exports.ConicGradient = ConicGradient;
363
- });
364
- define("src/colors/index", ["require", "exports", "src/colors/color", "src/colors/conic.gradient"], function (require, exports, color_2, conic_gradient_1) {
365
- "use strict";
366
- Object.defineProperty(exports, "__esModule", { value: true });
367
- __exportStar(color_2, exports);
368
- __exportStar(conic_gradient_1, exports);
369
- });
370
- define("src/index", ["require", "exports", "src/angle", "src/matrix", "src/operator", "src/utils", "src/colors/index", "src/figures/index"], function (require, exports, angle_2, matrix_3, operator_1, utils_2, colors_1, figures_1) {
371
- "use strict";
372
- Object.defineProperty(exports, "__esModule", { value: true });
373
- __exportStar(angle_2, exports);
374
- __exportStar(matrix_3, exports);
375
- __exportStar(operator_1, exports);
376
- __exportStar(utils_2, exports);
377
- __exportStar(colors_1, exports);
378
- __exportStar(figures_1, exports);
379
- });
380
- define("index", ["require", "exports", "src/index"], function (require, exports, src_1) {
381
- "use strict";
382
- Object.defineProperty(exports, "__esModule", { value: true });
383
- __exportStar(src_1, exports);
384
- });
385
- //# sourceMappingURL=math.js.map
package/dist/math.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"math.js","sourceRoot":"","sources":["../src/utils.ts","../src/angle.ts","../src/figures/point.ts","../src/figures/circle.ts","../src/figures/straight-line.ts","../src/figures/index.ts","../src/matrix.ts","../src/operator.ts","../src/colors/color.ts","../src/colors/conic.gradient.ts","../src/colors/index.ts","../src/index.ts","../index.ts"],"names":[],"mappings":"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"}