pimath 0.0.33 → 0.0.36
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.
- package/dist/pi.js +6468 -1
- package/dist/pi.js.map +1 -1
- package/dist/pi.min.js +2 -0
- package/dist/pi.min.js.map +1 -0
- package/docs/assets/search.js +1 -1
- package/docs/classes/algebra.Equation.html +9 -9
- package/docs/classes/algebra.LinearSystem.html +1 -1
- package/docs/classes/algebra.Logicalset.html +2 -2
- package/docs/classes/algebra.Monom.html +37 -37
- package/docs/classes/algebra.Polynom.html +10 -10
- package/docs/classes/algebra.PolynomExpFactor.html +1 -1
- package/docs/classes/algebra.PolynomExpProduct.html +1 -1
- package/docs/classes/algebra.Rational.html +2 -2
- package/docs/classes/coefficients.Fraction.html +4 -4
- package/docs/classes/coefficients.Nthroot.html +1 -1
- package/docs/classes/geometry.Circle.html +2 -2
- package/docs/classes/geometry.Line.html +2 -2
- package/docs/classes/geometry.Point.html +1 -1
- package/docs/classes/geometry.Triangle.html +5 -5
- package/docs/classes/geometry.Vector.html +1 -1
- package/docs/classes/numeric.Numeric.html +5 -5
- package/docs/classes/shutingyard.Shutingyard.html +4 -4
- package/docs/enums/geometry.LinePropriety.html +1 -0
- package/docs/enums/shutingyard.ShutingyardMode.html +1 -1
- package/docs/enums/shutingyard.ShutingyardType.html +1 -1
- package/docs/interfaces/geometry.remarquableLines.html +1 -1
- package/docs/modules/algebra.html +1 -1
- package/docs/modules/coefficients.html +1 -1
- package/docs/modules/geometry.html +1 -1
- package/docs/modules/random.Random.html +1 -1
- package/docs/modules/random.html +1 -1
- package/docs/modules/shutingyard.html +1 -1
- package/esm/main.d.ts +41 -1
- package/esm/main.js +34 -20
- package/esm/main.js.map +1 -1
- package/esm/maths/algebra/equation.d.ts +63 -18
- package/esm/maths/algebra/equation.js +599 -503
- package/esm/maths/algebra/equation.js.map +1 -1
- package/esm/maths/algebra/linearSystem.d.ts +1 -1
- package/esm/maths/algebra/linearSystem.js +157 -104
- package/esm/maths/algebra/linearSystem.js.map +1 -1
- package/esm/maths/algebra/logicalset.d.ts +11 -0
- package/esm/maths/algebra/logicalset.js +18 -6
- package/esm/maths/algebra/logicalset.js.map +1 -1
- package/esm/maths/algebra/monom.d.ts +142 -1
- package/esm/maths/algebra/monom.js +633 -405
- package/esm/maths/algebra/monom.js.map +1 -1
- package/esm/maths/algebra/polynom.d.ts +52 -3
- package/esm/maths/algebra/polynom.js +1003 -720
- package/esm/maths/algebra/polynom.js.map +1 -1
- package/esm/maths/algebra/rational.d.ts +13 -1
- package/esm/maths/algebra/rational.js +98 -83
- package/esm/maths/algebra/rational.js.map +1 -1
- package/esm/maths/coefficients/fraction.d.ts +18 -0
- package/esm/maths/coefficients/fraction.js +390 -332
- package/esm/maths/coefficients/fraction.js.map +1 -1
- package/esm/maths/coefficients/nthroot.d.ts +3 -0
- package/esm/maths/coefficients/nthroot.js +48 -33
- package/esm/maths/coefficients/nthroot.js.map +1 -1
- package/esm/maths/expressions/numexp.js +13 -5
- package/esm/maths/expressions/numexp.js.map +1 -1
- package/esm/maths/expressions/polynomexp.bkp.d.ts +2 -2
- package/esm/maths/expressions/polynomexp.bkp.js +95 -95
- package/esm/maths/expressions/polynomexp.bkp.js.map +1 -1
- package/esm/maths/expressions/polynomexp.d.ts +2 -2
- package/esm/maths/expressions/polynomexp.js +27 -14
- package/esm/maths/expressions/polynomexp.js.map +1 -1
- package/esm/maths/geometry/circle.d.ts +20 -8
- package/esm/maths/geometry/circle.js +148 -50
- package/esm/maths/geometry/circle.js.map +1 -1
- package/esm/maths/geometry/line.d.ts +11 -4
- package/esm/maths/geometry/line.js +251 -193
- package/esm/maths/geometry/line.js.map +1 -1
- package/esm/maths/geometry/point.d.ts +13 -1
- package/esm/maths/geometry/point.js +124 -76
- package/esm/maths/geometry/point.js.map +1 -1
- package/esm/maths/geometry/triangle.d.ts +23 -1
- package/esm/maths/geometry/triangle.js +197 -158
- package/esm/maths/geometry/triangle.js.map +1 -1
- package/esm/maths/geometry/vector.d.ts +5 -1
- package/esm/maths/geometry/vector.js +139 -115
- package/esm/maths/geometry/vector.js.map +1 -1
- package/esm/maths/numeric.d.ts +17 -0
- package/esm/maths/numeric.js +40 -0
- package/esm/maths/numeric.js.map +1 -1
- package/esm/maths/{random/index.d.ts → randomization/random.d.ts} +3 -2
- package/esm/maths/{random/index.js → randomization/random.js} +6 -2
- package/esm/maths/randomization/random.js.map +1 -0
- package/esm/maths/{random → randomization}/randomCore.d.ts +0 -0
- package/esm/maths/randomization/randomCore.js +22 -0
- package/esm/maths/randomization/randomCore.js.map +1 -0
- package/esm/maths/{random → randomization}/rndFraction.d.ts +4 -1
- package/esm/maths/randomization/rndFraction.js +40 -0
- package/esm/maths/randomization/rndFraction.js.map +1 -0
- package/esm/maths/randomization/rndHelpers.d.ts +25 -0
- package/esm/maths/{random → randomization}/rndHelpers.js +20 -0
- package/esm/maths/randomization/rndHelpers.js.map +1 -0
- package/esm/maths/{random → randomization}/rndMonom.d.ts +4 -1
- package/esm/maths/randomization/rndMonom.js +53 -0
- package/esm/maths/randomization/rndMonom.js.map +1 -0
- package/esm/maths/{random → randomization}/rndPolynom.d.ts +4 -1
- package/esm/maths/randomization/rndPolynom.js +75 -0
- package/esm/maths/randomization/rndPolynom.js.map +1 -0
- package/esm/maths/{random → randomization}/rndTypes.d.ts +0 -0
- package/esm/maths/{random → randomization}/rndTypes.js +0 -0
- package/esm/maths/randomization/rndTypes.js.map +1 -0
- package/esm/maths/shutingyard.d.ts +21 -0
- package/esm/maths/shutingyard.js +86 -9
- package/esm/maths/shutingyard.js.map +1 -1
- package/package.json +2 -2
- package/public/index.html +47 -0
- package/src/main.ts +17 -15
- package/src/maths/algebra/equation.ts +144 -129
- package/src/maths/algebra/linearSystem.ts +2 -2
- package/src/maths/algebra/monom.ts +1 -1
- package/src/maths/algebra/polynom.ts +136 -136
- package/src/maths/algebra/rational.ts +1 -1
- package/src/maths/expressions/numexp.ts +1 -1
- package/src/maths/expressions/polynomexp.bkp.ts +2 -2
- package/src/maths/expressions/polynomexp.ts +2 -2
- package/src/maths/geometry/circle.ts +172 -77
- package/src/maths/geometry/line.ts +4 -3
- package/src/maths/geometry/point.ts +26 -3
- package/src/maths/geometry/triangle.ts +1 -1
- package/src/maths/geometry/vector.ts +1 -1
- package/src/maths/numeric.ts +15 -0
- package/src/maths/{random/index.ts → randomization/random.ts} +3 -2
- package/src/maths/{random → randomization}/randomCore.ts +0 -0
- package/src/maths/{random → randomization}/rndFraction.ts +2 -2
- package/src/maths/{random → randomization}/rndHelpers.ts +0 -0
- package/src/maths/{random → randomization}/rndMonom.ts +2 -2
- package/src/maths/{random → randomization}/rndPolynom.ts +3 -3
- package/src/maths/{random → randomization}/rndTypes.ts +0 -0
- package/tests/algebra/monom.test.ts +1 -1
- package/tests/algebra/polynom.test.ts +8 -9
- package/tests/geometry/circle.test.ts +33 -0
- package/tsconfig.json +2 -2
- package/webpack-production-min.config.js +26 -0
- package/webpack-production.config.js +1 -1
- package/dev/pi.js +0 -5392
- package/dev/pi.js.map +0 -1
- package/esm/maths/algebra/index.d.ts +0 -7
- package/esm/maths/algebra/index.js +0 -20
- package/esm/maths/algebra/index.js.map +0 -1
- package/esm/maths/coefficients/index.d.ts +0 -2
- package/esm/maths/coefficients/index.js +0 -15
- package/esm/maths/coefficients/index.js.map +0 -1
- package/esm/maths/geometry/index.d.ts +0 -5
- package/esm/maths/geometry/index.js +0 -18
- package/esm/maths/geometry/index.js.map +0 -1
- package/esm/maths/random/index.js.map +0 -1
- package/esm/maths/random/randomCore.js +0 -22
- package/esm/maths/random/randomCore.js.map +0 -1
- package/esm/maths/random/rndFraction.js +0 -37
- package/esm/maths/random/rndFraction.js.map +0 -1
- package/esm/maths/random/rndHelpers.d.ts +0 -8
- package/esm/maths/random/rndHelpers.js.map +0 -1
- package/esm/maths/random/rndMonom.js +0 -46
- package/esm/maths/random/rndMonom.js.map +0 -1
- package/esm/maths/random/rndPolynom.js +0 -63
- package/esm/maths/random/rndPolynom.js.map +0 -1
- package/esm/maths/random/rndTypes.js.map +0 -1
- package/src/maths/algebra/index.ts +0 -7
- package/src/maths/coefficients/index.ts +0 -2
- package/src/maths/geometry/index.ts +0 -5
|
@@ -1,45 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PolynomExpProduct = exports.PolynomExpFactor = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const polynom_1 = require("../algebra/polynom");
|
|
5
|
+
const fraction_1 = require("../coefficients/fraction");
|
|
6
6
|
class PolynomExpFactor {
|
|
7
7
|
constructor(polynom, degree, mathFunction) {
|
|
8
|
-
this._polynom = new
|
|
9
|
-
this._degree = new
|
|
8
|
+
this._polynom = new polynom_1.Polynom(polynom);
|
|
9
|
+
this._degree = new fraction_1.Fraction(degree === undefined ? 1 : degree);
|
|
10
10
|
this._fn = mathFunction;
|
|
11
11
|
this._powerAsInteger = true;
|
|
12
12
|
this._forceParenthesis = true;
|
|
13
13
|
}
|
|
14
|
-
_forceParenthesis;
|
|
15
14
|
get forceParenthesis() {
|
|
16
15
|
return this._forceParenthesis;
|
|
17
16
|
}
|
|
18
17
|
set forceParenthesis(value) {
|
|
19
18
|
this._forceParenthesis = value;
|
|
20
19
|
}
|
|
21
|
-
_fn;
|
|
22
20
|
get fn() {
|
|
23
21
|
return this._fn;
|
|
24
22
|
}
|
|
25
23
|
set fn(value) {
|
|
26
24
|
this._fn = value;
|
|
27
25
|
}
|
|
28
|
-
_powerAsInteger;
|
|
29
26
|
get powerAsInteger() {
|
|
30
27
|
return this._powerAsInteger;
|
|
31
28
|
}
|
|
32
29
|
set powerAsInteger(value) {
|
|
33
30
|
this._powerAsInteger = value;
|
|
34
31
|
}
|
|
35
|
-
_polynom;
|
|
36
32
|
get polynom() {
|
|
37
33
|
return this._polynom;
|
|
38
34
|
}
|
|
39
35
|
set polynom(value) {
|
|
40
36
|
this._polynom = value;
|
|
41
37
|
}
|
|
42
|
-
_degree;
|
|
43
38
|
get degree() {
|
|
44
39
|
return this._degree;
|
|
45
40
|
}
|
|
@@ -49,16 +44,21 @@ class PolynomExpFactor {
|
|
|
49
44
|
get tex() {
|
|
50
45
|
let tex;
|
|
51
46
|
if (this._degree.isOne() && (this._fn !== undefined || !this._forceParenthesis)) {
|
|
47
|
+
// If degree is one, no need to add the parenthesis.
|
|
52
48
|
tex = this._polynom.tex;
|
|
53
49
|
}
|
|
54
50
|
else {
|
|
51
|
+
// the degree is not one, add the parenthesis.
|
|
55
52
|
if (this._powerAsInteger && !this._degree.isRelative()) {
|
|
53
|
+
// the degree is a fraction and we want natural powers => use sqrt.
|
|
56
54
|
tex = `\\sqrt${this._degree.denominator !== 2 ? `[ ${this._degree.denominator} ]` : ''}{ ${this._polynom.tex} }^{ ${this._degree.numerator} }`;
|
|
57
55
|
}
|
|
58
56
|
else if (this.isCoefficient && this.firstCoefficient.isNatural()) {
|
|
57
|
+
// the value is a natural number (eg 3, 7, ...)
|
|
59
58
|
tex = this._polynom.tex + this._texDegree;
|
|
60
59
|
}
|
|
61
60
|
else {
|
|
61
|
+
// In any other case, add the parenthesis by default
|
|
62
62
|
tex = `\\left( ${this._polynom.tex} \\right)${this._texDegree}`;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -68,6 +68,7 @@ class PolynomExpFactor {
|
|
|
68
68
|
return tex;
|
|
69
69
|
}
|
|
70
70
|
get isCoefficient() {
|
|
71
|
+
// TODO: Maybe reduce the coefficient if it isn't of degree one.
|
|
71
72
|
return this._polynom.degree().isZero();
|
|
72
73
|
}
|
|
73
74
|
get firstCoefficient() {
|
|
@@ -101,28 +102,24 @@ class PolynomExpProduct {
|
|
|
101
102
|
this._positive = true;
|
|
102
103
|
this._asPositiveDegree = true;
|
|
103
104
|
}
|
|
104
|
-
_fn;
|
|
105
105
|
get fn() {
|
|
106
106
|
return this._fn;
|
|
107
107
|
}
|
|
108
108
|
set fn(value) {
|
|
109
109
|
this._fn = value;
|
|
110
110
|
}
|
|
111
|
-
_factors;
|
|
112
111
|
get factors() {
|
|
113
112
|
return this._factors;
|
|
114
113
|
}
|
|
115
114
|
set factors(value) {
|
|
116
115
|
this._factors = value;
|
|
117
116
|
}
|
|
118
|
-
_positive;
|
|
119
117
|
get positive() {
|
|
120
118
|
return this._positive;
|
|
121
119
|
}
|
|
122
120
|
set positive(value) {
|
|
123
121
|
this._positive = value;
|
|
124
122
|
}
|
|
125
|
-
_asPositiveDegree;
|
|
126
123
|
get asPositiveDegree() {
|
|
127
124
|
return this._asPositiveDegree;
|
|
128
125
|
}
|
|
@@ -131,7 +128,9 @@ class PolynomExpProduct {
|
|
|
131
128
|
}
|
|
132
129
|
get tex() {
|
|
133
130
|
let parenthesis = this._factors.length > 1;
|
|
131
|
+
// Default value
|
|
134
132
|
let tex = this._factors.map(factor => factor.setForceParenthesis(parenthesis).tex).join(' \\cdot ');
|
|
133
|
+
// Change the value in some cases...
|
|
135
134
|
if (this._asPositiveDegree) {
|
|
136
135
|
const numerators = this._factors.filter(x => x.degree.isPositive()), denominators = this._factors.filter(x => x.degree.isNegative());
|
|
137
136
|
let numeratorsAsTex, denominatorsAsTex;
|
|
@@ -146,6 +145,7 @@ class PolynomExpProduct {
|
|
|
146
145
|
parenthesis = numerators.length > 1;
|
|
147
146
|
numeratorsAsTex = numerators.map(factor => factor.setForceParenthesis(parenthesis).tex);
|
|
148
147
|
}
|
|
148
|
+
// Change all denominators degrees to positive.
|
|
149
149
|
denominators.map(x => x.degree.opposed());
|
|
150
150
|
if (denominators.length === 1) {
|
|
151
151
|
denominatorsAsTex = [denominators[0].setForceParenthesis(false).tex];
|
|
@@ -154,10 +154,12 @@ class PolynomExpProduct {
|
|
|
154
154
|
parenthesis = denominators.length > 1;
|
|
155
155
|
denominatorsAsTex = denominators.map(factor => factor.setForceParenthesis(parenthesis).tex);
|
|
156
156
|
}
|
|
157
|
+
// restore all degrees to negative again.
|
|
157
158
|
denominators.map(x => x.degree.opposed());
|
|
158
159
|
tex = `\\dfrac{ ${numeratorsAsTex.join(' \\cdot ')} }{ ${denominatorsAsTex.join(' \\cdot ')} }`;
|
|
159
160
|
}
|
|
160
161
|
}
|
|
162
|
+
// Apply the modification
|
|
161
163
|
if (this._fn !== undefined && this._fn.name !== undefined && this._fn.name !== '') {
|
|
162
164
|
tex = `${this._fn.tex}\\left( ${tex} \\right)`;
|
|
163
165
|
}
|
|
@@ -165,7 +167,7 @@ class PolynomExpProduct {
|
|
|
165
167
|
}
|
|
166
168
|
reduce() {
|
|
167
169
|
let coefficients = this._factors.filter(factor => factor.isCoefficient), polynoms = this._factors.filter(factor => !factor.isCoefficient);
|
|
168
|
-
let result = new
|
|
170
|
+
let result = new fraction_1.Fraction().one();
|
|
169
171
|
if (coefficients.length > 1) {
|
|
170
172
|
for (const factor of coefficients) {
|
|
171
173
|
if (factor.degree.isPositive()) {
|
|
@@ -198,7 +200,12 @@ class PolynomExpProduct {
|
|
|
198
200
|
return this;
|
|
199
201
|
}
|
|
200
202
|
integrate(letter) {
|
|
203
|
+
// Handle this kind of case:
|
|
204
|
+
// A * f' * F^n
|
|
205
|
+
// A * f' / F^n, n != 1
|
|
206
|
+
// A * f_1 * f_2 * f_3, where (f_1 * f_2)' = f_3
|
|
201
207
|
if (this._factors.length === 2) {
|
|
208
|
+
// Check polynoms degree: one must of one degree less than the other.
|
|
202
209
|
let d1 = this._factors[0].polynom.degree(letter).value, d2 = this._factors[1].polynom.degree(letter).value;
|
|
203
210
|
if (d1 === d2 + 1) {
|
|
204
211
|
return this._integrateWithInternalDerivative(this._factors[0], this._factors[1], letter);
|
|
@@ -214,9 +221,15 @@ class PolynomExpProduct {
|
|
|
214
221
|
return this;
|
|
215
222
|
}
|
|
216
223
|
_integrateWithInternalDerivative(P, Pinternal, letter) {
|
|
224
|
+
// Get the internal derivative
|
|
217
225
|
let internalDerivative = P.polynom.clone().derivative(letter);
|
|
226
|
+
// Get the factor.
|
|
218
227
|
let { quotient, reminder } = Pinternal.polynom.clone().euclidian(internalDerivative);
|
|
219
228
|
if (reminder.isZero() && quotient.degree(letter).isZero()) {
|
|
229
|
+
// All the conditions are done. Actual situation is
|
|
230
|
+
// (4x-10)(x^2-5x+7)^9
|
|
231
|
+
// P1 = (x^2-5x+7), P2 = (2x-5)
|
|
232
|
+
// => 1/10 * quotient * (x^2-5x+7)^10
|
|
220
233
|
if (P.degree.isEqual(-1)) {
|
|
221
234
|
return (new PolynomExpProduct(new PolynomExpFactor(quotient, 1), new PolynomExpFactor(P.polynom.clone(), 1, {
|
|
222
235
|
name: 'ln', tex: '\\ln', fn: (x) => Math.log(x)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polynomexp.js","sourceRoot":"","sources":["../../../src/maths/expressions/polynomexp.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"polynomexp.js","sourceRoot":"","sources":["../../../src/maths/expressions/polynomexp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
import { Point } from "./point";
|
|
2
|
-
import { Fraction } from "../coefficients";
|
|
3
|
-
import { Equation } from "../algebra";
|
|
4
2
|
import { Line } from "./line";
|
|
3
|
+
import { Fraction } from "../coefficients/fraction";
|
|
4
|
+
import { Equation } from "../algebra/equation";
|
|
5
5
|
export declare class Circle {
|
|
6
|
+
constructor(...values: unknown[]);
|
|
6
7
|
private _center;
|
|
8
|
+
get center(): Point;
|
|
7
9
|
private _squareRadius;
|
|
10
|
+
get squareRadius(): Fraction;
|
|
8
11
|
private _cartesian;
|
|
12
|
+
get cartesian(): Equation;
|
|
9
13
|
private _exists;
|
|
10
|
-
constructor(...values: unknown[]);
|
|
11
|
-
get center(): Point;
|
|
12
14
|
get exists(): boolean;
|
|
13
|
-
get squareRadius(): Fraction;
|
|
14
15
|
get radius(): {
|
|
15
16
|
tex: string;
|
|
16
17
|
display: string;
|
|
18
|
+
value: number;
|
|
17
19
|
};
|
|
18
20
|
get tex(): string;
|
|
19
21
|
get developed(): string;
|
|
20
22
|
get display(): string;
|
|
21
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Get the relative position between circle and line. It corresponds to the number of intersection.
|
|
25
|
+
* @param {Line} L
|
|
26
|
+
* @returns {number}
|
|
27
|
+
*/
|
|
28
|
+
relativePosition: (L: Line) => number;
|
|
29
|
+
lineIntersection: (L: Line) => Point[];
|
|
30
|
+
tangents: (P: Point | Fraction) => Line[];
|
|
31
|
+
isPointOnCircle: (P: Point) => Boolean;
|
|
32
|
+
getPointsOnCircle: (numberIsInteger?: boolean) => Point[];
|
|
22
33
|
clone(): Circle;
|
|
34
|
+
private _tangentsThroughOnePointOnTheCircle;
|
|
35
|
+
private _tangentsThroughOnePointOutsideTheCircle;
|
|
36
|
+
private _tangentsWithSlope;
|
|
23
37
|
private _reset;
|
|
24
38
|
private parse;
|
|
25
39
|
private _calculateCartesian;
|
|
@@ -28,6 +42,4 @@ export declare class Circle {
|
|
|
28
42
|
private _parseCenterAndPointThrough;
|
|
29
43
|
private _parseEquation;
|
|
30
44
|
private _parseThroughtThreePoints;
|
|
31
|
-
relativePosition: (L: Line) => number;
|
|
32
|
-
lineIntersection: (L: Line) => Point[];
|
|
33
45
|
}
|
|
@@ -2,16 +2,129 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Circle = void 0;
|
|
4
4
|
const point_1 = require("./point");
|
|
5
|
-
const
|
|
6
|
-
const algebra_1 = require("../algebra");
|
|
5
|
+
const line_1 = require("./line");
|
|
7
6
|
const vector_1 = require("./vector");
|
|
8
7
|
const triangle_1 = require("./triangle");
|
|
8
|
+
const numeric_1 = require("../numeric");
|
|
9
|
+
const fraction_1 = require("../coefficients/fraction");
|
|
10
|
+
const equation_1 = require("../algebra/equation");
|
|
11
|
+
const polynom_1 = require("../algebra/polynom");
|
|
9
12
|
class Circle {
|
|
10
|
-
_center;
|
|
11
|
-
_squareRadius;
|
|
12
|
-
_cartesian;
|
|
13
|
-
_exists;
|
|
14
13
|
constructor(...values) {
|
|
14
|
+
/**
|
|
15
|
+
* Get the relative position between circle and line. It corresponds to the number of intersection.
|
|
16
|
+
* @param {Line} L
|
|
17
|
+
* @returns {number}
|
|
18
|
+
*/
|
|
19
|
+
this.relativePosition = (L) => {
|
|
20
|
+
let distance = L.distanceTo(this.center), radius = Math.sqrt(this._squareRadius.value);
|
|
21
|
+
if (distance.value - radius > 0.0000000001) {
|
|
22
|
+
return 0; // external
|
|
23
|
+
}
|
|
24
|
+
else if (Math.abs(distance.value - radius) < 0.0000000001) {
|
|
25
|
+
return 1; // tangent
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return 2; // external
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
this.lineIntersection = (L) => {
|
|
32
|
+
let intersectionPoints = [], solX;
|
|
33
|
+
if (this._cartesian === null) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
const equX = this._cartesian.clone(), lineX = L.equation.clone().isolate('x'), lineY = L.equation.clone().isolate('y');
|
|
37
|
+
if (lineX instanceof equation_1.Equation && lineY instanceof equation_1.Equation) {
|
|
38
|
+
equX.replaceBy('y', lineY.right).simplify();
|
|
39
|
+
equX.solve();
|
|
40
|
+
for (let x of equX.solutions) {
|
|
41
|
+
if (x.exact === false && isNaN(x.value)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
solX = new fraction_1.Fraction(x.exact === false ? x.value : x.exact);
|
|
45
|
+
intersectionPoints.push(new point_1.Point(solX.clone(), lineY.right.evaluate(solX)));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return intersectionPoints;
|
|
49
|
+
};
|
|
50
|
+
this.tangents = (P) => {
|
|
51
|
+
if (P instanceof fraction_1.Fraction) {
|
|
52
|
+
return this._tangentsWithSlope(P);
|
|
53
|
+
}
|
|
54
|
+
else if (this.isPointOnCircle(P)) {
|
|
55
|
+
return this._tangentsThroughOnePointOnTheCircle(P);
|
|
56
|
+
}
|
|
57
|
+
else if (this.center.distanceTo(P).value > this.radius.value) {
|
|
58
|
+
//TODO: Must check it's outside the circle
|
|
59
|
+
return this._tangentsThroughOnePointOutsideTheCircle(P);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.log('No tangents as the point is inside !');
|
|
63
|
+
}
|
|
64
|
+
return [];
|
|
65
|
+
};
|
|
66
|
+
this.isPointOnCircle = (P) => {
|
|
67
|
+
return this._cartesian.test({ x: P.x, y: P.y });
|
|
68
|
+
};
|
|
69
|
+
this.getPointsOnCircle = (numberIsInteger) => {
|
|
70
|
+
if (numberIsInteger === undefined) {
|
|
71
|
+
numberIsInteger = false;
|
|
72
|
+
}
|
|
73
|
+
// It means searching for pythagorician triples that make a perfect square.
|
|
74
|
+
// (x-4)^2 + (y+3)^2 = 15
|
|
75
|
+
let triplets = numeric_1.Numeric.pythagoricianTripletsWithTarget(this._squareRadius.value, true);
|
|
76
|
+
let points = [], pt;
|
|
77
|
+
triplets.forEach(triplet => {
|
|
78
|
+
// Allow positive / negative values
|
|
79
|
+
// x-a = t => x = a + t
|
|
80
|
+
// x-a = -t => x = a - t
|
|
81
|
+
for (let k of [[1, 1], [-1, 1], [-1, -1], [1, -1]]) {
|
|
82
|
+
pt = new point_1.Point(this.center.x.clone().add(k[0] * triplet[0]), this.center.y.clone().add(k[1] * triplet[1]));
|
|
83
|
+
// Check if the point is not already in points.
|
|
84
|
+
if (!pt.isInListOfPoints(points)) {
|
|
85
|
+
points.push(pt);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
return points;
|
|
90
|
+
};
|
|
91
|
+
this._tangentsThroughOnePointOnTheCircle = (P) => {
|
|
92
|
+
let CT = new vector_1.Vector(this._center, P);
|
|
93
|
+
return [new line_1.Line(P, CT, line_1.LinePropriety.Perpendicular)];
|
|
94
|
+
};
|
|
95
|
+
this._tangentsThroughOnePointOutsideTheCircle = (P) => {
|
|
96
|
+
// y = mx + h
|
|
97
|
+
// px, py => h = -m px + py => mx - y -m.px + py = 0 =>
|
|
98
|
+
// Centre: cx, cy, radius: r
|
|
99
|
+
// (m.cx - cy -m.px + py)^2 = r^2 * (m^2 + 1)
|
|
100
|
+
// (m(cx-py) - (cy - py))^2 = r^2 * (m^2 + 1)
|
|
101
|
+
let cx_px = this.center.x.clone().subtract(P.x), cy_py = this.center.y.clone().subtract(P.y), polyLeft = new polynom_1.Polynom('x'), polyRight = new polynom_1.Polynom('x^2+1');
|
|
102
|
+
polyLeft.multiply(cx_px).subtract(cy_py).pow(2);
|
|
103
|
+
polyRight.multiply(this.squareRadius);
|
|
104
|
+
let equ = new equation_1.Equation(polyLeft, polyRight);
|
|
105
|
+
equ.moveLeft().simplify().solve();
|
|
106
|
+
return equ.solutions.map(sol => {
|
|
107
|
+
// h = -m px + py
|
|
108
|
+
let h, equ = new equation_1.Equation('y', 'x');
|
|
109
|
+
if (sol.exact instanceof fraction_1.Fraction) {
|
|
110
|
+
h = P.x.clone().opposed().multiply(sol.exact).add(P.y);
|
|
111
|
+
equ.right.multiply(sol.exact).add(h);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
h = P.x.clone().opposed().multiply(sol.value).add(P.y);
|
|
115
|
+
equ.right.multiply(sol.value).add(h);
|
|
116
|
+
}
|
|
117
|
+
return new line_1.Line(equ);
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
this._tangentsWithSlope = (slope) => {
|
|
121
|
+
// d(C;t)=r => ac1+bc2 + x = +- sqrt(a^2 + b^2)*r
|
|
122
|
+
// x = -ac1-bc2 +- sqrt(a^2 + b^2)*r
|
|
123
|
+
// y = a/bx + h => ax-by + H = 0
|
|
124
|
+
const a = slope.numerator, b = -slope.denominator, c1 = this._center.x.clone(), c2 = this._center.y.clone(), r = this._squareRadius;
|
|
125
|
+
let sq = this._squareRadius.clone().multiply(slope.numerator ** 2 + slope.denominator ** 2), x1 = c1.clone().multiply(a).opposed().subtract(c2.clone().multiply(b)).add(sq.clone().sqrt()), x2 = c1.clone().multiply(a).opposed().subtract(c2.clone().multiply(b)).subtract(sq.clone().sqrt());
|
|
126
|
+
return [new line_1.Line(a, b, x1), new line_1.Line(a, b, x2)];
|
|
127
|
+
};
|
|
15
128
|
this._exists = false;
|
|
16
129
|
if (values !== undefined) {
|
|
17
130
|
this.parse(...values);
|
|
@@ -20,23 +133,28 @@ class Circle {
|
|
|
20
133
|
get center() {
|
|
21
134
|
return this._center;
|
|
22
135
|
}
|
|
23
|
-
get exists() {
|
|
24
|
-
return this._exists;
|
|
25
|
-
}
|
|
26
136
|
get squareRadius() {
|
|
27
137
|
return this._squareRadius;
|
|
28
138
|
}
|
|
139
|
+
get cartesian() {
|
|
140
|
+
return this._cartesian;
|
|
141
|
+
}
|
|
142
|
+
get exists() {
|
|
143
|
+
return this._exists;
|
|
144
|
+
}
|
|
29
145
|
get radius() {
|
|
30
146
|
if (this._squareRadius.isSquare()) {
|
|
31
147
|
return {
|
|
32
148
|
tex: this._squareRadius.clone().sqrt().tex,
|
|
33
149
|
display: this._squareRadius.clone().sqrt().display,
|
|
150
|
+
value: this._squareRadius.clone().sqrt().value
|
|
34
151
|
};
|
|
35
152
|
}
|
|
36
153
|
else {
|
|
37
154
|
return {
|
|
38
155
|
tex: `\\sqrt{${this._squareRadius.tex}}`,
|
|
39
|
-
display: `sqrt(${this._squareRadius.display})
|
|
156
|
+
display: `sqrt(${this._squareRadius.display})`,
|
|
157
|
+
value: this._squareRadius.clone().sqrt().value
|
|
40
158
|
};
|
|
41
159
|
}
|
|
42
160
|
return this._squareRadius;
|
|
@@ -65,12 +183,10 @@ class Circle {
|
|
|
65
183
|
get developed() {
|
|
66
184
|
return this._cartesian.tex;
|
|
67
185
|
}
|
|
186
|
+
// TODO: reformat code for better display.
|
|
68
187
|
get display() {
|
|
69
188
|
return this._cartesian.display;
|
|
70
189
|
}
|
|
71
|
-
get cartesian() {
|
|
72
|
-
return this._cartesian;
|
|
73
|
-
}
|
|
74
190
|
clone() {
|
|
75
191
|
this._center = this._center.clone();
|
|
76
192
|
this._squareRadius = this._squareRadius.clone();
|
|
@@ -85,11 +201,18 @@ class Circle {
|
|
|
85
201
|
return this;
|
|
86
202
|
}
|
|
87
203
|
parse(...values) {
|
|
204
|
+
// Data can be given in these formats:
|
|
205
|
+
// one value, a string -> make it an Equation
|
|
206
|
+
// one value, an Equation
|
|
207
|
+
// one value, a circle -> clone it
|
|
208
|
+
// two values: two points (center and pointThrough)
|
|
209
|
+
// two values: point and Fraction (center and radius)
|
|
210
|
+
// three values: Point, Fraction, Boolean (center, square radius, true)
|
|
88
211
|
this._reset();
|
|
89
212
|
if (typeof values[0] === 'string') {
|
|
90
|
-
this._parseEquation(new
|
|
213
|
+
this._parseEquation(new equation_1.Equation(values[0]));
|
|
91
214
|
}
|
|
92
|
-
else if (values[0] instanceof
|
|
215
|
+
else if (values[0] instanceof equation_1.Equation) {
|
|
93
216
|
this._parseEquation(values[0]);
|
|
94
217
|
}
|
|
95
218
|
else if (values[0] instanceof Circle) {
|
|
@@ -104,12 +227,14 @@ class Circle {
|
|
|
104
227
|
this._parseCenterAndPointThrough(values[0], values[1]);
|
|
105
228
|
}
|
|
106
229
|
}
|
|
107
|
-
else if (values[1] instanceof
|
|
230
|
+
else if (values[1] instanceof fraction_1.Fraction || typeof values[1] === 'number') {
|
|
108
231
|
this._parseCenterAndRadius(values[0], values[1], (typeof values[2] === "boolean") ? values[2] : false);
|
|
109
232
|
}
|
|
110
233
|
}
|
|
234
|
+
// Calculate once the different values.
|
|
111
235
|
if (this._exists) {
|
|
112
236
|
this._calculateCartesian();
|
|
237
|
+
// If the square radius is zero or positive, the circle exists.
|
|
113
238
|
if (this._squareRadius !== undefined && this._squareRadius.isNegative()) {
|
|
114
239
|
this._exists = false;
|
|
115
240
|
}
|
|
@@ -117,7 +242,7 @@ class Circle {
|
|
|
117
242
|
return this;
|
|
118
243
|
}
|
|
119
244
|
_calculateCartesian() {
|
|
120
|
-
this._cartesian = (new
|
|
245
|
+
this._cartesian = (new equation_1.Equation(new polynom_1.Polynom(`(x-(${this._center.x.display}))^2+(y-(${this._center.y.display}))^2`), new polynom_1.Polynom(`${this._squareRadius.display}`))).moveLeft();
|
|
121
246
|
}
|
|
122
247
|
_parseCopyCircle(circle) {
|
|
123
248
|
this._center = circle.center.clone();
|
|
@@ -129,10 +254,10 @@ class Circle {
|
|
|
129
254
|
_parseCenterAndRadius(center, radius, square) {
|
|
130
255
|
this._center = center.clone();
|
|
131
256
|
if (square) {
|
|
132
|
-
this._squareRadius = (new
|
|
257
|
+
this._squareRadius = (new fraction_1.Fraction(radius));
|
|
133
258
|
}
|
|
134
259
|
else {
|
|
135
|
-
this._squareRadius = new
|
|
260
|
+
this._squareRadius = new fraction_1.Fraction(radius).pow(2);
|
|
136
261
|
}
|
|
137
262
|
this._exists = true;
|
|
138
263
|
return this;
|
|
@@ -145,9 +270,12 @@ class Circle {
|
|
|
145
270
|
}
|
|
146
271
|
_parseEquation(equ) {
|
|
147
272
|
this._exists = false;
|
|
273
|
+
// Move everything to the left.
|
|
148
274
|
equ.moveLeft();
|
|
149
275
|
if (equ.degree('x').value === 2 && equ.degree('y').value === 2) {
|
|
276
|
+
// Both must be of degree 2.
|
|
150
277
|
let x2 = equ.left.monomByDegree(2, 'x'), y2 = equ.left.monomByDegree(2, 'y'), x1, y1, c;
|
|
278
|
+
// Both square monoms must have the same coefficient.
|
|
151
279
|
if (x2.coefficient.isEqual(y2.coefficient)) {
|
|
152
280
|
equ.divide(x2.coefficient);
|
|
153
281
|
x1 = equ.left.monomByDegree(1, 'x');
|
|
@@ -161,6 +289,7 @@ class Circle {
|
|
|
161
289
|
this._exists = true;
|
|
162
290
|
}
|
|
163
291
|
else {
|
|
292
|
+
// The circle is not a valid circle
|
|
164
293
|
this._center = null;
|
|
165
294
|
this._squareRadius = null;
|
|
166
295
|
this._exists = false;
|
|
@@ -173,37 +302,6 @@ class Circle {
|
|
|
173
302
|
this.parse(mAB.intersection(mAC).point, A);
|
|
174
303
|
return this;
|
|
175
304
|
}
|
|
176
|
-
relativePosition = (L) => {
|
|
177
|
-
let distance = L.distanceTo(this.center), radius = Math.sqrt(this._squareRadius.value);
|
|
178
|
-
if (distance.value - radius > 0.0000000001) {
|
|
179
|
-
return 0;
|
|
180
|
-
}
|
|
181
|
-
else if (Math.abs(distance.value - radius) < 0.0000000001) {
|
|
182
|
-
return 1;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
return 2;
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
lineIntersection = (L) => {
|
|
189
|
-
let intersectionPoints = [], solX;
|
|
190
|
-
if (this._cartesian === null) {
|
|
191
|
-
return [];
|
|
192
|
-
}
|
|
193
|
-
const equX = this._cartesian.clone(), lineX = L.equation.clone().isolate('x'), lineY = L.equation.clone().isolate('y');
|
|
194
|
-
if (lineX instanceof algebra_1.Equation && lineY instanceof algebra_1.Equation) {
|
|
195
|
-
equX.replaceBy('y', lineY.right).simplify();
|
|
196
|
-
equX.solve();
|
|
197
|
-
for (let x of equX.solutions) {
|
|
198
|
-
if (x.exact === false && isNaN(x.value)) {
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
solX = new coefficients_1.Fraction(x.exact === false ? x.value : x.exact);
|
|
202
|
-
intersectionPoints.push(new point_1.Point(solX.clone(), lineY.right.evaluate(solX)));
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
return intersectionPoints;
|
|
206
|
-
};
|
|
207
305
|
}
|
|
208
306
|
exports.Circle = Circle;
|
|
209
307
|
//# sourceMappingURL=circle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circle.js","sourceRoot":"","sources":["../../../src/maths/geometry/circle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"circle.js","sourceRoot":"","sources":["../../../src/maths/geometry/circle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* This class works for 2d line in a plane.
|
|
3
|
+
*/
|
|
2
4
|
import { Vector } from "./vector";
|
|
3
5
|
import { Point } from "./point";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
+
import { Fraction } from "../coefficients/fraction";
|
|
7
|
+
import { Equation } from "../algebra/equation";
|
|
8
|
+
export declare enum LinePropriety {
|
|
6
9
|
None = 0,
|
|
7
10
|
Parallel = "parallel",
|
|
8
11
|
Perpendicular = "perpendicular",
|
|
@@ -43,6 +46,11 @@ export declare class Line {
|
|
|
43
46
|
set d(value: Vector);
|
|
44
47
|
get slope(): Fraction;
|
|
45
48
|
get height(): Fraction;
|
|
49
|
+
/**
|
|
50
|
+
* Parse data to a line
|
|
51
|
+
* @param {any} values
|
|
52
|
+
* @returns {Line}
|
|
53
|
+
*/
|
|
46
54
|
parse: (...values: unknown[]) => Line;
|
|
47
55
|
parseEquation: (equ: Equation) => Line;
|
|
48
56
|
parseByCoefficient: (a: Fraction | number, b: Fraction | number, c: Fraction | number) => Line;
|
|
@@ -71,4 +79,3 @@ export declare class Line {
|
|
|
71
79
|
getValueAtY: (value: Fraction | number) => Fraction;
|
|
72
80
|
canonicalAsFloatCoefficient(decimals: number): string;
|
|
73
81
|
}
|
|
74
|
-
export {};
|