Inspiration / What it does
Desmos + Diff EQ https://sedmos.vercel.app/ https://github.com/HammerMonkeys/sedmos
In 24 hours, we built Sedmos, and it encapsulates more than half Desmos' features. We started building a graphing calculator complete with easy to type math boxes, live graphs, variable management, and vector fields. Desmos lacks a vital feature: support for differential equations. Diff EQ students are currently unable to graph complex vector fields or solutions to differential equations with a tool as ergonomic as Demos. We answer this need.
We graph functions beyond those in y and x. y'=yx graphs a vector field, not merely a single function. A feature only unique to our product.
How we built it
Everything is based in Svelte and TypeScript. Under the hood, the system parses LaTeX math from the math boxes into an abstract syntax tree of expressions. From there, we analyze the dependencies to eliminate cycles (a=b; b=a) and create a graph of which expressions depend on what. Ultimately, the math is compiled into working JavaScript. That's key; it allows the system to take y=x^2 and run it with millions of different values for x without restarting the process. All 700+ lines of the complex dependency and state management algorithms were written from scratch.
All of this feeds into the front end which takes the series of points we compute and stitches them into objects to see. There is no "grapher" library; all curves and graphing apparatus' are built from scratch in pure JavaScript. Each pixel of the graph was placed by us.
Accomplishments that we're proud of
We implemented a lot of features that went beyond the minimum viable product.
- Variable support
- Vector fields
- Dark mode
- Drag and drop
- Lots of care to the UI
- Aria labels for accessibility
Challenges we ran into
The algorithms we developed were far, far more sophisticated than we anticipated and took more than 4 times the time we allocated. We were successful in the end, but there were some features our analysis tools are capable of that we could not fully incorporate. For example, we fully implemented a system to analyze the differential equations and plot a solution based on an initial condition. All it would take, would be a click on the UI from the user and the solution could appear, but this was not completed in the UI-side.
What we learned
Poor git usage and merge conflicts can be devastating for time. :(
What's next for sedmos
We want to flesh out the UI to incorporate the features our analysis tools are already capable of computing. And there's plenty of little features and polish we would love to contribute if we had more time.
Built With
- svelte
Log in or sign up for Devpost to join the conversation.