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.
Files changed (165) hide show
  1. package/dist/pi.js +6468 -1
  2. package/dist/pi.js.map +1 -1
  3. package/dist/pi.min.js +2 -0
  4. package/dist/pi.min.js.map +1 -0
  5. package/docs/assets/search.js +1 -1
  6. package/docs/classes/algebra.Equation.html +9 -9
  7. package/docs/classes/algebra.LinearSystem.html +1 -1
  8. package/docs/classes/algebra.Logicalset.html +2 -2
  9. package/docs/classes/algebra.Monom.html +37 -37
  10. package/docs/classes/algebra.Polynom.html +10 -10
  11. package/docs/classes/algebra.PolynomExpFactor.html +1 -1
  12. package/docs/classes/algebra.PolynomExpProduct.html +1 -1
  13. package/docs/classes/algebra.Rational.html +2 -2
  14. package/docs/classes/coefficients.Fraction.html +4 -4
  15. package/docs/classes/coefficients.Nthroot.html +1 -1
  16. package/docs/classes/geometry.Circle.html +2 -2
  17. package/docs/classes/geometry.Line.html +2 -2
  18. package/docs/classes/geometry.Point.html +1 -1
  19. package/docs/classes/geometry.Triangle.html +5 -5
  20. package/docs/classes/geometry.Vector.html +1 -1
  21. package/docs/classes/numeric.Numeric.html +5 -5
  22. package/docs/classes/shutingyard.Shutingyard.html +4 -4
  23. package/docs/enums/geometry.LinePropriety.html +1 -0
  24. package/docs/enums/shutingyard.ShutingyardMode.html +1 -1
  25. package/docs/enums/shutingyard.ShutingyardType.html +1 -1
  26. package/docs/interfaces/geometry.remarquableLines.html +1 -1
  27. package/docs/modules/algebra.html +1 -1
  28. package/docs/modules/coefficients.html +1 -1
  29. package/docs/modules/geometry.html +1 -1
  30. package/docs/modules/random.Random.html +1 -1
  31. package/docs/modules/random.html +1 -1
  32. package/docs/modules/shutingyard.html +1 -1
  33. package/esm/main.d.ts +41 -1
  34. package/esm/main.js +34 -20
  35. package/esm/main.js.map +1 -1
  36. package/esm/maths/algebra/equation.d.ts +63 -18
  37. package/esm/maths/algebra/equation.js +599 -503
  38. package/esm/maths/algebra/equation.js.map +1 -1
  39. package/esm/maths/algebra/linearSystem.d.ts +1 -1
  40. package/esm/maths/algebra/linearSystem.js +157 -104
  41. package/esm/maths/algebra/linearSystem.js.map +1 -1
  42. package/esm/maths/algebra/logicalset.d.ts +11 -0
  43. package/esm/maths/algebra/logicalset.js +18 -6
  44. package/esm/maths/algebra/logicalset.js.map +1 -1
  45. package/esm/maths/algebra/monom.d.ts +142 -1
  46. package/esm/maths/algebra/monom.js +633 -405
  47. package/esm/maths/algebra/monom.js.map +1 -1
  48. package/esm/maths/algebra/polynom.d.ts +52 -3
  49. package/esm/maths/algebra/polynom.js +1003 -720
  50. package/esm/maths/algebra/polynom.js.map +1 -1
  51. package/esm/maths/algebra/rational.d.ts +13 -1
  52. package/esm/maths/algebra/rational.js +98 -83
  53. package/esm/maths/algebra/rational.js.map +1 -1
  54. package/esm/maths/coefficients/fraction.d.ts +18 -0
  55. package/esm/maths/coefficients/fraction.js +390 -332
  56. package/esm/maths/coefficients/fraction.js.map +1 -1
  57. package/esm/maths/coefficients/nthroot.d.ts +3 -0
  58. package/esm/maths/coefficients/nthroot.js +48 -33
  59. package/esm/maths/coefficients/nthroot.js.map +1 -1
  60. package/esm/maths/expressions/numexp.js +13 -5
  61. package/esm/maths/expressions/numexp.js.map +1 -1
  62. package/esm/maths/expressions/polynomexp.bkp.d.ts +2 -2
  63. package/esm/maths/expressions/polynomexp.bkp.js +95 -95
  64. package/esm/maths/expressions/polynomexp.bkp.js.map +1 -1
  65. package/esm/maths/expressions/polynomexp.d.ts +2 -2
  66. package/esm/maths/expressions/polynomexp.js +27 -14
  67. package/esm/maths/expressions/polynomexp.js.map +1 -1
  68. package/esm/maths/geometry/circle.d.ts +20 -8
  69. package/esm/maths/geometry/circle.js +148 -50
  70. package/esm/maths/geometry/circle.js.map +1 -1
  71. package/esm/maths/geometry/line.d.ts +11 -4
  72. package/esm/maths/geometry/line.js +251 -193
  73. package/esm/maths/geometry/line.js.map +1 -1
  74. package/esm/maths/geometry/point.d.ts +13 -1
  75. package/esm/maths/geometry/point.js +124 -76
  76. package/esm/maths/geometry/point.js.map +1 -1
  77. package/esm/maths/geometry/triangle.d.ts +23 -1
  78. package/esm/maths/geometry/triangle.js +197 -158
  79. package/esm/maths/geometry/triangle.js.map +1 -1
  80. package/esm/maths/geometry/vector.d.ts +5 -1
  81. package/esm/maths/geometry/vector.js +139 -115
  82. package/esm/maths/geometry/vector.js.map +1 -1
  83. package/esm/maths/numeric.d.ts +17 -0
  84. package/esm/maths/numeric.js +40 -0
  85. package/esm/maths/numeric.js.map +1 -1
  86. package/esm/maths/{random/index.d.ts → randomization/random.d.ts} +3 -2
  87. package/esm/maths/{random/index.js → randomization/random.js} +6 -2
  88. package/esm/maths/randomization/random.js.map +1 -0
  89. package/esm/maths/{random → randomization}/randomCore.d.ts +0 -0
  90. package/esm/maths/randomization/randomCore.js +22 -0
  91. package/esm/maths/randomization/randomCore.js.map +1 -0
  92. package/esm/maths/{random → randomization}/rndFraction.d.ts +4 -1
  93. package/esm/maths/randomization/rndFraction.js +40 -0
  94. package/esm/maths/randomization/rndFraction.js.map +1 -0
  95. package/esm/maths/randomization/rndHelpers.d.ts +25 -0
  96. package/esm/maths/{random → randomization}/rndHelpers.js +20 -0
  97. package/esm/maths/randomization/rndHelpers.js.map +1 -0
  98. package/esm/maths/{random → randomization}/rndMonom.d.ts +4 -1
  99. package/esm/maths/randomization/rndMonom.js +53 -0
  100. package/esm/maths/randomization/rndMonom.js.map +1 -0
  101. package/esm/maths/{random → randomization}/rndPolynom.d.ts +4 -1
  102. package/esm/maths/randomization/rndPolynom.js +75 -0
  103. package/esm/maths/randomization/rndPolynom.js.map +1 -0
  104. package/esm/maths/{random → randomization}/rndTypes.d.ts +0 -0
  105. package/esm/maths/{random → randomization}/rndTypes.js +0 -0
  106. package/esm/maths/randomization/rndTypes.js.map +1 -0
  107. package/esm/maths/shutingyard.d.ts +21 -0
  108. package/esm/maths/shutingyard.js +86 -9
  109. package/esm/maths/shutingyard.js.map +1 -1
  110. package/package.json +2 -2
  111. package/public/index.html +47 -0
  112. package/src/main.ts +17 -15
  113. package/src/maths/algebra/equation.ts +144 -129
  114. package/src/maths/algebra/linearSystem.ts +2 -2
  115. package/src/maths/algebra/monom.ts +1 -1
  116. package/src/maths/algebra/polynom.ts +136 -136
  117. package/src/maths/algebra/rational.ts +1 -1
  118. package/src/maths/expressions/numexp.ts +1 -1
  119. package/src/maths/expressions/polynomexp.bkp.ts +2 -2
  120. package/src/maths/expressions/polynomexp.ts +2 -2
  121. package/src/maths/geometry/circle.ts +172 -77
  122. package/src/maths/geometry/line.ts +4 -3
  123. package/src/maths/geometry/point.ts +26 -3
  124. package/src/maths/geometry/triangle.ts +1 -1
  125. package/src/maths/geometry/vector.ts +1 -1
  126. package/src/maths/numeric.ts +15 -0
  127. package/src/maths/{random/index.ts → randomization/random.ts} +3 -2
  128. package/src/maths/{random → randomization}/randomCore.ts +0 -0
  129. package/src/maths/{random → randomization}/rndFraction.ts +2 -2
  130. package/src/maths/{random → randomization}/rndHelpers.ts +0 -0
  131. package/src/maths/{random → randomization}/rndMonom.ts +2 -2
  132. package/src/maths/{random → randomization}/rndPolynom.ts +3 -3
  133. package/src/maths/{random → randomization}/rndTypes.ts +0 -0
  134. package/tests/algebra/monom.test.ts +1 -1
  135. package/tests/algebra/polynom.test.ts +8 -9
  136. package/tests/geometry/circle.test.ts +33 -0
  137. package/tsconfig.json +2 -2
  138. package/webpack-production-min.config.js +26 -0
  139. package/webpack-production.config.js +1 -1
  140. package/dev/pi.js +0 -5392
  141. package/dev/pi.js.map +0 -1
  142. package/esm/maths/algebra/index.d.ts +0 -7
  143. package/esm/maths/algebra/index.js +0 -20
  144. package/esm/maths/algebra/index.js.map +0 -1
  145. package/esm/maths/coefficients/index.d.ts +0 -2
  146. package/esm/maths/coefficients/index.js +0 -15
  147. package/esm/maths/coefficients/index.js.map +0 -1
  148. package/esm/maths/geometry/index.d.ts +0 -5
  149. package/esm/maths/geometry/index.js +0 -18
  150. package/esm/maths/geometry/index.js.map +0 -1
  151. package/esm/maths/random/index.js.map +0 -1
  152. package/esm/maths/random/randomCore.js +0 -22
  153. package/esm/maths/random/randomCore.js.map +0 -1
  154. package/esm/maths/random/rndFraction.js +0 -37
  155. package/esm/maths/random/rndFraction.js.map +0 -1
  156. package/esm/maths/random/rndHelpers.d.ts +0 -8
  157. package/esm/maths/random/rndHelpers.js.map +0 -1
  158. package/esm/maths/random/rndMonom.js +0 -46
  159. package/esm/maths/random/rndMonom.js.map +0 -1
  160. package/esm/maths/random/rndPolynom.js +0 -63
  161. package/esm/maths/random/rndPolynom.js.map +0 -1
  162. package/esm/maths/random/rndTypes.js.map +0 -1
  163. package/src/maths/algebra/index.ts +0 -7
  164. package/src/maths/coefficients/index.ts +0 -2
  165. 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 algebra_1 = require("../algebra");
5
- const coefficients_1 = require("../coefficients");
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 algebra_1.Polynom(polynom);
9
- this._degree = new coefficients_1.Fraction(degree === undefined ? 1 : degree);
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 coefficients_1.Fraction().one();
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":"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"}
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
- get cartesian(): Equation;
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 coefficients_1 = require("../coefficients");
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 algebra_1.Equation(values[0]));
213
+ this._parseEquation(new equation_1.Equation(values[0]));
91
214
  }
92
- else if (values[0] instanceof algebra_1.Equation) {
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 coefficients_1.Fraction || typeof values[1] === 'number') {
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 algebra_1.Equation(new algebra_1.Polynom(`(x-(${this._center.x.display}))^2+(y-(${this._center.y.display}))^2`), new algebra_1.Polynom(`${this._squareRadius.display}`))).moveLeft();
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 coefficients_1.Fraction(radius));
257
+ this._squareRadius = (new fraction_1.Fraction(radius));
133
258
  }
134
259
  else {
135
- this._squareRadius = new coefficients_1.Fraction(radius).pow(2);
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
- import { Fraction } from "../coefficients";
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 { Equation } from "../algebra";
5
- declare enum LinePropriety {
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 {};