Teachers

Prof. Alberto Paoluzzi,

Ing. Francesco Furiani, 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.

Assignments

Scheduling

Course program

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 and convex coordinates, cones, polyhedra. Cellular complexes: polytopal, simplicial and cuboidal complexes. Convex hull, Dealunay triangulations, Voronoi complexes.

Introduction to Geometric Computing

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

Basic computer graphics

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

Graphics rendering

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

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.

WebGL graphics programming

Introduction to WebGL. 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. http://www.plasm.net, http://cvdlab.github.io/plasm.js/
  3. A. Paoluzzi, Geometric Programming for Computer-Aided Design, Wiley, 2003.