Teachers

Prof. Alberto Paoluzzi, Ing. Enrico Marino, Ing. Federico Spini

Objectives

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 Python.

Scheduling

Course program

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.

Introduction to Python programming

Why Python? Environment setup: Python, Scipy, Ipython, Pyplasm. Getting started: basic syntax by examples. Best practices: list comprehensions, iterators, documentation, optimization.

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.

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: https://github.com/cvdlab-cg/
  2. http://www.plasm.net
  3. A. Paoluzzi, Geometric Programming for Computer-Aided Design, Wiley, 2003.