{"version":3,"sources":["webpack:///./src/components/mathematics/matrices/matrix_utils.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./src/components/mathematics/matrices/multiplication/Multiplication.vue?4376","webpack:///./src/components/mathematics/matrices/multiplication/Multiplication.vue","webpack:///./src/components/mathematics/matrices/multiplication/Boxes.js","webpack:///src/components/mathematics/matrices/multiplication/Multiplication.vue","webpack:///./src/components/mathematics/matrices/multiplication/Multiplication.vue?e926","webpack:///./src/components/mathematics/matrices/multiplication/Multiplication.vue?991d"],"names":["getRandomInt","low","high","Math","floor","random","createRandomFriendlyMatrixWithSize","rows","cols","matrix","r","c","push","value","createRandomFriendlyMatrix","drawMatrixBrackets","board","position","scale","numRows","numCols","suspend","i","topLeft","topLeftInner","topRight","topRightInner","bottomRight","bottomRightInner","bottomLeft","bottomLeftInner","horzLeft1","horzRight1","horzLeft2","horzRight2","vertTop1","vertBot1","vert2","objectList","trackedSegment","points","attributes","_step","jsxPoints","_iterator","_createForOfIteratorHelper","s","n","done","point","jsxPoint","create","withLabel","fixed","visible","err","e","f","bracketAttributes","color","highlight","separatorAttributes","strokeWidth","dash","suspendUpdate","_objectSpread","unsuspendUpdate","drawMatrix","onElementSelect","arguments","length","undefined","onElementLeave","labelMatrixAssignment","dx","dy","_drawMatrixBrackets","_drawMatrixBrackets2","_slicedToArray","anchorX","anchorY","CssStyle","display","fontSize","round","canvasWidth","matrixElementTextProperties","textLabels","_loop","rr","_loop2","text","String","cc","on","this","setAttribute","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","call","next","Object","_nonIterableRest","TypeError","unsupportedIterableToArray","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","ref","attrs","staticClass","_v","render","staticRenderFns","Matmul","left","right","leftRows","leftCols","rightRows","rightCols","j","v","k","MatrixMultiplicationExploration","_this","_defineProperty","object","removeObject","nrow","ncol","b","matrixComponentLabel","register","matrixNameLabelProperties","centerOffset","McenterOffset","AOffset","BOffset","MOffset","matrix1","matrix2","matrixSum","_drawMatrix","_drawMatrix2","matrix1Objects","matrix1Labels","_drawMatrix3","_drawMatrix4","matrix2Objects","matrix2Labels","commonHighlightBoxProperties","vertices","borders","leftRowRects","rightColRects","lastHoverR","lastHoverC","updateComponent","m","mLabel","highLightColor","highlightFontAttributes","setText","concat","clearComponent","clearFontAttributes","_drawMatrix5","_drawMatrix6","matrixSumObjects","matrixSumLabels","options","layer","placeTitle","shuffle","shuffleFunction","deleteProblem","makeProblem","MatrixMultiplicationAssessment","_this2","clearInputFields","nRows","inputs","nCols","result","isCorrect","Value","answers","setInputFieldAnswerColor","_drawMatrix7","_drawMatrix8","_drawMatrix9","_drawMatrix10","x","y","input","cssStyle","parse","assessmentScale","ok1","cross1","tryMe","markInteractive","check","checkInputs","Boxes","box1a","brd1","JXG","JSXGraph","initBoard","boundingbox","keepaspectratio","axis","ticks","grid","showCopyright","showNavigation","pan","enabled","zoom","makeResponsive","oneTimeSetup","box1b","name","created","$store","commit","title","newTopics","img","action","goto","newshowhome","newMath","newLeftArrow","newModule","mounted","MathJax","Hub","Queue","metaInfo","titleTemplate","meta","content","component"],"mappings":"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","file":"js/chunk-ab77da7a.2bed069f.js","sourcesContent":["export function getRandomInt(low, high)\r\n{\r\n return Math.floor(Math.random() * (high - low + 1)) + low;\r\n}\r\n\r\nexport function createRandomFriendlyMatrixWithSize(rows, cols)\r\n{\r\n let matrix = [];\r\n // Do not use non-integer values in matrices, and keep the magnitudes\r\n // small.\r\n let r = 0;\r\n for (r = 0; r < rows; ++r) {\r\n let c = 0;\r\n matrix.push([]);\r\n for (c = 0; c < cols; ++c) {\r\n const value = getRandomInt(-15, 15);\r\n matrix[r].push(value);\r\n }\r\n }\r\n\r\n return matrix;\r\n}\r\n\r\nexport function createRandomFriendlyMatrix()\r\n{\r\n // Do not make the matrix too big.\r\n const rows = getRandomInt(2, 3);\r\n const cols = getRandomInt(2, 3);\r\n\r\n return createRandomFriendlyMatrixWithSize(rows, cols);\r\n}\r\n\r\nexport function drawMatrixBrackets(board, position, scale, numRows, numCols, suspend)\r\n{\r\n let i = 0;\r\n\r\n // A quick explanation of the various components and sizes:\r\n // position[0], position[1] is the center of the top left component\r\n // scale is the total width and total height of a component.\r\n\r\n const topLeft =\r\n [\r\n position[0] - scale / 2.0,\r\n position[1] + scale / 2.0\r\n ];\r\n\r\n const topLeftInner =\r\n [\r\n position[0] - scale / 2.0 + scale / 4.0,\r\n position[1] + scale / 2.0\r\n ];\r\n\r\n const topRight =\r\n [\r\n position[0] + scale * numCols - scale / 2.0,\r\n position[1] + scale / 2.0\r\n ];\r\n\r\n const topRightInner =\r\n [\r\n position[0] + scale * numCols - scale / 2.0 - scale / 4.0,\r\n position[1] + scale / 2.0\r\n ];\r\n\r\n const bottomRight =\r\n [\r\n position[0] + scale * numCols - scale / 2.0,\r\n position[1] - scale * numRows + scale / 2.0\r\n ];\r\n\r\n const bottomRightInner =\r\n [\r\n position[0] + scale * numCols - scale / 2.0 - scale / 4.0,\r\n position[1] - scale * numRows + scale / 2.0\r\n ];\r\n\r\n const bottomLeft =\r\n [\r\n position[0] - scale / 2.0,\r\n position[1] - scale * numRows + scale / 2.0\r\n ];\r\n\r\n const bottomLeftInner =\r\n [\r\n position[0] - scale / 2.0 + scale/4.0,\r\n position[1] - scale * numRows + scale / 2.0\r\n ];\r\n\r\n const horzLeft1 =\r\n [\r\n position[0]-0.5*scale,\r\n position[1] - scale * numRows + 1.5*scale\r\n ];\r\n\r\n const horzRight1 =\r\n [\r\n position[0] + scale*numCols -0.5*scale,\r\n position[1] - scale * numRows + 1.5*scale\r\n ];\r\n\r\n const horzLeft2 =\r\n [\r\n position[0]-0.5*scale,\r\n position[1] - scale * numRows + 2.5*scale\r\n ];\r\n\r\n const horzRight2 =\r\n [\r\n position[0] + scale*numCols -0.5*scale,\r\n position[1] - scale * numRows + 2.5*scale\r\n ];\r\n\r\n const vertTop1 =\r\n [\r\n position[0]+0.5*scale,\r\n position[1]+0.5*scale\r\n ];\r\n\r\n const vertBot1 =\r\n [\r\n position[0]+0.5*scale,\r\n position[1] - scale * numRows + 0.5*scale\r\n ];\r\n\r\n const topY = position[1] + 0.5*scale;\r\n const bottomY = position[1] - scale * numRows + 0.5*scale\r\n\r\n const vert2 = [\r\n [\r\n position[0]+scale*numCols -1.5*scale,\r\n position[1] + 0.5*scale\r\n ],\r\n [\r\n position[0]+scale*numCols -1.5*scale,\r\n position[1] - scale * numRows + 0.5*scale\r\n ]\r\n ];\r\n\r\n let objectList = [];\r\n\r\n let trackedSegment = function(points, attributes) {\r\n let jsxPoints = [];\r\n for (const point of points) {\r\n let jsxPoint = board.create('point', point, {\r\n withLabel: false,\r\n fixed: true,\r\n visible: false\r\n });\r\n jsxPoints.push(jsxPoint);\r\n objectList.push(jsxPoint);\r\n }\r\n objectList.push(board.create('segment', jsxPoints, attributes));\r\n }\r\n\r\n const bracketAttributes = {\r\n fixed: true,\r\n color: 'black',\r\n highlight: false\r\n };\r\n\r\n const separatorAttributes = {\r\n // visible: () => numRows > 1 && i == 1,\r\n strokeWidth: 1,\r\n dash: 1,\r\n fixed: true,\r\n color: 'black',\r\n highlight: false\r\n }\r\n\r\n if (suspend) {\r\n board.suspendUpdate();\r\n }\r\n\r\n trackedSegment([vertBot1, vertTop1], {...separatorAttributes, visible:()=>numCols>1&&i==1});\r\n trackedSegment(vert2, {...separatorAttributes, visible:()=>numCols>2&&i==1});\r\n\r\n trackedSegment([horzLeft1, horzRight1], {...separatorAttributes, visible:()=>numRows>1&&i==1});\r\n trackedSegment([horzLeft2, horzRight2], {...separatorAttributes, visible:()=>numRows>2&&i==1});\r\n\r\n // Left bracket for matrix elements '['.\r\n trackedSegment([bottomLeft, topLeft], bracketAttributes);\r\n trackedSegment([bottomLeft, bottomLeftInner], bracketAttributes);\r\n trackedSegment([topLeft, topLeftInner], bracketAttributes);\r\n\r\n // Right bracket for matrix elements ']'.\r\n trackedSegment([bottomRight, topRight], bracketAttributes);\r\n trackedSegment([bottomRight, bottomRightInner], bracketAttributes);\r\n trackedSegment([topRight, topRightInner], bracketAttributes);\r\n\r\n if (suspend) {\r\n board.unsuspendUpdate();\r\n }\r\n\r\n return [objectList, i];\r\n}\r\n\r\nexport function drawMatrix(board, position, scale, matrix, onElementSelect = null, onElementLeave = null, labelMatrixAssignment = false)\r\n{\r\n const dx = scale;\r\n const dy = scale;\r\n const numRows = matrix.length;\r\n const numCols = matrix[0].length;\r\n\r\n board.suspendUpdate();\r\n let [objectList, i] = drawMatrixBrackets(board, position, scale, numRows, numCols, false);\r\n\r\n if (labelMatrixAssignment) {\r\n objectList.push(board.create('text',\r\n [\r\n position[0] - scale,\r\n position[1] - scale * numRows / 2.0 + scale / 2.0,\r\n \"M =\"\r\n ],\r\n {\r\n anchorX: 'right', anchorY: 'middle', fixed: true,\r\n CssStyle: 'fontFamily: Oswald',\r\n display: 'internal',\r\n highlight:false,\r\n fontSize: () => Math.round(18*board.canvasWidth/500.),\r\n }\r\n ));\r\n }\r\n\r\n const matrixElementTextProperties = {\r\n anchorX: 'middle',\r\n anchorY: 'middle',\r\n CssStyle: 'fontFamily: Oswald',\r\n display: 'internal',\r\n color: 'grey',\r\n fontSize: () => Math.round(18*board.canvasWidth/500.),\r\n fixed: true,\r\n highlight: false,\r\n };\r\n\r\n let r = 0;\r\n let textLabels = []\r\n for (r = 0; r < numRows; ++r) {\r\n let c = 0;\r\n const rr = r;\r\n textLabels.push([]);\r\n for (c = 0; c < numCols; ++c) {\r\n const value = matrix[r][c];\r\n let text = board.create('text',\r\n [position[0] + c * dx,\r\n position[1] - r * dy,\r\n String(value)],\r\n matrixElementTextProperties,\r\n );\r\n const cc = c;\r\n text.on('over', function () {\r\n // this.setAttribute({ color: 'black' });\r\n if (onElementSelect) {\r\n i = 1;\r\n onElementSelect(matrix, rr, cc, text);\r\n }\r\n });\r\n text.on('out', function() {\r\n this.setAttribute({ color: 'grey' });\r\n if (onElementLeave) {\r\n i = 0;\r\n onElementLeave(matrix, rr, cc, text);\r\n }\r\n }); \r\n objectList.push(text);\r\n textLabels[r].push(text);\r\n }\r\n }\r\n board.unsuspendUpdate();\r\n\r\n return [objectList, textLabels];\r\n}\r\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiplication.vue?vue&type=style&index=0&id=543928c8&prod&lang=scss&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('h3',{ref:\"matmul\"},[_vm._v(\"\\n Matrix Multiplication\\n \")]),_c('p',[_vm._v(\"\\n In this lesson, we will explore how to multiply two matrices together.\\n \")]),_c('p',[_vm._v(\"\\n Unlike matrix addition, matrix multiplication does not require that the\\n matrices are the same size. In order to multiply matrices together, the\\n number of columns of the left hand side matrix must match the number of\\n rows of the right hand side matrix. The resulting matrix has the number\\n of rows of the left hand side matrix and the number of columns of the\\n right hand side matrix.\\n \")]),_vm._m(0),_c('p',[_vm._v(\"\\n Unlike multiplication with regular numbers,\\n swapping the order of the operands changes the result during matrix\\n multiplication, and in fact the answer may not even exist for some\\n combinations!\\n \")]),_c('p',[_vm._v(\"\\n Another difference is that the multiplication symbol isn't used between\\n the matrices to be multiplied -- instead they are just placed close\\n together.\\n \")]),_c('p',[_vm._v(\"\\n Let's look at a pair of example matrices.\\n \\\\(\\\\mathbf{A}\\\\), is a matrix\\n containing 2 rows and 2 columns.\\n $$\\n \\\\mathbf{A} =\\n \\\\begin{bmatrix}\\n 0 & 1 \\\\\\\\\\n 8 & 4 \\\\\\\\\\n \\\\end{bmatrix}\\n $$\\n \\\\(\\\\mathbf{B}\\\\) is a matrix containing 3 rows and 2 columns.\\n $$\\n \\\\mathbf{B} = \\\\begin{bmatrix}\\n 1 & 4 \\\\\\\\\\n -1 & 1 \\\\\\\\\\n 3 & 8 \\\\\\\\\\n \\\\end{bmatrix}\\n $$\\n \")]),_c('p',[_vm._v(\"\\n We'll try to compute \\\\(\\\\mathbf{M} = \\\\mathbf{AB}\\\\).\\n Since \\\\(\\\\mathbf{A}\\\\) has 2 columns and \\\\(\\\\mathbf{B}\\\\) has 3 rows, they cannot be multiplied in this order.\\n \")]),_c('p',[_vm._v(\"\\n Instead let's try \\\\(\\\\mathbf{P} = \\\\mathbf{BA}\\\\).\\n The left hand side is now \\\\(\\\\mathbf{B}\\\\) with 2 columns and the right\\n hand side \\\\(\\\\mathbf{A}\\\\) has 2 rows, so this is allowed. We expect the\\n result to have 3 rows (from \\\\(\\\\mathbf{B}\\\\)) and 2 columns (from\\n \\\\(\\\\mathbf{A}\\\\)). The answer is then given by:\\n $$\\n \\\\begin{align}\\n \\\\mathbf{M} = \\\\mathbf{BA} &= \\\\begin{bmatrix}\\n 1 & 4 \\\\\\\\\\n -1 & 1 \\\\\\\\\\n 3 & 8 \\\\\\\\\\n \\\\end{bmatrix}\\n\\n \\\\begin{bmatrix}\\n 0 & 1 \\\\\\\\\\n 8 & 4 \\\\\\\\\\n \\\\end{bmatrix}\\n \\\\\\\\\\n &=\\n \\\\begin{bmatrix}\\n 1 \\\\cdot 0 + 4 \\\\cdot 8 & 1 \\\\cdot 1 + 4 \\\\cdot 4 \\\\\\\\\\n -1 \\\\cdot 0 + 1 \\\\cdot 8 & -1 \\\\cdot 1 + 1 \\\\cdot 4 \\\\\\\\\\n 3 \\\\cdot 0 + 8 \\\\cdot 8 & 3 \\\\cdot 1 + 8 \\\\cdot 4 \\\\\\\\\\n \\\\end{bmatrix}\\n \\\\\\\\\\n &=\\n \\\\begin{bmatrix}\\n 32 & 17 \\\\\\\\\\n 8 & 3 \\\\\\\\\\n 64 & 35 \\\\\\\\\\n \\\\end{bmatrix}\\n \\\\end{align}\\n $$\\n \")]),_c('h3',{ref:\"magicgraph\"},[_vm._v(\"\\n MagicGraph | Components of a Matrix\\n \")]),_c('p',[_vm._v(\"\\n This MagicGraph offers interactive practice problems for understanding matrix multiplication.\\n \")]),_c('h5',[_vm._v(\" To Get Started: \")]),_c('p',[_vm._v(\"\\n You are given a matrix \\\\(\\\\textbf{M}\\\\) which is the result of multiplying two matrices \\\\(\\\\mathbf{A}\\\\) and \\\\(\\\\mathbf{B}\\\\).\\n Hover over the components of the matrix to see how it was formed from the inputs.\\n \")]),_c('h5',[_vm._v(\" To Explore: \")]),_c('p',[_vm._v(\" Tap on the shuffle button to create different variations of the matrix \\\\(\\\\textbf{M}\\\\) and practice. \")]),_c('v-responsive',[_c('v-layout',{attrs:{\"justify-center\":\"\"}},[_c('div',{staticClass:\"edliy-box-about\",attrs:{\"id\":\"jxgbox1\"}})])],1),_c('h3',{ref:\"magicgraph\"},[_vm._v(\"\\n MagicGraph | Test Your Knowledge\\n \")]),_c('p',[_vm._v(\"\\n This MagicGraph offers interactive practice problems to test your knowledge.\\n \")]),_c('h5',[_vm._v(\" To Get Started: \")]),_c('p',[_vm._v(\"\\n You are given a matrix \\\\(\\\\textbf{M}\\\\).\\n Hover over the components of the matrix to see its location (i.e. its row and column) and indices.\\n \")]),_c('h5',[_vm._v(\" To Explore: \")]),_c('p',[_vm._v(\" Tap on the shuffle button to create different variations of the matrix \\\\(\\\\textbf{M}\\\\) and practice. \")]),_c('v-responsive',[_c('v-layout',{attrs:{\"justify-center\":\"\"}},[_c('div',{staticClass:\"edliy-box-about\",attrs:{\"id\":\"jxgbox2\"}})])],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\"\\n If the multiplication is allowed, it proceeds as follows:\\n \"),_c('ol',[_c('li',[_vm._v(\"\\n Look at a single item at the ith row and jth column in the result given by \\\\(\\\\mathbf{M}_{ij}\\\\).\\n \")]),_c('li',[_vm._v(\"\\n Point to the first column of the ith row in the left hand side matrix.\\n \")]),_c('li',[_vm._v(\"\\n Point to the first row of the jth column in the right hand side matrix.\\n \")]),_c('li',[_vm._v(\"\\n Multiply the two numbers that are currently being pointed to.\\n \")]),_c('li',[_vm._v(\"\\n Move the left hand side pointer right to the next column, and at the same\\n time move the right hand side pointer down to the next row.\\n \")]),_c('li',[_vm._v(\"\\n Multiply the two numbers that are currently being pointed to and add this to the previous result.\\n \")]),_c('li',[_vm._v(\"\\n Continue the previous two steps until there are no more rows or\\n columns left (they will hit the end at the same time if you are\\n allowed the multiply the matrices together).\\n \")]),_c('li',[_vm._v(\"\\n Repeat this process for every item in the result matrix.\\n \")])])])\n}]\n\nexport { render, staticRenderFns }","import {\r\n makeResponsive,\r\n placeTitle,\r\n clearInputFields,\r\n setInputFieldAnswerColor,\r\n markInteractive,\r\n} from '../../../../common/edliy_utils';\r\nimport {\r\n getRandomInt,\r\n createRandomFriendlyMatrixWithSize,\r\n drawMatrix,\r\n drawMatrixBrackets,\r\n} from '../matrix_utils';\r\n\r\nfunction Madd(matrix1, matrix2) {\r\n let matrix = [];\r\n let r = 0;\r\n for (r = 0; r < matrix1.length; ++r) {\r\n let c = 0;\r\n matrix.push([]);\r\n for (c = 0; c < matrix1[r].length; ++c) {\r\n let value = matrix1[r][c] + matrix2[r][c];\r\n matrix[r].push(value);\r\n }\r\n }\r\n return matrix;\r\n}\r\n\r\nfunction Matmul(left, right) {\r\n const leftRows = left.length;\r\n const leftCols = left[0].length;\r\n const rightRows = right.length;\r\n const rightCols = right[0].length;\r\n let matrix = [];\r\n\r\n if (leftCols != rightRows) {\r\n return matrix;\r\n }\r\n\r\n let i = 0;\r\n for (i = 0; i < leftRows; ++i) {\r\n let j = 0;\r\n matrix.push([]);\r\n for (j = 0; j < rightCols; ++j) {\r\n let v = 0;\r\n let k = 0;\r\n for (k = 0; k < leftCols; ++k) {\r\n v += (left[i][k] * right[k][j]);\r\n }\r\n matrix[i].push(v);\r\n }\r\n }\r\n\r\n return matrix;\r\n}\r\n\r\nclass MatrixMultiplicationExploration {\r\n constructor(board) {\r\n this.board = board;\r\n this.objectList = [];\r\n }\r\n\r\n register = (object) => {\r\n this.objectList.push(object);\r\n };\r\n\r\n deleteProblem = () => {\r\n this.board.suspendUpdate();\r\n this.board.removeObject(this.objectList);\r\n this.objectList = [];\r\n this.board.unsuspendUpdate();\r\n };\r\n\r\n makeProblem = () => {\r\n const nrow = 2;\r\n const ncol = 2;\r\n\r\n let b = this.board;\r\n\r\n let matrixComponentLabel = b.create('text', [0, 2.25, '(Component)'],\r\n {\r\n visible: false,\r\n anchorX: 'middle', CssStyle: 'fontFamily:Oswald', fontSize: function () { return Math.round(18 * b.canvasWidth / 500.) }, fixed: true\r\n }\r\n );\r\n this.register(matrixComponentLabel);\r\n\r\n const scale = 1.25;\r\n const matrixNameLabelProperties = {\r\n anchorX: 'middle',\r\n display: 'internal',\r\n CssStyle: 'fontFamily:Oswald',\r\n fontSize: () => Math.round(22 * b.canvasWidth / 500.),\r\n fixed: true,\r\n };\r\n\r\n const centerOffset = scale * (ncol - 1) / 2.0;\r\n const McenterOffset = scale * (ncol - 1) / 2.0;\r\n\r\n const AOffset = -7;\r\n const BOffset = AOffset + ncol * scale + scale / 2.0;\r\n const MOffset = BOffset + ncol * scale + 2.0;\r\n\r\n this.register(b.create('text', [AOffset + centerOffset, 9, 'A'], matrixNameLabelProperties));\r\n this.register(b.create('text', [BOffset + centerOffset, 9, 'B'], matrixNameLabelProperties));\r\n this.register(b.create('text', [MOffset + McenterOffset, 9, 'M'], matrixNameLabelProperties));\r\n\r\n let matrix1 = createRandomFriendlyMatrixWithSize(nrow, ncol);\r\n let matrix2 = createRandomFriendlyMatrixWithSize(nrow, ncol);\r\n let matrixSum = Matmul(matrix1, matrix2);\r\n\r\n this.register(b.create('image', ['/assets/equal.svg', [-5 + 2 * ncol * 1.25 - 1.5, 7 - nrow * 0.5 * 1], [1, 1]], { visible: true, fixed: true }));\r\n const [matrix1Objects, matrix1Labels] = drawMatrix(this.board, [AOffset, 7], scale, matrix1);\r\n const [matrix2Objects, matrix2Labels] = drawMatrix(this.board, [BOffset, 7], scale, matrix2);\r\n\r\n this.register(matrix1Objects);\r\n this.register(matrix1Labels);\r\n this.register(matrix2Objects);\r\n this.register(matrix2Labels);\r\n\r\n const commonHighlightBoxProperties = {\r\n highlight: false,\r\n fixed: true,\r\n visible: false,\r\n // visible: true,\r\n vertices: { \r\n fixed: true,\r\n visible: false,\r\n withLabel: false,\r\n },\r\n borders: {\r\n fixed: true,\r\n visible: false,\r\n withLabel: false,\r\n },\r\n }\r\n\r\n let leftRowRects = [\r\n b.create('polygon',\r\n [\r\n [AOffset - scale / 2.0 , 7 + scale / 2.0],\r\n [AOffset + ncol * scale - scale / 2.0, 7 + scale / 2.0],\r\n [AOffset + ncol * scale - scale / 2.0, 7 - scale + scale / 2.0],\r\n [AOffset - scale / 2.0 , 7 - scale + scale / 2.0],\r\n ],\r\n { \r\n ...commonHighlightBoxProperties,\r\n color: 'green',\r\n }\r\n ),\r\n b.create('polygon',\r\n [\r\n [AOffset - scale / 2.0 , 7 - scale + scale / 2.0],\r\n [AOffset + ncol * scale - scale / 2.0, 7 - scale + scale / 2.0],\r\n [AOffset + ncol * scale - scale / 2.0, 7 - scale - scale + scale / 2.0],\r\n [AOffset - scale / 2.0 , 7 - scale - scale + scale / 2.0],\r\n ],\r\n { \r\n ...commonHighlightBoxProperties,\r\n color: 'green',\r\n }\r\n ),\r\n ];\r\n\r\n let rightColRects = [\r\n b.create('polygon',\r\n [\r\n [BOffset - scale / 2.0 , 7 + scale / 2.0],\r\n [BOffset - scale / 2.0 + scale, 7 + scale / 2.0],\r\n [BOffset - scale / 2.0 + scale, 7 - nrow * scale + scale / 2.0],\r\n [BOffset - scale / 2.0 , 7 - nrow * scale + scale / 2.0],\r\n ],\r\n { \r\n ...commonHighlightBoxProperties,\r\n color: 'red',\r\n }\r\n ),\r\n b.create('polygon',\r\n [\r\n [BOffset + scale - scale / 2.0 , 7 + scale / 2.0],\r\n [BOffset + scale - scale / 2.0 + scale, 7 + scale / 2.0],\r\n [BOffset + scale - scale / 2.0 + scale, 7 - nrow * scale + scale / 2.0],\r\n [BOffset + scale - scale / 2.0 , 7 - nrow * scale + scale / 2.0],\r\n ],\r\n { \r\n ...commonHighlightBoxProperties,\r\n color: 'red',\r\n }\r\n ),\r\n ];\r\n\r\n this.register(leftRowRects);\r\n this.register(rightColRects);\r\n\r\n let lastHoverR = null;\r\n let lastHoverC = null;\r\n const updateComponent = function (m, r, c, mLabel) {\r\n const highLightColor = '#984ea3';\r\n const highlightFontAttributes = {\r\n CssStyle: 'font-weight: bold',\r\n color: highLightColor,\r\n };\r\n\r\n // In a new element; update the text as appropriate.\r\n if (c != lastHoverC || r != lastHoverR) {\r\n b.suspendUpdate();\r\n\r\n // Hide old row/column highlight rectangles.\r\n if (lastHoverR != undefined) {\r\n leftRowRects[lastHoverR].setAttribute({ visible: false });\r\n }\r\n if (lastHoverC != undefined) {\r\n rightColRects[lastHoverC].setAttribute({ visible: false });\r\n }\r\n\r\n lastHoverR = r;\r\n lastHoverC = c;\r\n matrixComponentLabel.setText(\r\n `\r\n A_{${String(r + 1)}${String(1)}}\r\n B_{${String(1)}${String(c + 1)}} +\r\n A_{${String(r + 1)}${String(2)}}\r\n B_{${String(2)}${String(c + 1)}}\r\n =\r\n M_{${String(r + 1)}${String(c + 1)}}
\r\n (${matrix1[r][0]} *\r\n ${matrix2[0][c]}) +\r\n (${matrix1[r][1]} *\r\n ${matrix2[1][c]}) =\r\n ${m[r][c]}\r\n `);\r\n matrixComponentLabel.setAttribute({ visible: true });\r\n // matrix1Labels[r][c].setAttribute(highlightFontAttributes);\r\n // matrix2Labels[r][c].setAttribute(highlightFontAttributes);\r\n leftRowRects[r].setAttribute({ visible: true });\r\n rightColRects[c].setAttribute({ visible: true });\r\n mLabel.setAttribute(highlightFontAttributes);\r\n b.unsuspendUpdate();\r\n };\r\n }\r\n //\r\n const clearComponent = function (m, r, c, mLabel) {\r\n const clearFontAttributes = {\r\n CssStyle: 'font-weight: normal',\r\n color: 'gray',\r\n };\r\n\r\n b.suspendUpdate();\r\n // matrix1Labels[r][c].setAttribute(clearFontAttributes);\r\n // matrix2Labels[r][c].setAttribute(clearFontAttributes);\r\n mLabel.setAttribute(clearFontAttributes);\r\n\r\n // Not in a new element now, safe to clear label.\r\n if (c == lastHoverC && r == lastHoverR) {\r\n lastHoverR = null;\r\n lastHoverC = null;\r\n leftRowRects[r].setAttribute({ visible: false });\r\n rightColRects[c].setAttribute({ visible: false });\r\n matrixComponentLabel.setAttribute({ visible: false });\r\n }\r\n b.unsuspendUpdate();\r\n }\r\n //\r\n const [matrixSumObjects, matrixSumLabels] = drawMatrix(b, [MOffset, 7], scale, matrixSum,\r\n updateComponent, clearComponent);\r\n\r\n this.register(matrixSumObjects);\r\n this.register(matrixSumLabels);\r\n this.board.unsuspendUpdate();\r\n }\r\n\r\n oneTimeSetup = () => {\r\n this.board.options.layer['image'] = 14;\r\n placeTitle(this.board, 'Multiplication of Two Matrices', '(Hover Over a Component to See its Composition)');\r\n let shuffle = this.board.create('image', ['/assets/shuffle.svg', [-0.75, -0.75], [1.5, 1.5]], { visible: true, fixed: true });\r\n\r\n // Avoid \"losing this\" issue when called in a different context.\r\n let shuffleFunction = () => {\r\n this.deleteProblem();\r\n this.makeProblem();\r\n };\r\n shuffle.on('down', shuffleFunction);\r\n };\r\n}\r\nclass MatrixMultiplicationAssessment {\r\n constructor(board) {\r\n this.board = board;\r\n this.objectList = [];\r\n this.inputs = [];\r\n this.answers = [];\r\n }\r\n\r\n register = (object) => {\r\n this.objectList.push(object);\r\n };\r\n\r\n deleteProblem = () => {\r\n this.board.suspendUpdate();\r\n this.board.removeObject(this.objectList);\r\n this.objectList = [];\r\n clearInputFields(this.board);\r\n this.board.unsuspendUpdate();\r\n };\r\n\r\n checkInputs = () => {\r\n const nRows = this.inputs.length;\r\n const nCols = this.inputs[0].length;\r\n let result = true;\r\n for (let i = 0; i < nRows; ++i) {\r\n for (let j = 0; j < nCols; ++j) {\r\n const isCorrect = (this.inputs[i][j].Value() == this.answers[i][j]);\r\n setInputFieldAnswerColor(this.inputs[i][j], isCorrect);\r\n if (!isCorrect) {\r\n result = false;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n makeProblem = () => {\r\n // Restrict assessment module to 2x2 to keep the layout reasonable.\r\n const nrow = 2;\r\n const ncol = 2;\r\n\r\n let b = this.board;\r\n\r\n let matrixComponentLabel = b.create('text', [0, 2.25, '(Component)'],\r\n {\r\n visible: false,\r\n anchorX: 'middle', CssStyle: 'fontFamily:Oswald', fontSize: function () { return Math.round(18 * b.canvasWidth / 500.) }, fixed: true\r\n }\r\n );\r\n this.register(matrixComponentLabel);\r\n\r\n const scale = 1.25;\r\n const matrixNameLabelProperties = {\r\n anchorX: 'middle',\r\n display: 'internal',\r\n CssStyle: 'fontFamily:Oswald',\r\n fontSize: () => Math.round(22 * b.canvasWidth / 500.),\r\n fixed: true,\r\n };\r\n\r\n const centerOffset = scale * (ncol - 1) / 2.0;\r\n const McenterOffset = scale * (2 * ncol - 1) / 2.0;\r\n\r\n const AOffset = -7;\r\n const BOffset = AOffset + ncol * scale + scale / 2.0;\r\n const MOffset = BOffset + ncol * scale + 2.0;\r\n\r\n this.register(b.create('text', [AOffset + centerOffset, 9, 'A'], matrixNameLabelProperties));\r\n this.register(b.create('text', [BOffset + centerOffset, 9, 'B'], matrixNameLabelProperties));\r\n this.register(b.create('text', [MOffset + McenterOffset, 9, 'M'], matrixNameLabelProperties));\r\n\r\n let matrix1 = createRandomFriendlyMatrixWithSize(nrow, ncol);\r\n let matrix2 = createRandomFriendlyMatrixWithSize(nrow, ncol);\r\n this.answers = Matmul(matrix1, matrix2);\r\n\r\n // this.register(b.create('image', ['/assets/multiply.svg', [-7 + ncol * 1.25, 7 - nrow * 0.5 * 1], [1, 1]], { visible: true, fixed: true }));\r\n this.register(b.create('image', ['/assets/equal.svg', [-5 + 2 * ncol * 1.25 - 1.5, 7 - nrow * 0.5 * 1], [1, 1]], { visible: true, fixed: true }));\r\n const [matrix1Objects, matrix1Labels] = drawMatrix(this.board, [AOffset, 7], scale, matrix1);\r\n const [matrix2Objects, matrix2Labels] = drawMatrix(this.board, [BOffset, 7], scale, matrix2);\r\n\r\n this.register(matrix1Objects);\r\n this.register(matrix1Labels);\r\n this.register(matrix2Objects);\r\n this.register(matrix2Labels);\r\n\r\n // Make this 2x as wide to allow for bigger input boxes>\r\n this.board.suspendUpdate();\r\n const [matrixSumObjects, ] = drawMatrixBrackets(b, [MOffset, 7], scale, nrow, 2*ncol, false);\r\n\r\n this.inputs = [];\r\n for (let i = 0; i < nrow; ++i) {\r\n this.inputs[i] = [];\r\n for (let j = 0; j < ncol; ++j) {\r\n const x = MOffset + (2 * j * scale);\r\n const y = 7 - i * scale;\r\n let input = b.create('input', [x, y, '', ''],\r\n {\r\n cssStyle: 'fontFamily:Oswald; width:2em; background-color:#008CBA;border: 1px solid black;border-radius: 3.5px;',\r\n // label: { display: 'internal' },\r\n withLabel: false,\r\n fontSize: () => Math.round(16 * b.canvasWidth / 500.),\r\n fixed: true,\r\n parse: true,\r\n });\r\n this.inputs[i][j] = input;\r\n this.register(input);\r\n }\r\n }\r\n\r\n this.register(matrixSumObjects);\r\n this.board.unsuspendUpdate();\r\n }\r\n\r\n oneTimeSetup = () => {\r\n this.board.options.layer['image'] = 14;\r\n placeTitle(this.board, 'Multiplication of Two Matrices', '(Practice Problems)');\r\n let shuffle = this.board.create('image', ['/assets/shuffle.svg', [-0.75, -0.75], [1.5, 1.5]], { visible: true, fixed: true });\r\n\r\n const assessmentScale = 1.5;\r\n let ok1 = this.board.create('image', ['/assets/check.svg',\r\n [\r\n 3.5 - assessmentScale / 2.0,\r\n 0 - assessmentScale / 2.0\r\n ],\r\n [\r\n assessmentScale,\r\n assessmentScale\r\n ]\r\n ],\r\n { visible: false, fixed: true });\r\n let cross1 = this.board.create('image',\r\n ['/assets/cross.svg',\r\n [\r\n 3.5 - assessmentScale / 2.0,\r\n 0 - assessmentScale / 2.0\r\n ],\r\n [\r\n assessmentScale,\r\n assessmentScale\r\n ]\r\n ],\r\n { visible: false, fixed: true });\r\n\r\n let tryMe = this.board.create('image',\r\n [\r\n '/assets/test.svg',\r\n [\r\n 6 - assessmentScale / 2.0,\r\n 0 - assessmentScale / 2.0\r\n ],\r\n [\r\n assessmentScale,\r\n assessmentScale\r\n ]\r\n ],\r\n {\r\n visible: true,\r\n fixed: true\r\n }\r\n );\r\n\r\n markInteractive(shuffle);\r\n markInteractive(tryMe);\r\n\r\n // Avoid \"losing this\" issue when called in a different context.\r\n let shuffleFunction = () => {\r\n this.deleteProblem();\r\n this.makeProblem();\r\n ok1.setAttribute({ visible: false });\r\n cross1.setAttribute({ visible: false });\r\n };\r\n shuffle.on('down', shuffleFunction);\r\n\r\n let check = () => {\r\n if (this.checkInputs()) {\r\n ok1.setAttribute({ visible: true });\r\n cross1.setAttribute({ visible: false });\r\n\r\n }\r\n else {\r\n ok1.setAttribute({ visible: false });\r\n cross1.setAttribute({ visible: true });\r\n }\r\n };\r\n\r\n tryMe.on('down', check);\r\n };\r\n}\r\n\r\nconst Boxes = {\r\n box1a: function () {\r\n let brd1 = JXG.JSXGraph.initBoard('jxgbox1', {\r\n boundingbox: [-10, 15, 10, -5],\r\n keepaspectratio: true, axis: false, ticks: { visible: false },\r\n grid: true, showCopyright: false, showNavigation: false,\r\n pan: { enabled: false }, zoom: { enabled: false }\r\n });\r\n brd1.suspendUpdate();\r\n makeResponsive(brd1);\r\n let m = new MatrixMultiplicationExploration(brd1);\r\n m.oneTimeSetup();\r\n m.makeProblem();\r\n },\r\n\r\n box1b: function () {\r\n let brd1 = JXG.JSXGraph.initBoard('jxgbox2', {\r\n boundingbox: [-10, 15, 10, -5],\r\n keepaspectratio: true, axis: false, ticks: { visible: false },\r\n grid: true, showCopyright: false, showNavigation: false,\r\n pan: { enabled: false }, zoom: { enabled: false }\r\n });\r\n brd1.suspendUpdate();\r\n makeResponsive(brd1);\r\n let m = new MatrixMultiplicationAssessment(brd1);\r\n m.oneTimeSetup();\r\n m.makeProblem();\r\n },\r\n}\r\nexport default Boxes;\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiplication.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiplication.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Multiplication.vue?vue&type=template&id=543928c8&\"\nimport script from \"./Multiplication.vue?vue&type=script&lang=js&\"\nexport * from \"./Multiplication.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Multiplication.vue?vue&type=style&index=0&id=543928c8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}