MVE685 Computational geometric design Autumn 24
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.
Programming prerequisites
This course assumes some previous programming experience. If you are 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. For Python, I also recommend the onramp course: https://cs231n.github.io/python-numpy-tutorial (I urge you to take this tutorial to test your skills).
Throughout the course we shall use Python via the Jupyter web-based interface as well as via Rhino/Grasshopper. It is recommended that you use Jupyter in either of these 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 Conda-Forge Python distribution on your computer (available on Windows, Mac, and Linux). After installation of the base package, add the modules `numpy` and `matplotlib`.
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 this one:
Link between geometry and architecture
"Geometry links the art of building and the physics of space-time. Mathematical breakthroughs in geometry have led to new ways of designing our structures and our ability to visualise and describe the world, phenomena in nature and the universe. However, in contemporary architecture and structural engineering, a more profound understanding of geometry has been forgotten."
Emil Adiels, 2021
As an inspiration for the material we study in this course, I recommend you to read the introductory chapter in the licentiate thesis of Emil Adiels. Also, some time ago Emil gave an online seminar where he discussed how geometry is used in architectural workshops at Chalmers. I also recommend you to look at this video (50 min long).
Program
Each week has 2-3 sessions, where each session is typically a combination of lectures and computer exercises. The detailed schedule of the course is in TimeEdit.
Lectures
Week | Contents | Sections |
---|---|---|
1 | Intro to Python/NumPy/Matplotlib/Jupyter, repetition of linear algebra in 3D. |
Python Numpy Tutorial |
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 |
Exercises and worksheets
Week | Exercises |
---|---|
1 | Diagnostic test |
2 | Worksheet 1 |
3 | Worksheet 2 |
4 | Worksheet 3 |
5 | Worksheet 4 |
6 | Course project |
7 | Course project |
8 | Presentations |
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.
Course summary:
Date | Details | Due |
---|---|---|