Prof. Alberto Paoluzzi,

Ing. Enrico Marino, Ing. Federico Spini


The course aims to develop the skill needed to (a) produce geometric models of highly complex components and structures, both natural and man-made, and (b) understand the design and development of computer-aided modeling and simulation. The lectures offer some background about the geometric and mathematical techniques required, and provide insight into some main topics of computer graphics techniques, including computer rendering and geometric computing. The theory is carefully linked to practice by implementing programming projects in cutting edge graphics environments based on Javascript and Python.


Course program

Introduction to Python programming

Why Python? Getting started: basic syntax by examples.

Polyhedral geometry

Linear and affine spaces, convex sets, affine and convex coordinates, Cellular complexes: polytopal, simplicial and cuboidal complexes.

Introduction to Geometric Computing

Parametric representation. Curves, surfaces, solids. Rational and polynomial maps, tensor product patches, transfinite methods. Solid modeling. Motion modeling.

Basic computer graphics

Affine transformations, hierarchical structures and scene graphs.

Graphics rendering

2D and 3D pipelines, projections, materials and illumination models, shading, texture mapping.

Introduction to web programming with Javascript

Why JavaScript? Environment setup: Chrome, Git, GitHub. Control flow, functions, closures; objects, built-in objects; prototype, inheritance; coding style guide, the Javascript ecosystem.

Three.js graphics programming

A note on WebGL. Tutorials on Three.js web graphics framework

Student projects

Each student is required to design and implement a personal project in the area of Visual data structures and computational modeling.

Teaching materials

  1. Lecture notes, examples, and exercises: https://github.com/cvdlab-cg/
  2. Interactive 3D Graphics (web course) https://www.udacity.com/wiki/cs291
  3. http://www.plasm.net, http://cvdlab.github.io/plasm.js/
  4. A. Paoluzzi, Geometric Programming for Computer-Aided Design, Wiley, 2003.