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

Lectures From Monday, Mar 4, 2013 to Friday, Jun 7, 2013

Monday Tuesday Thursday Friday 9:45 9:45 9:45 9:45 - Room N3
- Student evaluation:
- Test 1: Fri, Apr 5, 2012 (7 points)
- Test 2: Fri, May 3, 2012 (7 points)
- Test 3: Fri, Jun 7, 2012 (7 points)
- Project deadline: Fri, Jun 14, 2013 (10 points)
- Final exam: project discussion & oral questions

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

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

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

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

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

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

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

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

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

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