278 lines
13 KiB
HTML
278 lines
13 KiB
HTML
<h1 id="awesome-computational-geometry-awesome">Awesome Computational
|
||
Geometry <a href="https://awesome.re"><img
|
||
src="https://awesome.re/badge.svg" alt="Awesome" /></a></h1>
|
||
<blockquote>
|
||
<p>A curated list of awesome computational geometry visualizations,
|
||
libraries, and resources.</p>
|
||
</blockquote>
|
||
<p><a
|
||
href="https://en.wikipedia.org/wiki/Computational_geometry">Computational
|
||
geometry</a> 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.</p>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#algorithm-visualizations">Algorithm
|
||
Visualizations</a></li>
|
||
<li><a href="#books">Books</a></li>
|
||
<li><a href="#notes">Notes</a></li>
|
||
<li><a href="#libraries">Libraries</a></li>
|
||
<li><a href="#conferences">Conferences</a>
|
||
<ul>
|
||
<li><a href="#strictly-computational-geometry">Strictly Computational
|
||
Geometry</a></li>
|
||
<li><a href="#broader">Broader</a></li>
|
||
</ul></li>
|
||
<li><a href="#journals">Journals</a></li>
|
||
<li><a href="#competitive-programming">Competitive Programming</a></li>
|
||
<li><a href="#courses">Courses</a>
|
||
<ul>
|
||
<li><a href="#open-courses">Open Courses</a></li>
|
||
<li><a href="#university-courses">University Courses</a></li>
|
||
</ul></li>
|
||
<li><a href="#miscellaneous">Miscellaneous</a></li>
|
||
</ul>
|
||
<h2 id="algorithm-visualizations">Algorithm Visualizations</h2>
|
||
<ul>
|
||
<li><a href="https://visualgo.net/en/convexhull?slide=1">Convex Hull</a>
|
||
- The convex hull of a shape is the smallest convex set that contains
|
||
it.</li>
|
||
<li><a
|
||
href="https://erencan-02.github.io/ConvexHullVisualizer/index.html">Convex
|
||
Hull Algorithms</a> - 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.</li>
|
||
<li><a
|
||
href="http://sophiedasinger.github.io/Classwork/163proj/#viz">Chan’s
|
||
Algorithm</a> - An optimal output-sensitive algorithm to compute the
|
||
convex hull of a set of points in 2 or 3 dimensions.</li>
|
||
<li><a href="http://rkaneriya.github.io/point-location/">Kirkpatrick’s
|
||
Point location</a> - A data structure and method for point location with
|
||
O(n) space and O(log n) query time using triangulation.</li>
|
||
<li><a href="http://alexbeutel.com/webgl/voronoi.html">Voronoi
|
||
Diagrams</a> - A partition of a plane into regions close to a given set
|
||
of points.</li>
|
||
<li><a href="https://www.desmos.com/calculator/ejatebvup4">Fortune’s
|
||
Algorithm</a> - A sweep line algorithm for generating the Voronoi
|
||
diagram in O(n log n) time and O(n) space.</li>
|
||
<li><a
|
||
href="https://people.eng.unimelb.edu.au/henli/programs/duality-demo/">Point/Line
|
||
Duality</a> - A type of mathematical duality frequently used in
|
||
computational geometry algorithms.</li>
|
||
<li><a
|
||
href="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=false&threshold=1.0&points=0&required=False">k-d
|
||
tree</a> - A method of partitioning k-dimensional space in an efficient
|
||
way for searches like nearest neighbors.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=SBFwgR4K1Gk">Configuration
|
||
Space</a> - The space of possible configurations of an object like a
|
||
robot.</li>
|
||
</ul>
|
||
<h2 id="books">Books</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.amazon.com/Computational-Geometry-Applications-Mark-Berg/dp/3540779736">Computational
|
||
Geometry: Algorithms and Applications</a> - A textbook by Mark de Berg,
|
||
Otfried Cheong, Marc van Kreveld, and Mark Overmars (2008).</li>
|
||
<li><a
|
||
href="https://www.amazon.com/Computational-Geometry-Cambridge-Theoretical-Paperback/dp/0521649765">Computational
|
||
Geometry in C</a> - 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).</li>
|
||
<li><a
|
||
href="https://www.amazon.com/Computational-Geometry-Introduction-Monographs-Computer/dp/0387961313">Computational
|
||
Geometry: An Introduction</a> - An introductory textbook by Franco P.
|
||
Preparata and Michael I. Shamos (1993).</li>
|
||
<li><a
|
||
href="https://www.amazon.com/Algorithmic-Geometry-Jean-Daniel-Boissonnat/dp/0521565294">Algorithmic
|
||
Geometry</a> - A textbook by Jean-Daniel Boissonnat, Mariette Yvinec,
|
||
and Herve Bronniman (1998).</li>
|
||
<li><a
|
||
href="https://www.amazon.com/Discrete-Computational-Geometry-Satyan-Devadoss/dp/0691145539">Discrete
|
||
and Computational Geometry</a> - 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).</li>
|
||
<li><a
|
||
href="http://www.clearviewtraining.com/interactive-computational.html">Interactive
|
||
Computational Geometry - A taxonomic approach</a> - An interactive
|
||
introduction to some of the fundamental algorithms of computational
|
||
geometry with Mathematica by Jim Arlow (2014).</li>
|
||
</ul>
|
||
<h2 id="notes">Notes</h2>
|
||
<ul>
|
||
<li><a
|
||
href="http://www.cs.umd.edu/~mount/754/Lects/754lects.pdf">Lecture
|
||
Notes</a> - Lecture notes from CMSC 754 Computational Geometry at the
|
||
University of Maryland by David Mount (2002).</li>
|
||
<li><a href="https://www.csun.edu/~ctoth/Handbook/HDCG3.html">Handbook
|
||
of Discrete and Computational Geometry</a> - A handbook by Jacob E.
|
||
Goodman, Joseph O’Rourke, and Csaba D. Tóth (2017).</li>
|
||
<li><a
|
||
href="https://www.amazon.com/Handbook-Computational-Geometry-J-Sack-ebook/dp/B00QM3S1SC">Handbook
|
||
of Computational Geometry</a> - An overview of key concepts and results
|
||
in computational geometry by J. R. Sack, and J. Urrutia (1998).</li>
|
||
<li><a
|
||
href="https://www.amazon.com/Computing-Euclidean-Geometry-Lecture-Notes/dp/9810218761">Computing
|
||
in Euclidean Geometry</a> - 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).</li>
|
||
</ul>
|
||
<h2 id="libraries">Libraries</h2>
|
||
<ul>
|
||
<li><a href="https://www.cgal.org/">CGAL</a> - 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.</li>
|
||
<li><a href="http://www.wykobi.com/index.html">Wykobi</a> - An extremely
|
||
efficient, robust, and simple to use C++ 2D/3D oriented computational
|
||
geometry library.</li>
|
||
<li><a
|
||
href="https://github.com/gradientspace/geometry3Sharp">geometry3Sharp</a>
|
||
- Open-Source, Boost-licensed C# library for geometric computing.</li>
|
||
<li><a
|
||
href="http://jeffe.cs.illinois.edu/compgeom/software.html">Computational
|
||
Geometry Software Libraries</a> - UIUC’s large collection and library of
|
||
geometric software by Jeff Erickson.</li>
|
||
<li><a
|
||
href="http://www3.cs.stonybrook.edu/~algorith/major_section/1.6.shtml">The
|
||
Stony Brook Algorithm Repository</a> - A repository of algorithms based
|
||
on <a
|
||
href="https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693">The
|
||
Algorithm Design Manual</a>.</li>
|
||
<li><a href="https://www.geometrictools.com/index.html">Geometric
|
||
Tools</a> - A library of source code for computing in the fields of
|
||
mathematics, graphics, image analysis, and physics that includes some
|
||
computational geometry algorithms.</li>
|
||
<li><a href="http://www.geolib.co.uk/">GeoLib</a> - A fast and efficient
|
||
computational geometry library available in C++, C# and Java.</li>
|
||
<li><a href="https://github.com/AndriiHeonia/hull">hull.js</a> -
|
||
JavaScript library that builds the convex hull of a set of points.</li>
|
||
<li><a href="https://github.com/google/s2geometry">S2 Geometry
|
||
Library</a> - 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.</li>
|
||
<li><a
|
||
href="https://github.com/Habrador/Computational-geometry">Computational
|
||
Geometry Unity Library</a> - A library of computational geometry
|
||
algorithms for Unity.</li>
|
||
</ul>
|
||
<h2 id="conferences">Conferences</h2>
|
||
<h3 id="strictly-computational-geometry">Strictly Computational
|
||
Geometry</h3>
|
||
<ul>
|
||
<li><a href="http://www.computational-geometry.org/">Symposium on
|
||
Computational Geometry</a> - An annual symposium.</li>
|
||
<li><a href="http://www.cccg.ca/">The Canadian Conference on
|
||
Computational Geometry</a> - 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.</li>
|
||
<li><a href="http://www.alg.cei.uec.ac.jp/itohiro/JCDCGG/">Japan
|
||
Conference on Discrete and Computational Geometry, Graphs, and Games</a>
|
||
- A conference held annually since 1997, except for 2008.</li>
|
||
</ul>
|
||
<h3 id="broader">Broader</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.siam.org/conferences/cm/conference/soda22">Symposium
|
||
on Discrete Algorithms</a> - ACM-SIAM, held annually.</li>
|
||
<li><a href="http://acm-stoc.org/">Annual ACM Symposium on Theory of
|
||
Computing</a> - STOC covers all areas of research within Algorithms and
|
||
Computation Theory.</li>
|
||
<li><a href="http://ieee-focs.org/">IEEE Symposium on Foundations of
|
||
Computer Science</a> - 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.</li>
|
||
<li><a href="http://allerton.csl.illinois.edu/">Annual Allerton
|
||
Conference on Communications, Control and Computing</a> - Draws some of
|
||
the brightest minds from industry, academia, and government to discuss
|
||
innovation in the fields of communication, control, and computing.</li>
|
||
</ul>
|
||
<h2 id="journals">Journals</h2>
|
||
<ul>
|
||
<li><a href="https://arxiv.org/list/cs.CG/recent">arXiv</a> - Recent
|
||
submissions to arXiv about computational geometry.</li>
|
||
<li><a
|
||
href="https://www.journals.elsevier.com/computational-geometry">Elsevier</a>
|
||
- A forum for research in theoretical and applied aspects of
|
||
computational geometry.</li>
|
||
<li><a href="https://jocg.org/index.php/jocg">Journal of Computational
|
||
Geometry</a> - An international open access journal devoted to
|
||
publishing original research of the highest quality in all aspects of
|
||
computational geometry.</li>
|
||
</ul>
|
||
<h2 id="competitive-programming">Competitive Programming</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.hackerearth.com/practice/notes/computational-geometry-i-1/">HackerEarth</a>
|
||
- A set of articles on computational geometry.</li>
|
||
<li><a
|
||
href="https://www.topcoder.com/community/data-science/data-science-tutorials/geometry-concepts-basic-concepts/">TopCoder</a>
|
||
- A set of articles on computational geometry.</li>
|
||
<li><a
|
||
href="https://www.hackerrank.com/domains/mathematics/geometry">HackerRank</a>
|
||
- A set of programming problems using computational geometry.</li>
|
||
<li><a
|
||
href="https://www.geeksforgeeks.org/geometric-algorithms/">GeeksforGeeks</a>
|
||
- Implementations and explanations for a large number of commonly asked
|
||
questions and common topics in geometric algorithms.</li>
|
||
</ul>
|
||
<h2 id="courses">Courses</h2>
|
||
<h3 id="open-courses">Open Courses</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://ocw.mit.edu/courses/mechanical-engineering/2-158j-computational-geometry-spring-2003/">MIT
|
||
OCW</a> - A course taught by Nicholas Patrikalakis and Takashi Maekawa
|
||
in 2013.</li>
|
||
<li><a
|
||
href="https://www.udemy.com/course/mastering-computational-geometry-cpp/">Udemy</a>
|
||
- A course about implementing computational geometry algorithms in
|
||
C++.</li>
|
||
<li><a href="https://www.edx.org/course/computational-geometry">edX</a>
|
||
- A course in computational geometry.</li>
|
||
<li><a
|
||
href="https://brilliant.org/practice/computational-geometry-intro/">Brilliant</a>
|
||
- Practice problems for basic concepts in computational geometry.</li>
|
||
</ul>
|
||
<h3 id="university-courses">University Courses</h3>
|
||
<ul>
|
||
<li><a href="http://cs.brown.edu/courses/cs252/">Brown University</a> -
|
||
A course taught by Roberto Tamassia in 2005.</li>
|
||
<li><a href="http://www.cs.wustl.edu/~taoju/cse546/">Washington
|
||
University in St. Louis</a> - A course taught by Tao Ju in 2017.</li>
|
||
<li><a href="http://www.cs.umd.edu/~mount/754/">The University of
|
||
Maryland</a> - A course taught by Dave Mount in 2002.</li>
|
||
<li><a href="https://sites.cs.ucsb.edu/~suri/cs235/235.html">UC Santa
|
||
Barbara</a> - A course taught by Subhash Suri in 2021.</li>
|
||
<li><a href="https://jeffe.cs.illinois.edu/teaching/compgeom/">UIUC</a>
|
||
- A course taught by Jeff Erickson in 2022.</li>
|
||
<li><a href="https://people.eecs.berkeley.edu/~jrs/274/">UC Berkeley</a>
|
||
- A course taught by Jonathan Shewchuk in 2019.</li>
|
||
<li><a href="http://www.cs.tufts.edu/comp/163/">Tufts</a> - A course
|
||
taught by Diane Souvaine in 2022.</li>
|
||
<li><a
|
||
href="https://i11www.iti.kit.edu/teaching/sommer2018/compgeom/index">KIT</a>
|
||
- A course taught by Tamara Mchedlidze and Chih-Hung Liu in 2018.</li>
|
||
</ul>
|
||
<h2 id="miscellaneous">Miscellaneous</h2>
|
||
<ul>
|
||
<li><a href="https://topp.openproblem.net/">The Open Problems
|
||
Project</a> - A project aimed to record important open problems in
|
||
computational geometry and related fields.</li>
|
||
<li><a
|
||
href="https://reference.wolfram.com/language/guide/GeometricComputation.html">Wolfram</a>
|
||
- Documentation for computational geometry algorithms implemented in the
|
||
Wolfram language.</li>
|
||
<li><a
|
||
href="https://www.mathworks.com/help/matlab/computational-geometry.html">Matlab</a>
|
||
- Documentation for computational geometry algorithms implemented in the
|
||
Matlab.</li>
|
||
</ul>
|
||
<h2 id="contributing">Contributing</h2>
|
||
<p>Contributions are welcome! See the <a
|
||
href="contributing.md">contribution guidelines</a>.</p>
|