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, geometric computing and scientific visualization. The theory is carefully linked to practice by implementing programming projects in a cutting edge graphics environment based on Javascript and webGL.


Grade recording

Programming test

Just in case that the sum of homework grades is less than 14


Course program


Equivalence with the course of 'Computer-Aided Design' (DM 509)

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, Coffeescript.

Polyhedral geometry

Linear and affine spaces, convex sets, affine coordinates, cones, polyhedra. Cellular complexes: polytopal, simplicial and cuboidal complexes. Convex hull, Dealunay triangulations, Voronoi complexes.

Geometric programming

Introduction to PLaSM (Programming Language for Solid Modeling) and to the plasm.js module. First geometric constructions.

Basic computer graphics

Affine transformations, graphical primitives, hierarchical structures and scene graphs.


Equivalence with the course of 'Computer Graphics' (DM 509)

Introduction to Geometric Computing

Curves, surfaces, solids. Parametric representations, rational and polynomial maps, tensor product patches, transfinite methods.

Graphics rendering

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

WebGL programming

WebGL frameworks, buffers, renderbuffers, framebuffers, program objects, shaders, culling, textures, blending, depth buffer, array data, uniform and attribute variables

Student projects

Each student is required to design and implement a personal project in the area of biomedical infographics.

Teaching materials

  1. Lecture notes, examples, and exercises.
  2. A. Paoluzzi, Geometric Programming for Computer-Aided Design, Wiley, 2003.
  3. https://github.com/cvdlab/
  4. http://www.plasm.net