## Prof. Christoph M. Hoffmann

### Office Hours

We are informal, so just show up at my office in 3183 Lawson.
If you can't find me, send me email.

### Course Information

The course delves into advanced topis of computer graphics. These advanced fundamentals you learn how to master will include a variety of topics, such as quaternions for orientation, projective geometry for manipulating perspective, and much more. Specifically, we will learn how to use and implement constraints that come up when assembling things.

This is a project course oriented towards implementing. This semester we will implement virtual Magna Tiles.

Why would one do that? Consider the picture

You probably recognize a few of the polyhedra shown. How would you go about constructing them virtually? Can you do it if the coordinate system is just so? What properties would simplify your task? Would it help to know the (dihedral) angles between faces? Should you have to know any of these things?

If you had these tiles physically in your hands and a way to stick edges together, many of the math questions above would be unnecessary. You'd just do it. So let's do this virtually the simplest way possible: You click on the edges you want to glue together, the system figures out the transformation to do it...

Constraint-based virtual assembly comes up almost everywhere in industry. It also comes up in gaming. Constraint solving is a key technology, yet nobody teaches it... until now! Take advantage of this opportunity that may not come along for you again.

Afraid? Talk to the students who took CS 434 in Spring of 2017. They implemented a 3d marching cubes algorihm and visualized with it some exotic surfaces. They thought they could not do it, but they did it! So don't short-change yourself -- take the challenge and move ahead in your prospects after graduation.

### Project

We implement virtual Magna Tiles by direct manipulation and archival through constraints matching features. Starting with a few simple tiles, say squares and equilateral triangles, we develop solvers and interfaces. Gradually we will introduce tiles with other shapes and build complex structures.

### Tools

Implementation is in C++ and the Visual Studio develop environment, on PCs. Visual Studio is free for you (I understand).

You need the header file, library and dll of freeglut. Download the zip file with these things. Unzip and install it in your project.

When developing your programs, keep in mind that you need to keep it in the non-volatile storage: Use the W-drive. Follow these instructions.