Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Mastering Computational Geometry Algorithms with C++
Rating: 4.4 out of 5(245 ratings)
2,704 students

Mastering Computational Geometry Algorithms with C++

Zero to Hero guide to Computational geometry algorithm in C++.
Created byKasun Liyanage
Last updated 12/2021
English
English [Auto],Korean [Auto],

What you'll learn

  • Applications of Computational Geometry algorithms.
  • Able to implement Computation Geometry algorithms with C++
  • Precision and Performance concern and how to solve them when implementing Computational Geometry Algorithms
  • Solid understanding on Mathematics and the interpretation of Mathematics behind Computational Geometry
  • Solid understanding on Vector algebra to be using in Computational Geometry.

Coding Exercises

This course includes our updated coding exercises so you can practice your skills as you learn.

See a demo
Image of coding exercise example

Course content

8 sections90 lectures11h 48m total length
  • Setting up the Environment4:52

    Explore how to set up and engage with the course on computational geometry, including the GitHub repository, resources, simulations, and interactive exercises to build practical algorithms.

  • Hello Computational Geometry7:30

    Define computational geometry and its algorithms for 2d and 3d space, focusing on collision detection, convex hulls, and bounding boxes. Show how BSP space partitioning and multi-stage checks optimize performance.

  • Learning Goals for this Section1:00

    Identify and master vector algebra operations, learn 2D and 3D primitives, lines and planes, implement a vector class, and perform distance, angle, and intersection queries plus point orientation w.r.t. line.

  • Application of Computational Geometry
  • Basic Terms6:17

    The lecture introduces points, lines, line segments, and rays; defines polygons as planar, bounded figures with edges, and distinguishes simple and complex and convex and concave polygons, polytopes and polyhedrons.

  • Introduction to Vector Algebra13:59

    Explore practical visualization of vectors in 2d and 3d, distinguish scalars from vectors, and learn core operations, vector addition, subtraction, and scalar scaling, along with vector magnitude and normal vectors.

  • Vector Dot Product6:14

    Compute the dot product of two vectors by multiplying their magnitudes with the cosine of the angle, yielding a scalar. Relate algebraic and geometric definitions; perpendicular vectors yield zero.

  • Vector Cross Product13:05

    Explore the vector cross product in 3d space, using determinant methods for 2d and 3d cases, with the right-hand rule guiding direction and magnitude linked to parallelogram area.

  • Basics Of Vector Algebra
  • Implementation of Vector Class20:01

    Develop a templated vector class as the foundation for geometric primitives, supporting 2d and 3d, multiple numeric types, constructors, arithmetic operators, indexing, and dot and cross products.

  • Magnitude and Normalize functions.4:28

    Define and implement magnitude as the square root of the sum of squares, then normalize vectors by dividing each component by their magnitude to obtain unit direction vectors.

  • Basic operations of Vector Class
  • Finding Relative Position of a Point Compared to a Line16:42

    Classify a point's relative position to a directed line segment using two-dimensional cross products and area of triangle, defining left, right, on the line, on extended line, and beyond cases.

  • Representation of a Line10:33

    Study line representations from slope-intercept to the parametric form using a point and a direction vector. Apply normal form, half-planes, and intersections in a templated C++ line class.

  • Representation of a Plane7:37

    Represent a plane in 3d with a normal and a point, deriving ax+by+cz=d where d=n·Q. Implement a C++ plane with point and normal constructors and three-point construction via cross product.

  • Intersection of two lines.7:08

    Learn to determine if two line segments intersect using orientation tests and endpoint side checks, combining results with xor, and prepare for computing the intersection point later.

  • Intersection Point of Two Lines6:21

    Compute the intersection point of two lines using their parametric form, direction vectors, and a normal vector, then solve for the parameter and substitute to obtain coordinates.

  • Calculating Angle Between Two Lines10:07

    Compute the angle between two lines in 2d and 3d using directional vectors, magnitudes, and dot products. Explore parallel, intersecting, and skew lines, with normalization of vectors for simplified calculations.

  • Angle Between a Line and a Plane6:02

    Compute the angle between a line and a plane using the line's direction and the plane's normal, then subtract from 90 degrees to obtain the plane angle.

  • Collinear and Coplanar tests10:43

    Explore collinear tests to decide if points lie on the same line, and coplanar tests using the scalar triple product to check if four points share a plane.

  • Distance Between Point and a Line7:02

    Define the point-to-point distance in 2d and 3d, then derive the point-to-line distance by constructing the perpendicular to the line, finding the intersection, and measuring the distance.

  • Distance Between Point and a Plane8:03

    Explore how to compute the distance from a point to a plane by projecting onto the plane along the plane normal, using dot products with a normalized normal vector.

  • Intersection Between Line and a Plane8:38

    Derive the intersection of a line and a plane in 2d/3d using the line’s parametric form, plane normal, and dot products; compute the intersection point or handle parallel cases.

  • Intersection between two Plane8:40

    Derive the line of intersection between two planes in 3-d space by using the cross product of normals for direction and solving plane equations to find a point on line.

  • Overview of needed Data Structures and Algorithms12:01

    Explore core data structures for geometric algorithms: stacks, queues, priority queues, and linked lists, with vectors; practice push, pop, top, front, back, and memory considerations for efficient C++.

Requirements

  • Knowledge on basic data structures and algorithms will be helpful.
  • Hands on experience with any programming language.

Description

Computational Geometry algorithms have tons of applications in the fields like computer games, computer simulation, computer graphic, CAD/CAM software's, Navigation systems and many more day to day applications. But the data structure and algorithms fall under this category is still considered specialized area due to inherit complexities of those. To become fluent in computational geometry you need at least following knowledge.

  • Through knowledge on linear algebra and geometrical representation of  those.

  • Mathematical representation of  geometrical shapes.

  • Computational steps for primitive test like intersection and distance queries.

  • Good understanding on algorithms in computational geometry and where to use those.

In this course I will cover all the required knowledge for you to be fluent and confident on Computational Geometry. Following are the topic expected to cover in this course.

Topics

  1. Basics of linear algebra including vector and matrix arithmetic and implementation of those operations.

  2. Mathematical representation of basic geometry primitives and implementation.

  3. Computational approach for finding intersections and distance between basic primitives like rectangles, lines, planes etc.

  4. Orientation test on geometric primitives.

  5. Polygon triangulation.

  6. Monotone polygon partition.

  7. Plane sweep algorithms.

  8. Convex hull calculations and implementation in both 2D and 3D space.

  9. Overview of simple tree data structures like Binary Search Trees (BST) and Red Black Tree (RBT)

  10. KD Tree implementation and range queries using KDTrees.

  11. Range Trees..

  12. Graph Theory



Who this course is for:

  • Algorithm enthusiasts.
  • Competitive Programmers.
  • Anyone who seek advanced real-world applications of algorithms
  • University students
  • Software developers