{"id":16075570,"url":"https://github.com/carissaallen/convex-hull","last_synced_at":"2025-04-05T10:42:14.261Z","repository":{"id":71817117,"uuid":"171323734","full_name":"carissaallen/convex-hull","owner":"carissaallen","description":"Convex hull algorithms implemented to analyze complexity and performance.","archived":false,"fork":false,"pushed_at":"2019-03-19T06:56:59.000Z","size":122,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-10T21:36:43.463Z","etag":null,"topics":["complexity-analysis","convex-hull","convex-hull-algorithms","graham-scan","jarvis-march"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carissaallen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-18T17:07:36.000Z","updated_at":"2023-09-29T16:55:42.000Z","dependencies_parsed_at":"2023-03-11T00:30:17.950Z","dependency_job_id":null,"html_url":"https://github.com/carissaallen/convex-hull","commit_stats":{"total_commits":100,"total_committers":1,"mean_commits":100.0,"dds":0.0,"last_synced_commit":"d67f3af61d6523f7917d9148d6dd9a65c876fc79"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carissaallen%2Fconvex-hull","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carissaallen%2Fconvex-hull/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carissaallen%2Fconvex-hull/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carissaallen%2Fconvex-hull/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carissaallen","download_url":"https://codeload.github.com/carissaallen/convex-hull/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247325647,"owners_count":20920713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["complexity-analysis","convex-hull","convex-hull-algorithms","graham-scan","jarvis-march"],"created_at":"2024-10-09T09:06:35.018Z","updated_at":"2025-04-05T10:42:14.245Z","avatar_url":"https://github.com/carissaallen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Convex Hull\n\n## Project Requirements\nFinal research project for the graduate-level class, Algorithm Design and Analysis. \n* The topic should be related to algorithm complexity and must involve implementing one or more algorithms or data structures.\n* After completing their research, students are responsible for writing a 7-10 page paper which is to be submitted along with their source code.\n\n## Topic\nImplement convex hull algorithms, which will include:\n* Graham's scan\n* Jarvis's march (gift-wrapping)\n\nTo implement in future work:\n* _Divide-and-conquer_\n* _Prune-and-search_\n* _Chan's algorithm_\n\nCompare the performance of each algorithm implemented, and create some visual representation (i.e. scatter plots) of the algorithms/performance.\n\n## Getting Started\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes. \n\n### Prerequisites\n\nWhat things were needed to set up the development environment and how to install them.\n_Note: installation instructions based on macOS Mojave._\n\n* [Python 3.7.2](https://www.python.org/downloads/)\n* [pip](https://pip.pypa.io/en/stable/installing/)\n* [matplotlib](https://matplotlib.org/api/pyplot_api.html#module-matplotlib.pyplot)\n\nInstall pip:\n```\ncurl https://bootstrap.pypa.io/gpython get-pip.pyet-pip.py -o get-pip.py\n```\n```\npython get-pip.py\n```\n\nInstall matplotlib:\n```\npip install matplotlib\n``` \n\n### Run\n\nAfter installing any prerequisites listed above, follow these steps to run the program:\n\n1. Clone the project to your local machine.\u003cbr\u003e\n\n    `git clone https://github.com/carissaallen/convex-hull.git`\n\n2. From your terminal, enter the following command: \u003cbr\u003e\n\n    `python main.py`\n\n### Hull Construction\n\nTo view the construction of the convex hull:\n* Navigate to the _main.py_ file. In the `main` method:\n* If `show_progress = False` then the scatter plot will only display the final convex hull boundary.\n* If `show_progress = True` then the scatter plot will show the hull's progress as the boundary is constructed. \u003cbr\u003e\n\n  _Note: keep the input size small, this is pretty slow._ :turtle: \n\n## Tree\n```bash\n├── LICENSE\n├── README.md\n├── datasets.py\n├── graham_scan.py\n├── jarvis_march.py\n├── main.py\n└── scatter_plot.py\n```\n\n## Future Work\nI am currently working on improving the input data set, and the timing mechanism used to analyze empirical performance of the algorithms. Once these areas are improved, I intend to implement additional algorithms for analysis.\n\n## Authors\n\n* **Carissa Allen** - *Initial work* - [Convex Hull](https://github.com/carissaallen/convex-hull)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n## Acknowledgments\nA thank you to the individuals who created material I was able to use for inspiration, understanding and implementing technical details, and credit to any other resources that contributed to the making of my project. 👏🏻\n\n* _Introduction to Algorithms 3rd Edition_ by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein\n* Brian Faure for creating a [tutorial](https://steemit.com/python/@bfaure/graham-scan-algorithm-background-and-python-code) for Graham's Scan, which was used to learn about `matplotlib` to create the visual representation of the convex hull, and for some implementation details.\n* [Determining if two consecutive line segments turn left or right](https://algorithmtutor.com/Computational-Geometry/Determining-if-two-consecutive-segments-turn-left-or-right/)\n* [Convex Hull Algorithms: Jarvis's March](https://algorithmtutor.com/Computational-Geometry/Convex-Hull-Algorithms-Jarvis-s-March/)\n* [Computational Geometry Lecture](http://jeffe.cs.illinois.edu/teaching/compgeom/notes/01-convexhull.pdf) by Jeff Erickson\n* [Computing Convex Hull in Python](https://startupnextdoor.com/computing-convex-hull-in-python/) by John Washam\n* [Convex-Hull Algorithms](https://www.researchgate.net/publication/329265407_Convex-Hull_Algorithms_Implementation_Testing_and_Experimentation) by Neve Gamby and Jyrki Katajainen, primarily relied on to develop appropriate data sets as input to the algorithms implemented.\n* To brush up on my geometry, [Text Computational Geometry in C](http://crtl-i.com/PDF/comp_c.pdf) by Joseph O'Rourke.\n* [Convex Hull Applications](https://www.quora.com/What-are-the-real-life-applications-of-convex-hulls)\n* [Spatial Extent of an Outbreak in Animal Epidemics](https://www.pnas.org/content/110/11/4239.full)\n* [Hand Gesture Recognition Based on Convex Defect Detection](https://pdfs.semanticscholar.org/ee87/b0b46ed7a31ef90ee672c08a22e028e4537c.pdf)\n* [The Convex Hull of a Finite Planar Set](http://www.math.ucsd.edu/~ronspubs/72_10_convex_hull.pdf) by R.L. Graham (1972)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarissaallen%2Fconvex-hull","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarissaallen%2Fconvex-hull","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarissaallen%2Fconvex-hull/lists"}