No description
| cypress | ||
| src | ||
| .eslintrc.js | ||
| .gitignore | ||
| cypress.json | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| screenshot.png | ||
| webpack.config.js | ||
MatRepl
- is a Matrix
- and a repl: Read–Eval–Print Loop, where Print is doing operations on vectors and matrices in a graphic environment
- written in vanilla javascript (ES6)
The repl has the following syntax (It's work in progress, new capabilities will be added)
- arithmetic expressions:
- add, subtract, divide, multiply
- variable declaration eg: a= ...
vector(1,2,3,4)adds a vector,vector(1 2)as well. The start is now the origin. commas are not mandatory. I'm planning to add a more mathematical notation for vectors:[1 2]-
> vector@0{x0:1, y0: 2, x:3, y:4}
-
remove(x)removes bindings (when it's an object (eg vector), removes it from the matrix)remove(@n)removes an object using it's assigned index (nis a number)- method calls:
a = vector(12,1)> vector@0{x0:1, y0: 2, x:12, y:1}
- properties
a.type> vector
- property lookup
a.x+1> 13
- drag vectors using the mouse pointer. You can change the vector arrows visually
- lazy evaluation. The difference between
c = a+bandc = "a+b"is that the latter assigns to c a parsed expression that can always be evaluated later. When you apply lazy evaluation and later updatea, the value for c will be reevaluated automatically. Combined with vector dragging, this way you can get an intuition for vector addition. Want to do the same for matrix multiplication and basis change. - enter the following:
a = vector(0.5, 0.5) b = vector(-1, 1) c = "a+b" - and press enter. Then using the mouse pointer move a or b. Or try:
a=2*aThis updates vectorato twice it's size. And, becausecis defined lazily, it is updated as well!
To run locally
- make sure you have node/npm
- cmdline: npm run start
- and enter
help()
