This course represents an introduction to computational geometry – a branch of algorithm theory that aims at solving problems about geometric objects. Its application areas include computer graphics, computer-aided design and geographic information systems, robotics, and many others. You will learn to apply to this end various algorithmic approaches, and asses their strong and weak points in a particular context, thus gaining an ability to choose the most appropriate method for a concrete problem.
We will cover a number of core computational geometry tasks, such as testing point inclusion in a polygon, computing the convex hull of a point set, intersecting line segments, triangulating a polygon, and processing orthogonal range queries. Special attention will be paid to a proper representation of geometric primitives and evaluation of geometric predicates, which are crucial for an efficient implementation of an algorithm.
Each module includes a selection of programming tasks that will help you both to strengthen the newly acquired knowledge and improve your competitive coding skills.
Point inclusion in a polygon
How can it be determined whether you have selected a particular region on an interactive map? This problem is an excellent starting point to get introduced to computational geometry and a variety of its applications!
Algorithmic processing of finely shaped objects may be computationally expensive. Can they be reasonably approximated, so as to decrease the handling costs? Convex hulls will come at hand!
Geographic information systems typically store a vast amount of data in the form of various maps. How can be those efficiently combined to provide an adequate response to our requests? Get acquainted with the key algorithmic aspects underlying map overlay!
In computer graphics, 3D-scenes are commonly represented by complex polygonal models. Do you wonder how those can be processed efficiently? Triangulation stays behind!
Orthogonal range search
How can computational geometry assist us in querying a database? You are about to learn the answer!