I wrote mineConics in Javascript using jQuery to handle some of the interface elements. The graph is drawn on a Canvas element and I used the mousewheel jQuery plugin so that users could zoom in and out with the graph.
At first I was using a very basic algorithm to calculate circles. I tested every single cell on the graph against the list of circles. If sqrt((x*x)+(y*y)) was less than or equal to the radius of the circle and greater than (radius - 1), fill in that cell. This worked but it was slow and didn't allow for the click and drag panning that I had in mind. I looked around for a more efficient algorithm and found Bresenham's Circle Algorithm. I don't think Bresenham wrote the circle algorithm, but he wrote the line-drawing algorithm that inspired it. This sped everything up and allowed me to make the app much more interactive.
I'm using Google App Engine to host the site. I might take advantage of their backend storage to save designs or I might save them locally using HTML5. I haven't gotten around to that yet, but I'll keep you posted.
No comments:
Post a Comment