diff --git a/assets/html/homepage.html b/assets/html/homepage.html index 0390a8c..4283676 100644 --- a/assets/html/homepage.html +++ b/assets/html/homepage.html @@ -77,6 +77,7 @@ function addString(message) { mathField.write(message); + postLaTex(); } function delString() { diff --git a/lib/src/mathmodel.dart b/lib/src/mathmodel.dart index 98cb653..4d60b06 100644 --- a/lib/src/mathmodel.dart +++ b/lib/src/mathmodel.dart @@ -98,40 +98,48 @@ class MatrixModel with ChangeNotifier { bool _isRadMode; bool single = true; bool square = true; - Matrix matrix; - bool get result => _result.last; + num get result => _result.last; void updateExpression(String expression) { _matrixExpression.last = expression; - final mp = MatrixParser(_matrixExpression.last, precision: _precision); - matrix = mp.parse(); + final mp = MatrixParser(_matrixExpression.last); + mp.tokenize(); + mp.matrixParse(); single = mp.single; square = mp.square; notifyListeners(); } void calc() { + final mp = MatrixParser(_matrixExpression.last, precision: _precision); + Matrix matrix = mp.parse(); _result.last = matrix; - _matrixExpression.add(_matrixExpression.last); + _keepExpression(_result.last); _result.add(_result.last); } void norm() { + final mp = MatrixParser(_matrixExpression.last, precision: _precision); + Matrix matrix = mp.parse(); _result.last = matrix.det(); - _matrixExpression.add(_matrixExpression.last); + _matrixExpression.add(''); _result.add(_result.last); } void transpose() { + final mp = MatrixParser(_matrixExpression.last, precision: _precision); + Matrix matrix = mp.parse(); _result.last = matrix.transpose(); - _matrixExpression.add(_matrixExpression.last); + _keepExpression(_result.last); _result.add(_result.last); } void invert() { + final mp = MatrixParser(_matrixExpression.last, precision: _precision); + Matrix matrix = mp.parse(); _result.last = matrix.inverse(); - _matrixExpression.add(_matrixExpression.last); + _keepExpression(_result.last); _result.add(_result.last); } @@ -145,6 +153,16 @@ class MatrixModel with ChangeNotifier { return matrixString; } + void _keepExpression(Matrix inputMatrix) { + List matrixRows = []; + for (var i = 0; i < inputMatrix.m; i++) { + matrixRows.add(inputMatrix[i].join('&')); + } + String matrixString = matrixRows.join(r'\\'); + matrixString = r'\begin{bmatrix}' + matrixString + r'\end{bmatrix}'; + _matrixExpression.add(matrixString); + } + void changeSetting({int precision, bool isRadMode}) { this._precision = precision; this._isRadMode = isRadMode;