pimath 0.0.26 → 0.0.30

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 (65) hide show
  1. package/dev/index.html +15 -7
  2. package/dev/pi.js +251 -98
  3. package/dev/pi.js.map +1 -1
  4. package/dist/pi.js +1 -1
  5. package/dist/pi.js.map +1 -1
  6. package/docs/assets/search.js +1 -1
  7. package/docs/classes/algebra.Equation.html +9 -9
  8. package/docs/classes/algebra.LinearSystem.html +1 -1
  9. package/docs/classes/algebra.Logicalset.html +2 -2
  10. package/docs/classes/algebra.Monom.html +45 -44
  11. package/docs/classes/algebra.Polynom.html +9 -9
  12. package/docs/classes/algebra.Rational.html +2 -2
  13. package/docs/classes/coefficients.Fraction.html +6 -6
  14. package/docs/classes/coefficients.Nthroot.html +1 -1
  15. package/docs/classes/geometry.Circle.html +1 -1
  16. package/docs/classes/geometry.Line.html +2 -2
  17. package/docs/classes/geometry.Point.html +1 -1
  18. package/docs/classes/geometry.Triangle.html +5 -5
  19. package/docs/classes/geometry.Vector.html +1 -1
  20. package/docs/classes/numeric.Numeric.html +5 -5
  21. package/docs/classes/shutingyard.Shutingyard.html +5 -5
  22. package/docs/interfaces/geometry.remarquableLines.html +1 -1
  23. package/docs/modules/algebra.html +1 -1
  24. package/docs/modules/random.Random.html +1 -1
  25. package/docs/modules/random.html +1 -1
  26. package/esm/main.js +2 -0
  27. package/esm/main.js.map +1 -1
  28. package/esm/maths/algebra/logicalset.js +1 -1
  29. package/esm/maths/algebra/logicalset.js.map +1 -1
  30. package/esm/maths/algebra/monom.d.ts +2 -1
  31. package/esm/maths/algebra/monom.js +7 -1
  32. package/esm/maths/algebra/monom.js.map +1 -1
  33. package/esm/maths/algebra/rational.d.ts +1 -1
  34. package/esm/maths/algebra/rational.js +2 -2
  35. package/esm/maths/algebra/rational.js.map +1 -1
  36. package/esm/maths/geometry/line.d.ts +1 -0
  37. package/esm/maths/geometry/line.js +3 -0
  38. package/esm/maths/geometry/line.js.map +1 -1
  39. package/esm/maths/geometry/vector.js +7 -2
  40. package/esm/maths/geometry/vector.js.map +1 -1
  41. package/esm/maths/numexp.d.ts +16 -0
  42. package/esm/maths/numexp.js +119 -0
  43. package/esm/maths/numexp.js.map +1 -0
  44. package/esm/maths/shutingyard.d.ts +21 -4
  45. package/esm/maths/shutingyard.js +76 -76
  46. package/esm/maths/shutingyard.js.map +1 -1
  47. package/package.json +1 -1
  48. package/src/main.ts +2 -0
  49. package/src/maths/algebra/logicalset.ts +2 -2
  50. package/src/maths/algebra/monom.ts +35 -22
  51. package/src/maths/algebra/rational.ts +1 -1
  52. package/src/maths/geometry/line.ts +3 -0
  53. package/src/maths/geometry/vector.ts +10 -2
  54. package/src/maths/numexp.ts +138 -0
  55. package/src/maths/shutingyard.ts +94 -97
  56. package/tests/algebra/monom.test.ts +1 -1
  57. package/tests/numexp.test.ts +27 -0
  58. package/tests/shutingyard.test.ts +3 -3
  59. package/tsconfig.json +0 -1
  60. package/esm/docs.d.ts +0 -6
  61. package/esm/docs.js +0 -7
  62. package/esm/docs.js.map +0 -1
  63. package/esm/maths/random/random.d.ts +0 -13
  64. package/esm/maths/random/random.js +0 -27
  65. package/esm/maths/random/random.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numexp.js","sourceRoot":"","sources":["../../src/maths/numexp.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,34 @@ declare type tokenType = {
2
2
  [key: string]: {
3
3
  precedence: number;
4
4
  associative: string;
5
+ type: string;
5
6
  };
6
7
  };
8
+ export declare const tokenConstant: {
9
+ [Key: string]: number;
10
+ };
11
+ export declare enum ShutingyardType {
12
+ VARIABLE = "variable",
13
+ COEFFICIENT = "coefficient",
14
+ OPERATION = "operation",
15
+ CONSTANT = "constant",
16
+ FUNCTION = "function",
17
+ MONOM = "monom"
18
+ }
19
+ export declare enum ShutingyardMode {
20
+ POLYNOM = "polynom",
21
+ SET = "set",
22
+ NUMERIC = "numeric"
23
+ }
7
24
  export declare class Shutingyard {
8
25
  private _rpn;
9
- readonly _mode: 'polynom' | 'set';
26
+ readonly _mode: ShutingyardMode;
10
27
  private _tokenConfig;
28
+ private _tokenConstant;
11
29
  private _uniformize;
12
- constructor(mode?: 'polynom' | 'set');
13
- isOperation(token: string): boolean;
30
+ private _tokenKeys;
31
+ constructor(mode?: ShutingyardMode);
14
32
  tokenConfigInitialization(): tokenType;
15
- NextToken2(expr: string, start: number): [string, number, string];
16
33
  NextToken(expr: string, start: number): [string, number, string];
17
34
  Uniformizer(expr: string): string;
18
35
  parse(expr: string, operators?: string[]): Shutingyard;
@@ -1,48 +1,79 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Shutingyard = void 0;
3
+ exports.Shutingyard = exports.ShutingyardMode = exports.ShutingyardType = exports.tokenConstant = void 0;
4
+ exports.tokenConstant = {
5
+ pi: Math.PI,
6
+ e: Math.exp(1)
7
+ };
8
+ var ShutingyardType;
9
+ (function (ShutingyardType) {
10
+ ShutingyardType["VARIABLE"] = "variable";
11
+ ShutingyardType["COEFFICIENT"] = "coefficient";
12
+ ShutingyardType["OPERATION"] = "operation";
13
+ ShutingyardType["CONSTANT"] = "constant";
14
+ ShutingyardType["FUNCTION"] = "function";
15
+ ShutingyardType["MONOM"] = "monom";
16
+ })(ShutingyardType = exports.ShutingyardType || (exports.ShutingyardType = {}));
17
+ var ShutingyardMode;
18
+ (function (ShutingyardMode) {
19
+ ShutingyardMode["POLYNOM"] = "polynom";
20
+ ShutingyardMode["SET"] = "set";
21
+ ShutingyardMode["NUMERIC"] = "numeric";
22
+ })(ShutingyardMode = exports.ShutingyardMode || (exports.ShutingyardMode = {}));
4
23
  class Shutingyard {
5
24
  _rpn = [];
6
25
  _mode;
7
26
  _tokenConfig;
27
+ _tokenConstant;
8
28
  _uniformize;
29
+ _tokenKeys;
9
30
  constructor(mode) {
10
- this._mode = typeof mode === 'undefined' ? 'polynom' : mode;
31
+ this._mode = typeof mode === 'undefined' ? ShutingyardMode.POLYNOM : mode;
11
32
  this.tokenConfigInitialization();
12
33
  }
13
- isOperation(token) {
14
- if (token[0].match(/[+\-*/^]/g)) {
15
- return true;
16
- }
17
- return false;
18
- }
19
34
  tokenConfigInitialization() {
20
- if (this._mode === 'set') {
35
+ if (this._mode === ShutingyardMode.SET) {
21
36
  this._tokenConfig = {
22
- '&': { precedence: 3, associative: 'left' },
23
- '|': { precedence: 3, associative: 'left' },
24
- '!': { precedence: 4, associative: 'right' },
25
- '-': { precedence: 2, associative: 'left' }
37
+ '&': { precedence: 3, associative: 'left', type: ShutingyardType.OPERATION },
38
+ '|': { precedence: 3, associative: 'left', type: ShutingyardType.OPERATION },
39
+ '!': { precedence: 4, associative: 'right', type: ShutingyardType.OPERATION },
40
+ '-': { precedence: 2, associative: 'left', type: ShutingyardType.OPERATION }
41
+ };
42
+ this._uniformize = false;
43
+ }
44
+ else if (this._mode === ShutingyardMode.NUMERIC) {
45
+ this._tokenConfig = {
46
+ '^': { precedence: 4, associative: 'right', type: ShutingyardType.OPERATION },
47
+ '*': { precedence: 3, associative: 'left', type: ShutingyardType.OPERATION },
48
+ '/': { precedence: 3, associative: 'left', type: ShutingyardType.OPERATION },
49
+ '+': { precedence: 2, associative: 'left', type: ShutingyardType.OPERATION },
50
+ '-': { precedence: 2, associative: 'left', type: ShutingyardType.OPERATION },
51
+ '%': { precedence: 3, associative: 'right', type: ShutingyardType.OPERATION },
52
+ 'sin': { precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION },
53
+ 'cos': { precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION },
54
+ 'tan': { precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION },
55
+ 'sqrt': { precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION },
26
56
  };
27
57
  this._uniformize = false;
28
58
  }
29
59
  else {
30
60
  this._tokenConfig = {
31
- '^': { precedence: 4, associative: 'right' },
32
- '*': { precedence: 3, associative: 'left' },
33
- '/': { precedence: 3, associative: 'left' },
34
- '+': { precedence: 2, associative: 'left' },
35
- '-': { precedence: 2, associative: 'left' },
36
- '%': { precedence: 3, associative: 'right' },
37
- 'sin': { precedence: 4, associative: 'right' },
38
- 'cos': { precedence: 4, associative: 'right' },
39
- 'tab': { precedence: 4, associative: 'right' },
61
+ '^': { precedence: 4, associative: 'right', type: ShutingyardType.OPERATION },
62
+ '*': { precedence: 3, associative: 'left', type: ShutingyardType.OPERATION },
63
+ '/': { precedence: 3, associative: 'left', type: ShutingyardType.OPERATION },
64
+ '+': { precedence: 2, associative: 'left', type: ShutingyardType.OPERATION },
65
+ '-': { precedence: 2, associative: 'left', type: ShutingyardType.OPERATION },
66
+ '%': { precedence: 3, associative: 'right', type: ShutingyardType.OPERATION },
67
+ 'sin': { precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION },
68
+ 'cos': { precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION },
69
+ 'tan': { precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION },
40
70
  };
41
71
  this._uniformize = true;
42
72
  }
73
+ this._tokenKeys = Object.keys(this._tokenConfig).sort((a, b) => b.length - a.length);
43
74
  return this._tokenConfig;
44
75
  }
45
- NextToken2(expr, start) {
76
+ NextToken(expr, start) {
46
77
  let token, tokenType;
47
78
  token = '';
48
79
  tokenType = '';
@@ -59,75 +90,43 @@ class Shutingyard {
59
90
  tokenType = 'function-argument';
60
91
  }
61
92
  else {
62
- const keys = Object.keys(this._tokenConfig).sort((a, b) => b.length - a.length);
63
- for (let key of keys) {
64
- if (expr.substr(start, key.length) === key) {
93
+ for (let key of this._tokenKeys) {
94
+ if (expr.substring(start, start + key.length) === key) {
95
+ token += key;
96
+ tokenType = this._tokenConfig[key].type;
97
+ break;
98
+ }
99
+ }
100
+ for (let key in exports.tokenConstant) {
101
+ if (expr.substring(start, start + key.length) === key) {
65
102
  token += key;
66
- tokenType = 'operation';
103
+ tokenType = ShutingyardType.CONSTANT;
67
104
  break;
68
105
  }
69
106
  }
70
107
  if (token === '') {
71
108
  if (expr[start].match(/[0-9]/)) {
72
- token = expr.substr(start).match(/^([0-9.,/]+)/)[0];
73
- tokenType = 'coefficient';
109
+ if (this._mode === ShutingyardMode.POLYNOM) {
110
+ token = expr.substring(start).match(/^([0-9.,/]+)/)[0];
111
+ }
112
+ else {
113
+ token = expr.substring(start).match(/^([0-9.,]+)/)[0];
114
+ }
115
+ tokenType = ShutingyardType.COEFFICIENT;
74
116
  }
75
117
  else if (expr[start].match(/[a-zA-Z]/)) {
76
- token = expr.substr(start).match(/^([a-zA-Z])/)[0];
77
- tokenType = 'variable';
118
+ token = expr.substring(start).match(/^([a-zA-Z])/)[0];
119
+ tokenType = ShutingyardType.VARIABLE;
78
120
  }
79
121
  else {
80
122
  console.log('Unidentified token', expr[start], expr, start);
81
123
  token = expr[start];
82
- tokenType = 'monom';
124
+ tokenType = ShutingyardType.MONOM;
83
125
  }
84
126
  }
85
127
  }
86
128
  return [token, start + token.length, tokenType];
87
129
  }
88
- NextToken(expr, start) {
89
- let tokenMatch, token, tokenType;
90
- this.NextToken2(expr, start);
91
- tokenMatch = (expr.substr(start).match(/^[0-9/a-zA-Z^]+/g)) || [];
92
- if (expr.substr(start, start + 3).match(/^(sin|cos|tan)/g)) {
93
- token = expr.substr(start, 3);
94
- tokenType = 'function';
95
- }
96
- else if (tokenMatch.length > 0) {
97
- token = tokenMatch[0];
98
- tokenType = 'monom';
99
- }
100
- else if (expr[start].match(/[+\-*/^]/g)) {
101
- token = expr[start];
102
- tokenType = 'operation';
103
- }
104
- else if (expr[start].match(/[&|!]/g)) {
105
- token = expr[start];
106
- tokenType = 'operation';
107
- }
108
- else if (expr[start] === '(') {
109
- token = '(';
110
- tokenType = '(';
111
- }
112
- else if (expr[start] === ')') {
113
- token = ')';
114
- tokenType = ')';
115
- }
116
- else if (expr[start] === ',') {
117
- token = ',';
118
- tokenType = 'function-argument';
119
- }
120
- else {
121
- token = tokenMatch[0];
122
- tokenType = 'monom';
123
- if (token === '') {
124
- token = expr[start];
125
- tokenType = 'monom';
126
- console.log('SHUTING YARD - NEXT TOKEN: error at ', start);
127
- }
128
- }
129
- return [token, start + token.length, tokenType];
130
- }
131
130
  Uniformizer(expr) {
132
131
  if (!this._uniformize) {
133
132
  return expr;
@@ -155,11 +154,12 @@ class Shutingyard {
155
154
  console.log('SECURITY LEVEL 1 EXIT');
156
155
  break;
157
156
  }
158
- [token, tokenPos, tokenType] = this.NextToken2(expr, tokenPos);
157
+ [token, tokenPos, tokenType] = this.NextToken(expr, tokenPos);
159
158
  switch (tokenType) {
160
159
  case 'monom':
161
160
  case 'coefficient':
162
161
  case 'variable':
162
+ case 'constant':
163
163
  outQueue.push({
164
164
  token,
165
165
  tokenType
@@ -1 +1 @@
1
- {"version":3,"file":"shutingyard.js","sourceRoot":"","sources":["../../src/maths/shutingyard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shutingyard.js","sourceRoot":"","sources":["../../src/maths/shutingyard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pimath",
3
- "version": "0.0.26",
3
+ "version": "0.0.30",
4
4
  "description": "A math library for teacher :)",
5
5
  "scripts": {
6
6
  "test": "mocha -r ts-node/register 'tests/**/*.test.ts'",
package/src/main.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import {Numeric} from "./maths/numeric";
2
+ import {NumExp} from "./maths/numexp";
2
3
  import {Shutingyard} from "./maths/shutingyard";
3
4
  import {Random} from "./maths/random";
4
5
  import {Fraction, Nthroot} from "./maths/coefficients";
@@ -10,6 +11,7 @@ import {Line, Circle, Triangle, Point, Vector} from "./maths/geometry";
10
11
  (<any>window).Pi = {
11
12
  ShutingYard: Shutingyard,
12
13
  Numeric: Numeric,
14
+ NumExp: NumExp,
13
15
  Fraction: Fraction,
14
16
  Root: Nthroot,
15
17
  Monom: Monom,
@@ -3,7 +3,7 @@
3
3
  * @module Logicalset
4
4
  */
5
5
 
6
- import {Shutingyard} from '../shutingyard';
6
+ import {Shutingyard, ShutingyardMode} from '../shutingyard';
7
7
 
8
8
  /**
9
9
  * Polynom class can handle polynoms, reorder, resolve, ...
@@ -30,7 +30,7 @@ import {Shutingyard} from '../shutingyard';
30
30
  // TODO: Must format the value string to convert some items...
31
31
 
32
32
  // Parse the updated value to the shutingyard algorithm
33
- this._rpn = new Shutingyard('set').parse(value).rpn;
33
+ this._rpn = new Shutingyard(ShutingyardMode.SET).parse(value).rpn;
34
34
 
35
35
  return this;
36
36
  }
@@ -1,7 +1,5 @@
1
1
  /***
2
2
  * Monom class
3
- * Defined as coefficient * literal
4
- * Examples: 3x^2, 3/5x^2, ...
5
3
  */
6
4
  import {Fraction} from "../coefficients";
7
5
  import {Numeric} from "../numeric";
@@ -16,8 +14,10 @@ export class Monom {
16
14
  private _literal: literalType;
17
15
 
18
16
  /**
19
- * Create the monom object.
20
- * @param value (optional) string
17
+ * Create a Monom
18
+ * Defined as \\(k \\cdot x^{n}\\), where \\( k,n \in \\mathbb{Q}\\).
19
+ * Examples: \\(3x^2\\) or \\(3/5x^2\\)
20
+ * @param value (optional) string The value that should be parse. Can be a Monom, a Fraction, a string or a number. If nothing is provided, it will return the trivial monom (0).
21
21
  */
22
22
  constructor(value?: unknown) {
23
23
  this.zero();
@@ -34,29 +34,35 @@ export class Monom {
34
34
  // Getter and setter
35
35
  // ------------------------------------------
36
36
  /**
37
- * Get the coefficient as fraction
37
+ * Get the coefficient \\(k\\) of the Monom \\(k\\cdot x^{n}\\)
38
+ * @returns {Fraction}
38
39
  */
39
40
  get coefficient(): Fraction {
40
41
  return this._coefficient;
41
42
  }
42
43
 
43
44
  /**
44
- * Set the coefficient value of the monom
45
- * @param F Fraction
45
+ * Set the coefficient \\(k\\) value of the monom
46
+ * @param {Fraction | number | string} F
46
47
  */
47
- set coefficient(F: Fraction) {
48
- this._coefficient = F;
48
+ set coefficient(F: Fraction | number | string) {
49
+ this._coefficient = new Fraction(F);
49
50
  }
50
51
 
51
52
  /**
52
- * Get the literal part, as dictionary
53
+ * Get the literal part of \\(x^{n_1}y^{n_2}\\) as dictionary \\[\\begin{array}{ll}x&=n_1\\\\y&=n_2\\end{array}\\]
54
+ * @returns {literalType}
53
55
  */
54
56
  get literal(): literalType {
55
57
  return this._literal;
56
58
  }
57
59
 
60
+ /**
61
+ * Get the literal square roots of the Monom.
62
+ * TODO: remove this getter ? Is it used and is it correct ?
63
+ * @returns {literalType}
64
+ */
58
65
  get literalSqrt(): literalType {
59
-
60
66
  if (this.isLiteralSquare()) {
61
67
  let L: literalType = {}
62
68
  for (let key in this._literal) {
@@ -69,8 +75,8 @@ export class Monom {
69
75
  }
70
76
 
71
77
  /**
72
- * Set the literal part of the monom
73
- * @param L Literal part as dictionary: <setLetter: exposant>
78
+ * Set the literal part of the monom. Must be a dictionary {x: Fraction, y: Fraction, ...}
79
+ * @param {literalType} L
74
80
  */
75
81
  set literal(L: literalType) {
76
82
  this._literal = L;
@@ -230,11 +236,18 @@ export class Monom {
230
236
  * Display the monom, forcing the '+' sign to appear
231
237
  */
232
238
  get displayWithSign(): string {
233
- // TODO: Rename or remove this getter ?
234
239
  let d: String = this.display;
235
240
  return (d[0] !== '-' ? '+' : '') + d;
236
241
  }
237
242
 
243
+ get texWithSign(): string {
244
+ if (this.coefficient.isStrictlyPositive()) {
245
+ return '+' + this.tex
246
+ }
247
+
248
+ return this.tex
249
+ }
250
+
238
251
  /**
239
252
  * Get the tex output of the monom
240
253
  */
@@ -281,15 +294,15 @@ export class Monom {
281
294
  */
282
295
  parse = (inputStr: unknown): Monom => {
283
296
 
284
- if(typeof inputStr === 'string') {
297
+ if (typeof inputStr === 'string') {
285
298
  this._shutingYardToReducedMonom(inputStr)
286
- }else if(typeof inputStr ==='number') {
299
+ } else if (typeof inputStr === 'number') {
287
300
  this._coefficient = new Fraction(inputStr)
288
301
  this._literal = {}
289
- }else if(inputStr instanceof Fraction) {
302
+ } else if (inputStr instanceof Fraction) {
290
303
  this._coefficient = inputStr.clone()
291
304
  this._literal = {}
292
- }else if(inputStr instanceof Monom){
305
+ } else if (inputStr instanceof Monom) {
293
306
  this._coefficient = inputStr._coefficient.clone()
294
307
  this._literal = this.copyLiterals(inputStr.literal)
295
308
  }
@@ -384,7 +397,7 @@ export class Monom {
384
397
  };
385
398
 
386
399
  copyLiterals = (literal: literalType): literalType => {
387
- let L:literalType = {}
400
+ let L: literalType = {}
388
401
 
389
402
  for (let k in literal) {
390
403
  L[k] = literal[k].clone()
@@ -392,7 +405,7 @@ export class Monom {
392
405
  return L
393
406
  }
394
407
 
395
- makeSame = (M: Monom):Monom => {
408
+ makeSame = (M: Monom): Monom => {
396
409
  // Copy the literal parts.
397
410
  for (let k in M._literal) {
398
411
  this.setLetter(k, M._literal[k].clone());
@@ -451,7 +464,7 @@ export class Monom {
451
464
  add = (...M: Monom[]): Monom => {
452
465
  for (let m of M) {
453
466
  if (this.isSameAs(m)) {
454
- if(this.isZero()){
467
+ if (this.isZero()) {
455
468
  this.makeSame(m)
456
469
  }
457
470
  this._coefficient.add(m.coefficient);
@@ -469,7 +482,7 @@ export class Monom {
469
482
  subtract = (...M: Monom[]): Monom => {
470
483
  for (let m of M) {
471
484
  if (this.isSameAs(m)) {
472
- if(this.isZero()){
485
+ if (this.isZero()) {
473
486
  this.makeSame(m)
474
487
  }
475
488
  this._coefficient.add(m.clone().coefficient.opposed());
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import {Polynom} from "./polynom";
7
- import {Fraction} from "../coefficients/fraction";
7
+ import {Fraction} from "../coefficients";
8
8
 
9
9
  /**
10
10
  * Rational class can handle rational polynoms
@@ -312,6 +312,9 @@ export class Line {
312
312
  isSameAs = (line: Line): Boolean => {
313
313
  return this.slope.isEqual(line.slope) && this.height.isEqual(line.height);
314
314
  }
315
+ isVertical = (): Boolean => {
316
+ return this.slope.isInfinity()
317
+ }
315
318
  simplify = (): Line => {
316
319
  let lcm = Numeric.lcm(this._a.denominator, this._b.denominator, this._c.denominator),
317
320
  gcd = Numeric.gcd(this._a.numerator, this._b.numerator, this._c.numerator);
@@ -81,12 +81,20 @@ export class Vector {
81
81
  }
82
82
 
83
83
  // Fractions or a number are give
84
- if (values[0].isFraction || !isNaN(values[0])) {
84
+ if (values[0] instanceof Fraction || !isNaN(values[0])) {
85
85
  this._x = new Fraction(values[0])
86
86
  }
87
- if (values[1].isFraction || !isNaN(values[1])) {
87
+ if (values[1] instanceof Fraction || !isNaN(values[1])) {
88
88
  this._y = new Fraction(values[1])
89
89
  }
90
+
91
+ if(
92
+ (typeof values[0] === 'object' && !isNaN(values[0].x) && !isNaN(values[0].x)) &&
93
+ (typeof values[1] === 'object' && !isNaN(values[1].x) && !isNaN(values[1].x))
94
+ ){
95
+ this._x = new Fraction(+values[1].x-values[0].x)
96
+ this._y = new Fraction(+values[1].y-values[0].y)
97
+ }
90
98
  }
91
99
 
92
100
  return this;