Speuler: SEmantics-preserving Euler diagrams

Used tools:

Running the application:

  1. Install dependencies by calling npm install.
  2. Build the application by calling npm run build.
  3. Open the resulting index.html in the browser.

Description:

Speuler is an algorithm meant to visualize sets as Euler diagrams while making sure that they are well-matched (every set intersection is represented in the diagram and no extra intersections occur) and well-formed (no more than two curves intersect at a given point).
This is achieved as follows:
  1. Get every distinct area where sets intersect and turn it into a node for dual graph.
  2. Sort the nodes by rank(number of sets intersecting in this node).
  3. Connect those nodes together so that This is achieved by only considering nodes in neighbouring ranks, calculating adjacency matrixes for them, sorting them by the length of their consecutive ones sequences, and connecting them in this order, while also removing crossing edges.
  4. Generate a layout for the graph by first laying out the rank with the largest number of nodes in a circular manner at uniform intervals. All other nodes are then layed out in circles around them similar to the layout of radial trees.
  5. Generate the curves for sets by connecting midpoints of edges of same colors and gate nodes(points lying between every two nodes of the same rank) in a sequence and drawing a Catmull-Rom spline using those points as control points.

Links: