Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/lennart-finke/knottingham
- Owner: lennart-finke
- License: mit
- Created: 2023-05-14T17:16:50.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-03T13:04:23.000Z (6 months ago)
- Last Synced: 2024-07-31T07:17:21.234Z (5 months ago)
- Topics: drawing, knot-theory, knots
- Language: JavaScript
- Homepage: https://fi-le.net/knottingham
- Size: 618 KB
- Stars: 36
- Watchers: 5
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 detectionYou 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).