# Transformations and Spaces

How to transform objects in space is one of the most fundamental things to learn when working with computer graphics. Without a proper understanding of the general concepts applied in this area one cannot harness the full power of GPU accellerated graphics or even get wrong (or at least unexpected) results when designing 2D or 3D scenes. This workshop intends to introduce the basics of space and transforms as they are applied in allmost all computer graphics related areas. We’ll use VVVV Gamma and VL.Stride for demonstration, but the concepts are equally valid for most other 3D related systems (e.g. Unity, Blender, …).

Understanding the concepts will allow you to apply transformations correctly in your patches and shader programs.

What will people learn?

• We’ll build a mental model of how to reason about space and coordinate systems.
• We’ll look into the mathematical representation of points and vectors to represent objects.
• Scaling, Rotation and Translation (in 2D): By applying simple maths (addition and multiplication) we can achieve the simplest transfomations. From here on, we’ll explore the concept of matrix maths to get a handy representation of these transformations, that can easily combine several transformations. Somewhere on the way we’ll have extend the space we are looking at to 3 dimensions, even though we still reason about 2D transformations.
• Transformations in 3D: understanding how stuff works in 2D enables us for applying these concepts in 3D space (where we suddenly have to use a 4-dimensional representation called Homogenous Coordinates).
• (If time permits: Why 3D rotations are tricky)
• Finally, we’ll see what role cameras play in transforming 3D points to their final position on the screen. You’ll get to know the mental model of object/model space, world space, camera space (view and projection), clip space, normalized device coordinates and at last screen space.

Who is it for?
Everyone looking for full control when working with transformations.

What knowledge do you presume your participants have?

• Familiarity with patching with VVVV and VL.Stride (knowledge of the Stride rendering system is of advantage, but not necessary).
• Not being afraid of simple maths

A session is 3h. How many sessions does your workshop need?
1-2 sessions

What’s the teaching level?