Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lennart-finke/knottingham

A Tool for Drawing Pretty Knots.
https://github.com/lennart-finke/knottingham

drawing knot-theory knots

Last synced: 2 months ago
JSON representation

A Tool for Drawing Pretty Knots.

Awesome Lists containing this project

README

        

## Knottingham

is a tool that lets you draw and manipulate knot diagrams, sporting a clean yet somewhat hand-made look.
You can:
1. Draw a knot from scratch & Have its intersections calculated for you
2. Adjust it as a Bezier curve
3. and Export it to TikZ/SVG/JSON!

other features include:
- Computing the Alexander, Jones and HOMFLY Polynomial
- Undoing
- Styling
- Non-Reidemeister Move detection

You can give it a go yourself over [here](https://fi-le.net/knottingham).

If Knottingham helped you with your research or teaching, we are very happy to be cited as
```
@article{finke2024,
author={Finke, Lennart and Weitz, Edmund},
journal={IEEE Transactions on Visualization and Computer Graphics},
title={A Phenomenological Approach to Interactive Knot Diagrams},
year={2024},
volume={30},
number={8},
pages={5901-5907},
doi={10.1109/TVCG.2024.3405369}}
```
**Local Execution / Development**
---
For a local setup, clone the repository, run a webserver in the base directory for example with `python3 -m http.server 8000` and open a browser window on [http://localhost:8000](http://localhost:8000). Contributions or suggestions are of course welcome.

**Heritage**
---
**Knottingham** was inspired by two cool tools for drawing and identifying knots, namely the [Knot Identification Tool](https://joshuahhh.com/projects/kit/) by Joshua Horowitz and [KnotFolio](https://kmill.github.io/knotfolio/index.html) by Kyle Miller. For the feature of producing a minimal orthogonal knot diagram, it uses the PyPi Module [spherogram](https://github.com/3-manifolds/Spherogram) after compilation to Webassembly to be compatible with [pyodide](https://github.com/pyodide/pyodide). Spherogram is licensed under [GNU-2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt). For more involved knot invariants using Sage, API calls to [SageCell](https://sagecell.sagemath.org/) are used.
Knottingham renders with [paper.js](https://github.com/paperjs/paper.js). Many thanks to the authors!

**How it Works**
---
You can read the preprint about Knottingham [here](https://arxiv.org/abs/2309.00445) or the finished paper in the [*IEEE Transactions on Visualization and Computer Graphics*](https://ieeexplore.ieee.org/document/10538424).

**License**
---
**Knottingham** is free software and licensed under MIT.

Any and all feedback is appreciated! You can mail to [developer/at/fi-le.net](mailto:developer/at/fi-le.net).