Course syllabus

 

Course PM

This page contains the program of the course: lectures, exercise sessions and computer labs. Other information, such as learning outcomes, teachers, literature and examination, are in a separate course PM.

Online teaching

Due to Covid-19, this course is given online, using the Zoom video system. The Zoom-link for all the lectures is given here: https://chalmers.zoom.us/j/61186092786. The password for the Zoom-lectures is sent out to each course participant in a separate Canvas message (make sure you check your Canvas account for messages). If you are not registered properly at this course (so that you did not receive the password) please contact the examiner. 

Programming prerequisites

This course assumes some previous programming experience. If you are completely new to programming, I recommend that you read this online book. Most of the programming in the course is done in the Python language. If you are new to Python, but familiar with MATLAB, please have a look at this NumPy for MATLAB users tutorial. Throughout the course we shall use Python via the Jupyter web-based interface. It is recommended that you use Jupyter in either of these two ways:

  • If you have a Google account, you can use the online Colab environment. This allows you to create, import, and share Jupyter Notebooks and to run the code online. You must be connected at all times to use Colab Notebooks.
  • If you prefer to work on your local computer (so that you don't have to be online all the time or if you don't have a Google account), you can install the Anaconda Python distribution on your computer (available on Windows, Mac, and Linux).

Mathematical prerequisites

This course assumes familiarity with mathematical concept of basic linear algebra in 3 dimensions (dot products, cross products, matrices, determinants). If you are not familiar with linear algebra, it is strongly recommended that you first study this material, for example by taking an on-line course, such as any of these:

Program

Each week has 2 lectures and 1 computer exercise. The detailed schedule of the course is in TimeEdit. The introductory meeting is November 3, at 10.00 in Zoom (see link above).

Lectures

Week Contents Sections
1 Intro to Python/NumPy/Matplotlib/Jupyter, repetition of linear algebra in 3D.

Python Numpy Tutorial
Appendix A
(Pottmann et al)

2 Geometric primitives and coordinate systems (slides) Chapter 1.1: the Cartesian coordinate system, cuboids, cylinders
Chapters 1.2 and 3.7: cylindrical and spherical coordinates, cones, spheres, ellipsoids
Chapters 3.2-3.3: pyramids, prisms, Platonic solids
3 More on coordinate systems, transformations and projections (slides) Chapter 6.6: homogeneous coordinates
Chapters 5-6: rigid body motion (planar and 3D), linear and affine transformations, projective transformations
Chapter 2: orthographic projection, perspective projection
4 Deformations (slides) Chapters 4.1-4.3: set operations
Chapters 10.1, 10.3-10.4: offsets, morphological operations Chapters 13.1-13.4: slice deformations, tapering, twisting
5 Modelling of curves and surfaces

Presentation of course projects
Chapters ???: barycentric coordinates
Chapters 7.2-7.3: parametric curves, conic sections
Chapters 8.2-8.4: Bézier curves, splines, NURBS
Chapters 11.2-11.3: Bézier surfaces, B-spline surfaces, (and possibly NURBS surfaces)
6 Digital reconstruction and fitting of physical models Chapter 17: point clouds, volumetric models, surface fitting, noise handling
Chapter 18.1: parameter optimisation
7 Work with course projects
8 Work with course projects
Exam week Hand in course projects

 

Back to the top

Exercises and worksheets

Week Exercises
1 Diagnostic test
2
3 Worksheet 1
4 Worksheet 2
5 Worksheet 3
6 Worksheet 4
7 Course project
8 Course project

 

Back to the top

Computer labs

In this course we use two programming environment: Rhino+Grasshopper (weeks 7-8) and Python/Numpy (weeks 2-6). You're assumed to possess a basic understanding of both of these tools. For Python, your knowledge should be at least what is included in the onramp course: https://cs231n.github.io/python-numpy-tutorial (we urge you to take this tutorial to test your skills).

Back to the top

Course summary:

Date Details Due