Skip to content

A web-based complex graphing calculator written in JavaScript and Rust using WebAssembly

License

Notifications You must be signed in to change notification settings

varphi-online/wgraphc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Complex Web Graph

A tool to visualize and modify functions that act in both the real and complex planes.

TODO:

  • Add a is_complex function to ast
  • Function customization
  • Dynamic/Playable sliders
  • Mouse hints/point data/text to screen
  • Optimize parser
  • fix discontinuities
  • Grid mode

Old (OUTDATED) README.md

A non-exhaustive checklist on what is needed to complete this project:

  • Boilerplate JS and WASM interfacing.
  • Research and impl. structs to handle tokens, preferablly easily expandible
  • Scanner for lexemes in evaluation.
  • Evaluator to to create tokens to use.
  • Impliment Recursive Descent Parser or the shunting yard algorithim to build and AST from tokens.
  • Global variables and variable assignment, with multiple assignment
  • Function handling, arbitrary amount of arguments
  • Complex number input, i operator and basic complex functions via vectors
  • Complex trig operators, with the mclauren series used as an approximation around a specificly defined point.
  • Wasm & Js Rendering using HTML5 canvas, currently thinking rendering with Js
  • Drawing an infinitely resizable and moveble grid, containerized for multiple instances in the future
  • Calculating an output 2d vector array from an input 2d vector array using AST (or other method of function representation) given a range and percision determined by the grid's view window in WASM.1
  • Rendering a series of points and line from the 2d vector array by only graphing the reals
  • Being able to select the coordinate space of the output for different views
  • Multiple views that move simultaneously of the output data (calculate once, render n-times)
  • Better input, n-many input boxes

Optional:

  • KaTeX rendering of input/evaluated expression for better looking results
  • 3D grid rendering for more types of complex ouput visualization.
  • Lua/Pyton based scripting api for changing things

Note: I am writing this project alongside learning Rust, so in the event that I learn any new paridigms or design patterns that I want/need to impl. I will add them here:

  • Debug "mode" to only compile console_log!'s when told.
  • Canvas modification via wasm
  • canvas compositing and instantiation for each function.

[1] This means that when using functions based on the mclauren series, the center of the graph is the a point, and all calculations of surrounding points are passed through that in order to cut down on making a new approximating function for each entry in the array.

About

A web-based complex graphing calculator written in JavaScript and Rust using WebAssembly

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published