Course CGP102
Principles of 2D and 3D Computational Geometry
Principles of 2D and 3D Computational Geometry
Duration: 3 Days
Intended Audience
The course will be useful to a wide range of interests related to using and applying 2D and 3D geometry to software applications
The course is intended for programmers, engineers, computer game developers and teachers who need to refresh and extend their knowledge of geometry and who also need to acquire a good understanding of the computational aspects of both 2D and 3D geometry.
- computer game programmers
- graphics artists with an interest in "computer art"
- maths and science teachers who wish to develop educational software with a strong computational geometry component
- developers of modeling and simulation software
- developers of robotics systems software
A knowledge of maths up to about the level of the International Bacalaureate or A Level ( in the UK ) is assumed, as well as several years programming experience in C/C++. The course does not assume any detailed knowledge of 2D and 3D Computational Geometry.
Course Overview
The purpose of this course is to provide a sound foundation in the techniques and theory underlying 2D and 3D computational geometry. In addition to covering the course also overviews
- applying structured programming techniques
- applying computational geometry principles in OpenGL
- applied interactive graphics programming using event models and widget sets
- Note: this course can be tailored to use other programming languages such as Java or C# ( please inquire )
Course Contents
Overview of 2D and 3D Computational Geometry
- Points in Euclidean Space
- Vectors and Directions
- Vector Orthogonality, Linear Dependence and Basis Sets
- Planes and Lines
- Sidedness Predicates
Mappings and Transformations
- Affine transformations - basic definition
- Properties and composition of affine transformations
- Viewport mapping
- Representation of Affine transformations using matrices
- Orthogonal transformations
- Rotations in space and Euler angles
- Line and Segment intersections
- Clipping and splitting of segments and polygons
Structured and Object Oriented Programming Principles and Techniques
- Classes, objects, data structures, modules, components and interfaces
- Overview of UML2 diagrams
- Devising suitable classes and class hierarchies for computational geometry applications
- Collections, containers, iteration and iterators
Non-Euclidean Computational Geometry - theory, data structures and algorithms
- Spherical geometry
- Rotations and quaternions
- Projective geometry
- Intersections, clipping and splitting
Raster Graphics and Computational Geometry
- pixels, raster images and segment rasterisation
- rays and polygon point containment
- illuminations and shading
- ray tracing
Principles of Geometric and Solid Modeling
- boundary representation
- indexed face sets
- Platonic solids
- graphs of solids
- halfedge data structures and Euler operators
- Binary Space Partitioning (BSP) trees
- basics of Constructive Solid Geometry (CSG)
Interactive Graphics Programming
- Event driven software programming
- Widgets and widget sets
- working with OpenGL
- working with the GLOW toolkit
