pimath 0.0.31 → 0.0.34

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 (117) hide show
  1. package/dist/pi.js +6530 -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.js +2 -0
  34. package/esm/main.js.map +1 -1
  35. package/esm/maths/algebra/equation.d.ts +62 -17
  36. package/esm/maths/algebra/equation.js +597 -502
  37. package/esm/maths/algebra/equation.js.map +1 -1
  38. package/esm/maths/algebra/linearSystem.js +154 -101
  39. package/esm/maths/algebra/linearSystem.js.map +1 -1
  40. package/esm/maths/algebra/logicalset.d.ts +11 -0
  41. package/esm/maths/algebra/logicalset.js +18 -6
  42. package/esm/maths/algebra/logicalset.js.map +1 -1
  43. package/esm/maths/algebra/monom.d.ts +144 -0
  44. package/esm/maths/algebra/monom.js +626 -398
  45. package/esm/maths/algebra/monom.js.map +1 -1
  46. package/esm/maths/algebra/polynom.d.ts +49 -0
  47. package/esm/maths/algebra/polynom.js +995 -712
  48. package/esm/maths/algebra/polynom.js.map +1 -1
  49. package/esm/maths/algebra/rational.d.ts +12 -0
  50. package/esm/maths/algebra/rational.js +97 -82
  51. package/esm/maths/algebra/rational.js.map +1 -1
  52. package/esm/maths/coefficients/fraction.d.ts +18 -0
  53. package/esm/maths/coefficients/fraction.js +390 -332
  54. package/esm/maths/coefficients/fraction.js.map +1 -1
  55. package/esm/maths/coefficients/nthroot.d.ts +3 -0
  56. package/esm/maths/coefficients/nthroot.js +48 -33
  57. package/esm/maths/coefficients/nthroot.js.map +1 -1
  58. package/esm/maths/expressions/numexp.js +11 -3
  59. package/esm/maths/expressions/numexp.js.map +1 -1
  60. package/esm/maths/expressions/polynomexp.bkp.js +93 -93
  61. package/esm/maths/expressions/polynomexp.bkp.js.map +1 -1
  62. package/esm/maths/expressions/polynomexp.js +22 -9
  63. package/esm/maths/expressions/polynomexp.js.map +1 -1
  64. package/esm/maths/geometry/circle.d.ts +18 -6
  65. package/esm/maths/geometry/circle.js +139 -42
  66. package/esm/maths/geometry/circle.js.map +1 -1
  67. package/esm/maths/geometry/line.d.ts +9 -2
  68. package/esm/maths/geometry/line.js +245 -188
  69. package/esm/maths/geometry/line.js.map +1 -1
  70. package/esm/maths/geometry/point.d.ts +12 -0
  71. package/esm/maths/geometry/point.js +121 -73
  72. package/esm/maths/geometry/point.js.map +1 -1
  73. package/esm/maths/geometry/triangle.d.ts +22 -0
  74. package/esm/maths/geometry/triangle.js +197 -158
  75. package/esm/maths/geometry/triangle.js.map +1 -1
  76. package/esm/maths/geometry/vector.d.ts +4 -0
  77. package/esm/maths/geometry/vector.js +139 -115
  78. package/esm/maths/geometry/vector.js.map +1 -1
  79. package/esm/maths/numeric.d.ts +17 -0
  80. package/esm/maths/numeric.js +40 -0
  81. package/esm/maths/numeric.js.map +1 -1
  82. package/esm/maths/random/randomCore.js +15 -15
  83. package/esm/maths/random/randomCore.js.map +1 -1
  84. package/esm/maths/random/rndFraction.d.ts +3 -0
  85. package/esm/maths/random/rndFraction.js +19 -16
  86. package/esm/maths/random/rndFraction.js.map +1 -1
  87. package/esm/maths/random/rndHelpers.d.ts +17 -0
  88. package/esm/maths/random/rndHelpers.js +20 -0
  89. package/esm/maths/random/rndHelpers.js.map +1 -1
  90. package/esm/maths/random/rndMonom.d.ts +3 -0
  91. package/esm/maths/random/rndMonom.js +33 -26
  92. package/esm/maths/random/rndMonom.js.map +1 -1
  93. package/esm/maths/random/rndPolynom.d.ts +3 -0
  94. package/esm/maths/random/rndPolynom.js +49 -37
  95. package/esm/maths/random/rndPolynom.js.map +1 -1
  96. package/esm/maths/shutingyard.d.ts +21 -0
  97. package/esm/maths/shutingyard.js +86 -9
  98. package/esm/maths/shutingyard.js.map +1 -1
  99. package/package.json +2 -2
  100. package/public/index.html +47 -0
  101. package/src/maths/algebra/equation.ts +142 -128
  102. package/src/maths/algebra/monom.ts +6 -2
  103. package/src/maths/algebra/polynom.ts +2 -7
  104. package/src/maths/geometry/circle.ts +168 -75
  105. package/src/maths/geometry/line.ts +1 -1
  106. package/src/maths/geometry/point.ts +25 -2
  107. package/src/maths/numeric.ts +15 -0
  108. package/tests/algebra/polynom.test.ts +7 -0
  109. package/tests/geometry/circle.test.ts +33 -0
  110. package/tsconfig.json +2 -2
  111. package/webpack-production-min.config.js +26 -0
  112. package/webpack-production.config.js +1 -1
  113. package/dev/pi.js +0 -5392
  114. package/dev/pi.js.map +0 -1
  115. package/esm/maths/numexp.d.ts +0 -16
  116. package/esm/maths/numexp.js +0 -119
  117. package/esm/maths/numexp.js.map +0 -1
@@ -11,35 +11,30 @@ class PolynomExpFactor {
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
  }
@@ -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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"}
@@ -3,23 +3,37 @@ import { Fraction } from "../coefficients";
3
3
  import { Equation } from "../algebra";
4
4
  import { Line } from "./line";
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
  }
@@ -4,14 +4,126 @@ exports.Circle = void 0;
4
4
  const point_1 = require("./point");
5
5
  const coefficients_1 = require("../coefficients");
6
6
  const algebra_1 = require("../algebra");
7
+ const line_1 = require("./line");
7
8
  const vector_1 = require("./vector");
8
9
  const triangle_1 = require("./triangle");
10
+ const numeric_1 = require("../numeric");
9
11
  class Circle {
10
- _center;
11
- _squareRadius;
12
- _cartesian;
13
- _exists;
14
12
  constructor(...values) {
13
+ /**
14
+ * Get the relative position between circle and line. It corresponds to the number of intersection.
15
+ * @param {Line} L
16
+ * @returns {number}
17
+ */
18
+ this.relativePosition = (L) => {
19
+ let distance = L.distanceTo(this.center), radius = Math.sqrt(this._squareRadius.value);
20
+ if (distance.value - radius > 0.0000000001) {
21
+ return 0; // external
22
+ }
23
+ else if (Math.abs(distance.value - radius) < 0.0000000001) {
24
+ return 1; // tangent
25
+ }
26
+ else {
27
+ return 2; // external
28
+ }
29
+ };
30
+ this.lineIntersection = (L) => {
31
+ let intersectionPoints = [], solX;
32
+ if (this._cartesian === null) {
33
+ return [];
34
+ }
35
+ const equX = this._cartesian.clone(), lineX = L.equation.clone().isolate('x'), lineY = L.equation.clone().isolate('y');
36
+ if (lineX instanceof algebra_1.Equation && lineY instanceof algebra_1.Equation) {
37
+ equX.replaceBy('y', lineY.right).simplify();
38
+ equX.solve();
39
+ for (let x of equX.solutions) {
40
+ if (x.exact === false && isNaN(x.value)) {
41
+ continue;
42
+ }
43
+ solX = new coefficients_1.Fraction(x.exact === false ? x.value : x.exact);
44
+ intersectionPoints.push(new point_1.Point(solX.clone(), lineY.right.evaluate(solX)));
45
+ }
46
+ }
47
+ return intersectionPoints;
48
+ };
49
+ this.tangents = (P) => {
50
+ if (P instanceof coefficients_1.Fraction) {
51
+ return this._tangentsWithSlope(P);
52
+ }
53
+ else if (this.isPointOnCircle(P)) {
54
+ return this._tangentsThroughOnePointOnTheCircle(P);
55
+ }
56
+ else if (this.center.distanceTo(P).value > this.radius.value) {
57
+ //TODO: Must check it's outside the circle
58
+ return this._tangentsThroughOnePointOutsideTheCircle(P);
59
+ }
60
+ else {
61
+ console.log('No tangents as the point is inside !');
62
+ }
63
+ return [];
64
+ };
65
+ this.isPointOnCircle = (P) => {
66
+ return this._cartesian.test({ x: P.x, y: P.y });
67
+ };
68
+ this.getPointsOnCircle = (numberIsInteger) => {
69
+ if (numberIsInteger === undefined) {
70
+ numberIsInteger = false;
71
+ }
72
+ // It means searching for pythagorician triples that make a perfect square.
73
+ // (x-4)^2 + (y+3)^2 = 15
74
+ let triplets = numeric_1.Numeric.pythagoricianTripletsWithTarget(this._squareRadius.value, true);
75
+ let points = [], pt;
76
+ triplets.forEach(triplet => {
77
+ // Allow positive / negative values
78
+ // x-a = t => x = a + t
79
+ // x-a = -t => x = a - t
80
+ for (let k of [[1, 1], [-1, 1], [-1, -1], [1, -1]]) {
81
+ pt = new point_1.Point(this.center.x.clone().add(k[0] * triplet[0]), this.center.y.clone().add(k[1] * triplet[1]));
82
+ // Check if the point is not already in points.
83
+ if (!pt.isInListOfPoints(points)) {
84
+ points.push(pt);
85
+ }
86
+ }
87
+ });
88
+ return points;
89
+ };
90
+ this._tangentsThroughOnePointOnTheCircle = (P) => {
91
+ let CT = new vector_1.Vector(this._center, P);
92
+ return [new line_1.Line(P, CT, line_1.LinePropriety.Perpendicular)];
93
+ };
94
+ this._tangentsThroughOnePointOutsideTheCircle = (P) => {
95
+ // y = mx + h
96
+ // px, py => h = -m px + py => mx - y -m.px + py = 0 =>
97
+ // Centre: cx, cy, radius: r
98
+ // (m.cx - cy -m.px + py)^2 = r^2 * (m^2 + 1)
99
+ // (m(cx-py) - (cy - py))^2 = r^2 * (m^2 + 1)
100
+ let cx_px = this.center.x.clone().subtract(P.x), cy_py = this.center.y.clone().subtract(P.y), polyLeft = new algebra_1.Polynom('x'), polyRight = new algebra_1.Polynom('x^2+1');
101
+ polyLeft.multiply(cx_px).subtract(cy_py).pow(2);
102
+ polyRight.multiply(this.squareRadius);
103
+ let equ = new algebra_1.Equation(polyLeft, polyRight);
104
+ equ.moveLeft().simplify().solve();
105
+ return equ.solutions.map(sol => {
106
+ // h = -m px + py
107
+ let h, equ = new algebra_1.Equation('y', 'x');
108
+ if (sol.exact instanceof coefficients_1.Fraction) {
109
+ h = P.x.clone().opposed().multiply(sol.exact).add(P.y);
110
+ equ.right.multiply(sol.exact).add(h);
111
+ }
112
+ else {
113
+ h = P.x.clone().opposed().multiply(sol.value).add(P.y);
114
+ equ.right.multiply(sol.value).add(h);
115
+ }
116
+ return new line_1.Line(equ);
117
+ });
118
+ };
119
+ this._tangentsWithSlope = (slope) => {
120
+ // d(C;t)=r => ac1+bc2 + x = +- sqrt(a^2 + b^2)*r
121
+ // x = -ac1-bc2 +- sqrt(a^2 + b^2)*r
122
+ // y = a/bx + h => ax-by + H = 0
123
+ const a = slope.numerator, b = -slope.denominator, c1 = this._center.x.clone(), c2 = this._center.y.clone(), r = this._squareRadius;
124
+ 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());
125
+ return [new line_1.Line(a, b, x1), new line_1.Line(a, b, x2)];
126
+ };
15
127
  this._exists = false;
16
128
  if (values !== undefined) {
17
129
  this.parse(...values);
@@ -20,23 +132,28 @@ class Circle {
20
132
  get center() {
21
133
  return this._center;
22
134
  }
23
- get exists() {
24
- return this._exists;
25
- }
26
135
  get squareRadius() {
27
136
  return this._squareRadius;
28
137
  }
138
+ get cartesian() {
139
+ return this._cartesian;
140
+ }
141
+ get exists() {
142
+ return this._exists;
143
+ }
29
144
  get radius() {
30
145
  if (this._squareRadius.isSquare()) {
31
146
  return {
32
147
  tex: this._squareRadius.clone().sqrt().tex,
33
148
  display: this._squareRadius.clone().sqrt().display,
149
+ value: this._squareRadius.clone().sqrt().value
34
150
  };
35
151
  }
36
152
  else {
37
153
  return {
38
154
  tex: `\\sqrt{${this._squareRadius.tex}}`,
39
- display: `sqrt(${this._squareRadius.display})`
155
+ display: `sqrt(${this._squareRadius.display})`,
156
+ value: this._squareRadius.clone().sqrt().value
40
157
  };
41
158
  }
42
159
  return this._squareRadius;
@@ -65,12 +182,10 @@ class Circle {
65
182
  get developed() {
66
183
  return this._cartesian.tex;
67
184
  }
185
+ // TODO: reformat code for better display.
68
186
  get display() {
69
187
  return this._cartesian.display;
70
188
  }
71
- get cartesian() {
72
- return this._cartesian;
73
- }
74
189
  clone() {
75
190
  this._center = this._center.clone();
76
191
  this._squareRadius = this._squareRadius.clone();
@@ -85,6 +200,13 @@ class Circle {
85
200
  return this;
86
201
  }
87
202
  parse(...values) {
203
+ // Data can be given in these formats:
204
+ // one value, a string -> make it an Equation
205
+ // one value, an Equation
206
+ // one value, a circle -> clone it
207
+ // two values: two points (center and pointThrough)
208
+ // two values: point and Fraction (center and radius)
209
+ // three values: Point, Fraction, Boolean (center, square radius, true)
88
210
  this._reset();
89
211
  if (typeof values[0] === 'string') {
90
212
  this._parseEquation(new algebra_1.Equation(values[0]));
@@ -108,8 +230,10 @@ class Circle {
108
230
  this._parseCenterAndRadius(values[0], values[1], (typeof values[2] === "boolean") ? values[2] : false);
109
231
  }
110
232
  }
233
+ // Calculate once the different values.
111
234
  if (this._exists) {
112
235
  this._calculateCartesian();
236
+ // If the square radius is zero or positive, the circle exists.
113
237
  if (this._squareRadius !== undefined && this._squareRadius.isNegative()) {
114
238
  this._exists = false;
115
239
  }
@@ -145,9 +269,12 @@ class Circle {
145
269
  }
146
270
  _parseEquation(equ) {
147
271
  this._exists = false;
272
+ // Move everything to the left.
148
273
  equ.moveLeft();
149
274
  if (equ.degree('x').value === 2 && equ.degree('y').value === 2) {
275
+ // Both must be of degree 2.
150
276
  let x2 = equ.left.monomByDegree(2, 'x'), y2 = equ.left.monomByDegree(2, 'y'), x1, y1, c;
277
+ // Both square monoms must have the same coefficient.
151
278
  if (x2.coefficient.isEqual(y2.coefficient)) {
152
279
  equ.divide(x2.coefficient);
153
280
  x1 = equ.left.monomByDegree(1, 'x');
@@ -161,6 +288,7 @@ class Circle {
161
288
  this._exists = true;
162
289
  }
163
290
  else {
291
+ // The circle is not a valid circle
164
292
  this._center = null;
165
293
  this._squareRadius = null;
166
294
  this._exists = false;
@@ -173,37 +301,6 @@ class Circle {
173
301
  this.parse(mAB.intersection(mAC).point, A);
174
302
  return this;
175
303
  }
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
304
  }
208
305
  exports.Circle = Circle;
209
306
  //# 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
+ /**
2
+ * This class works for 2d line in a plane.
3
+ */
1
4
  import { Fraction } from "../coefficients";
2
5
  import { Vector } from "./vector";
3
6
  import { Point } from "./point";
4
7
  import { Equation } from "../algebra";
5
- declare enum LinePropriety {
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 {};