-
Notifications
You must be signed in to change notification settings - Fork 0
GSoC 2012 Report Bharath M R: Implicit plotting.
My name is Bharath M R. I am a fifth year dual degree student of Electrical Engineering at IIT Madras. My project involved setting up the implicit plotting functions for SymPy and improving the plotting module.
The first part of my project was to implement the implicit plotting module. The implementation of the implicit plotting module closely followed [1]. The implicit plotting module uses interval arithmetic, and this was implemented at the start of my GSoC project. Initially the idea was to implement it in mpmath, but due to speed concerns, the interval arithmetic module was completely implemented in numpy. The interval arithmetic is not completely accurate as it uses floating points, but it was sufficient for plotting. The next part was to extend the algorithm to handle boolean combinations of functions. With small changes to the interval arithmetic module, implicit plotting of boolean combinations of function was implemented.
One of the improvements to the existing plotting module was adaptive sampling. This allowed the plotting module to plot functions which varied heavily, by checking the whether three points were almost collinear, and recursively sampling more, if the points are not almost collinear. This allows the plotting of
I spent some of my time trying to get the plotting module working with svgfig. The output from svgfig was highly inconsistent sometimes, and it was also not in active development, hence the idea of adding plotting for the SymPy Live was dropped.
The last few weeks were spent on improving the plotting module, creating specific functions for plotting, and adding more documentation.
- Vector plots, ability to plot the geometry objects in SymPy.
- A Mayavi backend for 3D plots, the 3D plots look way nicer compared to Matplotlib.
- Adaptive sampling for 3D surfaces and plots.
- Matplotlib has a HTML canvas backend. This can be integrated with SymPy Live, if we get Matplotlib support on the Google App Engine.