https://github.com/hactarce/incrementalconvexhull
Incremental convex hull visualization for CSC 591
https://github.com/hactarce/incrementalconvexhull
Last synced: about 1 year ago
JSON representation
Incremental convex hull visualization for CSC 591
- Host: GitHub
- URL: https://github.com/hactarce/incrementalconvexhull
- Owner: HactarCE
- License: gpl-3.0
- Created: 2021-03-23T19:34:49.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-05-11T23:30:30.000Z (about 5 years ago)
- Last Synced: 2025-02-21T16:09:47.119Z (over 1 year ago)
- Language: Python
- Size: 1.54 MB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IncrementalConvexHull
Incremental Convex Hull Visualization for CSC 591, Spring 2021
## Starting Resources
- Read our [documentation](https://hactarce.github.io/IncrementalConvexHull/api.html)
- [In-depth walkthrough](https://github.com/HactarCE/IncrementalConvexHull/blob/main/WALKTHROUGH.md) outlining how to use the GUI along with some interesting examples
## Development
We recommend working in a virtual environment to maintain consistency across developers' machines.
To set things up, run the following in the root project directory:
```
$ python -m venv --prompt IncConvexHull --upgrade-deps venv
$ source ./venv/bin/activate # or venv\Scripts\activate.bat in Windows cmd
# or venv\Scripts\Activate.ps1 in PowerShell
$ pip install -r requirements.txt
[Development happens here]
$ deactivate # When you're done working
```
If you ever add/change dependencies during development (e.g. running `pip install` or `pip upgrade` within the virtual environment), be sure to run `pip freeze > requirements.txt` and commit those changes to the repository.
## Incremental Convex Hull Concepts and Backgrounds
This interactive visualization tool will plot the points of a _convex polygon_ while incrementally growing the _convex hull_ as points are added. Additionally, this tool will maintain a valid _traingulation_ of the plotted polygon. The polygons are represented using a graph data structure with nodes and edges.
### Convex Polygons
The formal definition of convex polygon is a shape in which no interior angle is greater than 180 degrees. The simplest form of a convex polygon is a triangle. You can think of this visually as a shape with no "dents" in it, or edges that protrude inside the main cavity of the shape.

### Triangulations
Every convex polygon can be broken down into smaller triangles, the simplest form of a convex polygon. This process of dividing a polygon into triangles is called triangulation. There are multiple ways the triangulate a shape. Our visualization supports multiple triangulations. Upon clicking an _internal_ edge in the polygon, the edge will then flip, producing another valid triangulation.

### Convex Hulls
A convex hull is the outtermost boundary in a set of points that encompasses all other points. This visualization tool only supports convex polygons with no colinear points. The following are properties of convex polygons:
The following are properties of convex hulls:
- All points within a set are encompassed by the convex hull
- A tangent line can be drawn for each point on the convex hull such that all other points are on one side of the tangent line