Euclidean geometry in JS.

After seeing the incredible geometric designs throughout the Alhambra in Granada, I wanted to try to explore some of the underlying symmetry and geometry. I could have jumped straight to the tessellations, but it felt like a deeper way to get into it would be to build up from basic constructions, and so, over the course of a few train rides, I started with this little library–EuclidJS–for building and rendering plane geometry scenes. Code on Github.

Building the scene can be done programmatically with a simple API, or by describing the it with a (sort of) friendly grammar that Euclid can parse. The diagram above comes from the text below (which you can edit, at your own risk!).

Next up:

  1. I’d still like to make the grammar more flexible (and thus concise), with, e.g., things like “Let d and e be the points where circles a and b intersect”, or even “Let v be the line determined by the points where circles a and b intersect”.
  2. A tessellation builder using this that will, hopefully, be simultaneously simple to use and true to the underlying geometry.
  3. A geometry proof parser that attempts to generate diagrams based on the text in a proof. (This is very ambitious, but would be very cool.)