What it does

This is a learning visualization tool that uses something that is easily distributed, i.e., Google cardboard VR, which is much more accessible to audiences. Using this, users can easily input any equation from R2 to Rn, and they can easily visualize it as a 3D image by taking "slices" of the higher dimension object and representing it in 3D. Essentially, our program fixes all the variables except two, which act as our free variables, allowing us to create a 3D mapping that represents what the image looks like with these fixed values. This is useful for visualizing functions in higher dimensions, allowing people from all backgrounds to have access to such a resource.

How we built it

We developed a front-end using ReactJS, and we utilized Firebase for real-time data collection and visualization. Our front-end then calls a back-end which is a Flask server written in Python that calls a separate Java function that parses the user input and produces a .Obj file. This is then displayed using three.JS in the front end.

Challenges we ran into

During the process of making this, we encountered various snags. For example, our developing platform was not compatible with the vendor's APIs. We also had to write our own mathematical parser to parse through functions, and it took some care to make the mathematical evaluation efficient and eliminate the need for repeated expensive string operations. Google Cardboard makes it difficult to build meshes at runtime, so we had to construct elaborate workarounds.

Accomplishments that we're proud of

We read through a lot of documentations and really built an appreciation for the subtleties required to correctly parse mathematical functions.

What we learned

We learned how to work with .obj files, which we had never done before, and also learned about the implications of mixed reality in education.

What's next for Morphvism

We are interested in adding to Morphvism so that we can graph more than just one function at a time, which could allow us to observe how different functions interact with each other. We can then scale this up to more complex functions, which could allow us to visualize the behavior of datasets. From there, we can use these observations in data analysis, and specifically machine learning. This thus has implications in many fields, and because it is meant to be used by people from all backgrounds, it is more user-friendly than other programs.

Share this project: