30 KiB
30 KiB
Awesome Computational Geometry !Awesome (https://awesome.re/badge.svg) (https://awesome.re)
▐ A curated list of awesome computational geometry visualizations, libraries, and resources.
Computational geometry (https://en.wikipedia.org/wiki/Computational_geometry) is a topic in computer science that focuses on solving problems in geometry.
Applications of computational geometry include computer-aided design, robotics, GIS systems, and computer vision.
Contents
- Algorithm Visualizations (#algorithm-visualizations)
- Books (#books)
- Notes (#notes)
- Libraries (#libraries)
- Conferences (#conferences)
- Strictly Computational Geometry (#strictly-computational-geometry)
- Broader (#broader)
- Journals (#journals)
- Competitive Programming (#competitive-programming)
- Courses (#courses)
- Open Courses (#open-courses)
- University Courses (#university-courses)
- Miscellaneous (#miscellaneous)
Algorithm Visualizations
- Convex Hull (https://visualgo.net/en/convexhull?slide=1) - The convex hull of a shape is the smallest convex set that contains it.
- Convex Hull Algorithms (https://erencan-02.github.io/ConvexHullVisualizer/index.html) - A website with visualizations of many convex hull algorithms, including gift wrapping, Graham's scan,
quickhull, divide and conquer, monotone chain, and Chan's algorithm.
- Chan's Algorithm (http://sophiedasinger.github.io/Classwork/163proj/#viz) - An optimal output-sensitive algorithm to compute the convex hull of a set of points in 2 or 3 dimensions.
- Kirkpatrick's Point location (http://rkaneriya.github.io/point-location/) - A data structure and method for point location with O(n) space and O(log n) query time using triangulation.
- Voronoi Diagrams (http://alexbeutel.com/webgl/voronoi.html) - A partition of a plane into regions close to a given set of points.
- Fortune's Algorithm (https://www.desmos.com/calculator/ejatebvup4) - A sweep line algorithm for generating the Voronoi diagram in O(n log n) time and O(n) space.
- Point/Line Duality (https://people.eng.unimelb.edu.au/henli/programs/duality-demo/) - A type of mathematical duality frequently used in computational geometry algorithms.
- k-d tree
(https://opendsa-server.cs.vt.edu/ODSA/AV/Development/kd-treeAV.html?selfLoggingEnabled=false&localMode=false&module=KDtree&JXOP-debug=true&JOP-lang=en&JXOP-code=java&scoringServerEnabled=fal
se&threshold=1.0&points=0&required=False) - A method of partitioning k-dimensional space in an efficient way for searches like nearest neighbors.
- Configuration Space (https://www.youtube.com/watch?v=SBFwgR4K1Gk) - The space of possible configurations of an object like a robot.
Books
- Computational Geometry: Algorithms and Applications (https://www.amazon.com/Computational-Geometry-Applications-Mark-Berg/dp/3540779736) - A textbook by Mark de Berg, Otfried Cheong, Marc
van Kreveld, and Mark Overmars (2008).
- Computational Geometry in C (https://www.amazon.com/Computational-Geometry-Cambridge-Theoretical-Paperback/dp/0521649765) - A popular introduction to the design and implementation of
geometry algorithms arising in areas such as computer graphics, robotics, and engineering design by Joseph O'Rourke (1998).
- Computational Geometry: An Introduction (https://www.amazon.com/Computational-Geometry-Introduction-Monographs-Computer/dp/0387961313) - An introductory textbook by Franco P. Preparata and
Michael I. Shamos (1993).
- Algorithmic Geometry (https://www.amazon.com/Algorithmic-Geometry-Jean-Daniel-Boissonnat/dp/0521565294) - A textbook by Jean-Daniel Boissonnat, Mariette Yvinec, and Herve Bronniman (1998).
- Discrete and Computational Geometry (https://www.amazon.com/Discrete-Computational-Geometry-Satyan-Devadoss/dp/0691145539) - A comprehensive yet accessible introduction to the
intermingling of discrete geometry, a relatively new development in pure mathematics, and computational geometry, an emerging area in applications-driven computer science by Satyan L.
Devadoss and Joseph O'Rourke (2011).
- Interactive Computational Geometry - A taxonomic approach (http://www.clearviewtraining.com/interactive-computational.html) - An interactive introduction to some of the fundamental
algorithms of computational geometry with Mathematica by Jim Arlow (2014).
Notes
- Lecture Notes (http://www.cs.umd.edu/~mount/754/Lects/754lects.pdf) - Lecture notes from CMSC 754 Computational Geometry at the University of Maryland by David Mount (2002).
- Handbook of Discrete and Computational Geometry (https://www.csun.edu/~ctoth/Handbook/HDCG3.html) - A handbook by Jacob E. Goodman, Joseph O'Rourke, and Csaba D. Tóth (2017).
- Handbook of Computational Geometry (https://www.amazon.com/Handbook-Computational-Geometry-J-Sack-ebook/dp/B00QM3S1SC) - An overview of key concepts and results in computational geometry by
J. R. Sack, and J. Urrutia (1998).
- Computing in Euclidean Geometry (https://www.amazon.com/Computing-Euclidean-Geometry-Lecture-Notes/dp/9810218761) - A collection of surveys and exploratory articles about recent
developments in the field of computational Euclidean geometry by Ding-Zhu Du and Frank Hwang (1995).
Libraries
- CGAL (https://www.cgal.org/) - A software project that provides easy access to efficient and reliable geometric algorithms in the form of a C++ library. This website also has explanations
of many of these algorithms.
- Wykobi (http://www.wykobi.com/index.html) - An extremely efficient, robust, and simple to use C++ 2D/3D oriented computational geometry library.
- geometry3Sharp (https://github.com/gradientspace/geometry3Sharp) - Open-Source, Boost-licensed C# library for geometric computing.
- Computational Geometry Software Libraries (http://jeffe.cs.illinois.edu/compgeom/software.html) - UIUC's large collection and library of geometric software by Jeff Erickson.
- The Stony Brook Algorithm Repository (http://www3.cs.stonybrook.edu/~algorith/major_section/1.6.shtml) - A repository of algorithms based on The Algorithm Design Manual
(https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693).
- Geometric Tools (https://www.geometrictools.com/index.html) - A library of source code for computing in the fields of mathematics, graphics, image analysis, and physics that includes some
computational geometry algorithms.
- GeoLib (http://www.geolib.co.uk/) - A fast and efficient computational geometry library available in C++, C# and Java.
- hull.js (https://github.com/AndriiHeonia/hull) - JavaScript library that builds the convex hull of a set of points.
- S2 Geometry Library (https://github.com/google/s2geometry) - A package for manipulating geometric shapes. Unlike many geometry libraries, S2 is primarily designed to work with spherical
geometry, i.e., shapes drawn on a sphere rather than on a planar 2D map. This makes it especially suitable for working with geographic data.
- Computational Geometry Unity Library (https://github.com/Habrador/Computational-geometry) - A library of computational geometry algorithms for Unity.
Conferences
Strictly Computational Geometry
- Symposium on Computational Geometry (http://www.computational-geometry.org/) - An annual symposium.
- The Canadian Conference on Computational Geometry (http://www.cccg.ca/) - An annual international event for the dissemination of new results in the fields of computational and combinatorial
geometry. The conference is usually held in a Canadian city sometime in mid-August.
- Japan Conference on Discrete and Computational Geometry, Graphs, and Games (http://www.alg.cei.uec.ac.jp/itohiro/JCDCGG/) - A conference held annually since 1997, except for 2008.
Broader
- Symposium on Discrete Algorithms (https://www.siam.org/conferences/cm/conference/soda22) - ACM-SIAM, held annually.
- Annual ACM Symposium on Theory of Computing (http://acm-stoc.org/) - STOC covers all areas of research within Algorithms and Computation Theory.
- IEEE Symposium on Foundations of Computer Science (http://ieee-focs.org/) - The flagship conference sponsored by the IEEE Computer Society Technical Committee on the Mathematical
Foundations of Computing (TCMF) and covers a broad range of theoretical computer science.
- Annual Allerton Conference on Communications, Control and Computing (http://allerton.csl.illinois.edu/) - Draws some of the brightest minds from industry, academia, and government to
discuss innovation in the fields of communication, control, and computing.
Journals
- arXiv (https://arxiv.org/list/cs.CG/recent) - Recent submissions to arXiv about computational geometry.
- Elsevier (https://www.journals.elsevier.com/computational-geometry) - A forum for research in theoretical and applied aspects of computational geometry.
- Journal of Computational Geometry (https://jocg.org/index.php/jocg) - An international open access journal devoted to publishing original research of the highest quality in all aspects of
computational geometry.
Competitive Programming
- HackerEarth (https://www.hackerearth.com/practice/notes/computational-geometry-i-1/) - A set of articles on computational geometry.
- TopCoder (https://www.topcoder.com/community/data-science/data-science-tutorials/geometry-concepts-basic-concepts/) - A set of articles on computational geometry.
- HackerRank (https://www.hackerrank.com/domains/mathematics/geometry) - A set of programming problems using computational geometry.
- GeeksforGeeks (https://www.geeksforgeeks.org/geometric-algorithms/) - Implementations and explanations for a large number of commonly asked questions and common topics in geometric
algorithms.
Courses
Open Courses
- MIT OCW (https://ocw.mit.edu/courses/mechanical-engineering/2-158j-computational-geometry-spring-2003/) - A course taught by Nicholas Patrikalakis and Takashi Maekawa in 2013.
- Udemy (https://www.udemy.com/course/mastering-computational-geometry-cpp/) - A course about implementing computational geometry algorithms in C++.
- edX (https://www.edx.org/course/computational-geometry) - A course in computational geometry.
- Brilliant (https://brilliant.org/practice/computational-geometry-intro/) - Practice problems for basic concepts in computational geometry.
University Courses
- Brown University (http://cs.brown.edu/courses/cs252/) - A course taught by Roberto Tamassia in 2005.
- Washington University in St. Louis (http://www.cs.wustl.edu/~taoju/cse546/) - A course taught by Tao Ju in 2017.
- The University of Maryland (http://www.cs.umd.edu/~mount/754/) - A course taught by Dave Mount in 2002.
- UC Santa Barbara (https://sites.cs.ucsb.edu/~suri/cs235/235.html) - A course taught by Subhash Suri in 2021.
- UIUC (https://jeffe.cs.illinois.edu/teaching/compgeom/) - A course taught by Jeff Erickson in 2022.
- UC Berkeley (https://people.eecs.berkeley.edu/~jrs/274/) - A course taught by Jonathan Shewchuk in 2019.
- Tufts (http://www.cs.tufts.edu/comp/163/) - A course taught by Diane Souvaine in 2022.
- KIT (https://i11www.iti.kit.edu/teaching/sommer2018/compgeom/index) - A course taught by Tamara Mchedlidze and Chih-Hung Liu in 2018.
Miscellaneous
- The Open Problems Project (https://topp.openproblem.net/) - A project aimed to record important open problems in computational geometry and related fields.
- Wolfram (https://reference.wolfram.com/language/guide/GeometricComputation.html) - Documentation for computational geometry algorithms implemented in the Wolfram language.
- Matlab (https://www.mathworks.com/help/matlab/computational-geometry.html) - Documentation for computational geometry algorithms implemented in the Matlab.
Contributing
Contributions are welcome! See the contribution guidelines (contributing.md).
▐ A curated list of awesome computational geometry visualizations, libraries, and resources.
Computational geometry (https://en.wikipedia.org/wiki/Computational_geometry) is a topic in computer science that focuses on solving problems in geometry.
Applications of computational geometry include computer-aided design, robotics, GIS systems, and computer vision.
Contents
- Algorithm Visualizations (#algorithm-visualizations)
- Books (#books)
- Notes (#notes)
- Libraries (#libraries)
- Conferences (#conferences)
- Strictly Computational Geometry (#strictly-computational-geometry)
- Broader (#broader)
- Journals (#journals)
- Competitive Programming (#competitive-programming)
- Courses (#courses)
- Open Courses (#open-courses)
- University Courses (#university-courses)
- Miscellaneous (#miscellaneous)
Algorithm Visualizations
- Convex Hull (https://visualgo.net/en/convexhull?slide=1) - The convex hull of a shape is the smallest convex set that contains it.
- Convex Hull Algorithms (https://erencan-02.github.io/ConvexHullVisualizer/index.html) - A website with visualizations of many convex hull algorithms, including gift wrapping, Graham's scan,
quickhull, divide and conquer, monotone chain, and Chan's algorithm.
- Chan's Algorithm (http://sophiedasinger.github.io/Classwork/163proj/#viz) - An optimal output-sensitive algorithm to compute the convex hull of a set of points in 2 or 3 dimensions.
- Kirkpatrick's Point location (http://rkaneriya.github.io/point-location/) - A data structure and method for point location with O(n) space and O(log n) query time using triangulation.
- Voronoi Diagrams (http://alexbeutel.com/webgl/voronoi.html) - A partition of a plane into regions close to a given set of points.
- Fortune's Algorithm (https://www.desmos.com/calculator/ejatebvup4) - A sweep line algorithm for generating the Voronoi diagram in O(n log n) time and O(n) space.
- Point/Line Duality (https://people.eng.unimelb.edu.au/henli/programs/duality-demo/) - A type of mathematical duality frequently used in computational geometry algorithms.
- k-d tree
(https://opendsa-server.cs.vt.edu/ODSA/AV/Development/kd-treeAV.html?selfLoggingEnabled=false&localMode=false&module=KDtree&JXOP-debug=true&JOP-lang=en&JXOP-code=java&scoringServerEnabled=fal
se&threshold=1.0&points=0&required=False) - A method of partitioning k-dimensional space in an efficient way for searches like nearest neighbors.
- Configuration Space (https://www.youtube.com/watch?v=SBFwgR4K1Gk) - The space of possible configurations of an object like a robot.
Books
- Computational Geometry: Algorithms and Applications (https://www.amazon.com/Computational-Geometry-Applications-Mark-Berg/dp/3540779736) - A textbook by Mark de Berg, Otfried Cheong, Marc
van Kreveld, and Mark Overmars (2008).
- Computational Geometry in C (https://www.amazon.com/Computational-Geometry-Cambridge-Theoretical-Paperback/dp/0521649765) - A popular introduction to the design and implementation of
geometry algorithms arising in areas such as computer graphics, robotics, and engineering design by Joseph O'Rourke (1998).
- Computational Geometry: An Introduction (https://www.amazon.com/Computational-Geometry-Introduction-Monographs-Computer/dp/0387961313) - An introductory textbook by Franco P. Preparata and
Michael I. Shamos (1993).
- Algorithmic Geometry (https://www.amazon.com/Algorithmic-Geometry-Jean-Daniel-Boissonnat/dp/0521565294) - A textbook by Jean-Daniel Boissonnat, Mariette Yvinec, and Herve Bronniman (1998).
- Discrete and Computational Geometry (https://www.amazon.com/Discrete-Computational-Geometry-Satyan-Devadoss/dp/0691145539) - A comprehensive yet accessible introduction to the
intermingling of discrete geometry, a relatively new development in pure mathematics, and computational geometry, an emerging area in applications-driven computer science by Satyan L.
Devadoss and Joseph O'Rourke (2011).
- Interactive Computational Geometry - A taxonomic approach (http://www.clearviewtraining.com/interactive-computational.html) - An interactive introduction to some of the fundamental
algorithms of computational geometry with Mathematica by Jim Arlow (2014).
Notes
- Lecture Notes (http://www.cs.umd.edu/~mount/754/Lects/754lects.pdf) - Lecture notes from CMSC 754 Computational Geometry at the University of Maryland by David Mount (2002).
- Handbook of Discrete and Computational Geometry (https://www.csun.edu/~ctoth/Handbook/HDCG3.html) - A handbook by Jacob E. Goodman, Joseph O'Rourke, and Csaba D. Tóth (2017).
- Handbook of Computational Geometry (https://www.amazon.com/Handbook-Computational-Geometry-J-Sack-ebook/dp/B00QM3S1SC) - An overview of key concepts and results in computational geometry by
J. R. Sack, and J. Urrutia (1998).
- Computing in Euclidean Geometry (https://www.amazon.com/Computing-Euclidean-Geometry-Lecture-Notes/dp/9810218761) - A collection of surveys and exploratory articles about recent
developments in the field of computational Euclidean geometry by Ding-Zhu Du and Frank Hwang (1995).
Libraries
- CGAL (https://www.cgal.org/) - A software project that provides easy access to efficient and reliable geometric algorithms in the form of a C++ library. This website also has explanations
of many of these algorithms.
- Wykobi (http://www.wykobi.com/index.html) - An extremely efficient, robust, and simple to use C++ 2D/3D oriented computational geometry library.
- geometry3Sharp (https://github.com/gradientspace/geometry3Sharp) - Open-Source, Boost-licensed C# library for geometric computing.
- Computational Geometry Software Libraries (http://jeffe.cs.illinois.edu/compgeom/software.html) - UIUC's large collection and library of geometric software by Jeff Erickson.
- The Stony Brook Algorithm Repository (http://www3.cs.stonybrook.edu/~algorith/major_section/1.6.shtml) - A repository of algorithms based on The Algorithm Design Manual
(https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693).
- Geometric Tools (https://www.geometrictools.com/index.html) - A library of source code for computing in the fields of mathematics, graphics, image analysis, and physics that includes some
computational geometry algorithms.
- GeoLib (http://www.geolib.co.uk/) - A fast and efficient computational geometry library available in C++, C# and Java.
- hull.js (https://github.com/AndriiHeonia/hull) - JavaScript library that builds the convex hull of a set of points.
- S2 Geometry Library (https://github.com/google/s2geometry) - A package for manipulating geometric shapes. Unlike many geometry libraries, S2 is primarily designed to work with spherical
geometry, i.e., shapes drawn on a sphere rather than on a planar 2D map. This makes it especially suitable for working with geographic data.
- Computational Geometry Unity Library (https://github.com/Habrador/Computational-geometry) - A library of computational geometry algorithms for Unity.
Conferences
Strictly Computational Geometry
- Symposium on Computational Geometry (http://www.computational-geometry.org/) - An annual symposium.
- The Canadian Conference on Computational Geometry (http://www.cccg.ca/) - An annual international event for the dissemination of new results in the fields of computational and combinatorial
geometry. The conference is usually held in a Canadian city sometime in mid-August.
- Japan Conference on Discrete and Computational Geometry, Graphs, and Games (http://www.alg.cei.uec.ac.jp/itohiro/JCDCGG/) - A conference held annually since 1997, except for 2008.
Broader
- Symposium on Discrete Algorithms (https://www.siam.org/conferences/cm/conference/soda22) - ACM-SIAM, held annually.
- Annual ACM Symposium on Theory of Computing (http://acm-stoc.org/) - STOC covers all areas of research within Algorithms and Computation Theory.
- IEEE Symposium on Foundations of Computer Science (http://ieee-focs.org/) - The flagship conference sponsored by the IEEE Computer Society Technical Committee on the Mathematical
Foundations of Computing (TCMF) and covers a broad range of theoretical computer science.
- Annual Allerton Conference on Communications, Control and Computing (http://allerton.csl.illinois.edu/) - Draws some of the brightest minds from industry, academia, and government to
discuss innovation in the fields of communication, control, and computing.
Journals
- arXiv (https://arxiv.org/list/cs.CG/recent) - Recent submissions to arXiv about computational geometry.
- Elsevier (https://www.journals.elsevier.com/computational-geometry) - A forum for research in theoretical and applied aspects of computational geometry.
- Journal of Computational Geometry (https://jocg.org/index.php/jocg) - An international open access journal devoted to publishing original research of the highest quality in all aspects of
computational geometry.
Competitive Programming
- HackerEarth (https://www.hackerearth.com/practice/notes/computational-geometry-i-1/) - A set of articles on computational geometry.
- TopCoder (https://www.topcoder.com/community/data-science/data-science-tutorials/geometry-concepts-basic-concepts/) - A set of articles on computational geometry.
- HackerRank (https://www.hackerrank.com/domains/mathematics/geometry) - A set of programming problems using computational geometry.
- GeeksforGeeks (https://www.geeksforgeeks.org/geometric-algorithms/) - Implementations and explanations for a large number of commonly asked questions and common topics in geometric
algorithms.
Courses
Open Courses
- MIT OCW (https://ocw.mit.edu/courses/mechanical-engineering/2-158j-computational-geometry-spring-2003/) - A course taught by Nicholas Patrikalakis and Takashi Maekawa in 2013.
- Udemy (https://www.udemy.com/course/mastering-computational-geometry-cpp/) - A course about implementing computational geometry algorithms in C++.
- edX (https://www.edx.org/course/computational-geometry) - A course in computational geometry.
- Brilliant (https://brilliant.org/practice/computational-geometry-intro/) - Practice problems for basic concepts in computational geometry.
University Courses
- Brown University (http://cs.brown.edu/courses/cs252/) - A course taught by Roberto Tamassia in 2005.
- Washington University in St. Louis (http://www.cs.wustl.edu/~taoju/cse546/) - A course taught by Tao Ju in 2017.
- The University of Maryland (http://www.cs.umd.edu/~mount/754/) - A course taught by Dave Mount in 2002.
- UC Santa Barbara (https://sites.cs.ucsb.edu/~suri/cs235/235.html) - A course taught by Subhash Suri in 2021.
- UIUC (https://jeffe.cs.illinois.edu/teaching/compgeom/) - A course taught by Jeff Erickson in 2022.
- UC Berkeley (https://people.eecs.berkeley.edu/~jrs/274/) - A course taught by Jonathan Shewchuk in 2019.
- Tufts (http://www.cs.tufts.edu/comp/163/) - A course taught by Diane Souvaine in 2022.
- KIT (https://i11www.iti.kit.edu/teaching/sommer2018/compgeom/index) - A course taught by Tamara Mchedlidze and Chih-Hung Liu in 2018.
Miscellaneous
- The Open Problems Project (https://topp.openproblem.net/) - A project aimed to record important open problems in computational geometry and related fields.
- Wolfram (https://reference.wolfram.com/language/guide/GeometricComputation.html) - Documentation for computational geometry algorithms implemented in the Wolfram language.
- Matlab (https://www.mathworks.com/help/matlab/computational-geometry.html) - Documentation for computational geometry algorithms implemented in the Matlab.
Contributing
Contributions are welcome! See the contribution guidelines (contributing.md).