Portfolio

 

Overview

In april 2008 I created a small portfolio to demonstrate some of my more interesting programming projects. On this page, I provide the source code, as well as the pre compiled binaries prepared to run on Microsoft Windows. Please note that the files here are under copyright and provided for demonstration purposes only. If you want to use them, please contact me.


Please take also a look at our Xbox 360 game S.P.H.E.R.E.S! Contrary to the projects on this site, the development of S.P.H.E.R.E.S was a team effort, but with great results.

  1. Bounce is an XNA demo application, written to demonstrate collision detection based on Binary Space Partitioning (BSP) trees. It consists of a small tool that can parse a given Wavefront .obj file, and compute a BSP tree from the geometry in the file. The tool writes the generated BSP tree to a file, which in turn can be read by a C# class of the Bounce XNA project.


  2. The Bounce demo application puts the player in an arena (same model as in S.P.H.E.R.E.S) in space. Using the keyboard and mouse, he/she can navigate freely, and by pressing the left mouse button, he/she can release a small sphere. The released spheres are simulated by a rigid body physics engine, which lets them bounce off walls and floors of the arena in a physically correct way. For the collision detection the BSP tree is used, allowing direct sphere-mesh collisions. On my test system (Pentium IV 2.8 Ghz, GeForce 7200LE), approximately 100 spheres can be simulated at 60 FPS, testing more than 7.000.000 triangles in approximately 10 ms for collision. On the graphics side, the demo implements hardware instancing to enable fast drawing of huge numbers of spheres. Tangent space normal mapping improves the visual quality.


  1. DEMO FEATURES:


  1. Generation of BSP trees from Wavefront .obj files

  2. Direct sphere-mesh collision detection using BSP tree

  3. Rigid body physics engine

  4. Hardware instancing

  5. Normal mapping


  1. DEMO REQUIREMENTS:


  1. Microsoft XNA Framework Redistributables 2.0

  2. DirectX 9.0c*

  3. .Net 2.0 plus (C++ 2005 SP1 Redist - OR -  .Net 2.0 SP1)

  4. Windows XP (Vista should also work)

  5. Graphics Card with support for shader model 3


  1. *Please note that the XNA Framework uses DirectX components that are not installed by default on some machines. You are thus advised to use the DirectX web installer linked above even if you already have DirectX installed.


  1. DOWNLOAD:

  1. Below you can find some screenshots of the demo programs. Click on the images to get a higher resolution.

Bounce

Disjoint paths

Copyright: Theodor Mader, 2008

  1. DisjointPaths is a small demo program to demonstrate pathfinding in graphs. The user is provided with a simple user interface which allows him to create an arbitrary graph. After each change to the graph, the program automatically computes the maximal number of edge disjoint paths between the start vertex and the end vertex. Edge disjoint, in this context, means that no edge in the graph can be used by more than one path. Additionally, the paths are computed in such a way that they contain the smallest number of edges possible, i.e. that their overall length is minimized.


  1. The algorithm hence performs a two fold optimization:

  2. Maximize the number of edge disjoint paths between start and end

  3. Minimize the number of edges used by the paths.


  1. The program uses an adapted version of the Ford Fulkerson flow algorithm, in order to compute the minimum cost edge disjoint paths. The algorithm runs in O( n2m ) time. For a detailed discussion of the algorithm, see the file Algorithm.pdf, included in the download packages.


DEMO REQUIREMENTS:


  1. Windows XP

  2. Usage on Linux and Mac OS requires recompilation


DOWNLOAD

Precompiled 
executablePortfolio_files/Bounce_1.zipPortfolio_files/Bounce_1.zipPortfolio_files/Bounce_2.zipshapeimage_2_link_0shapeimage_2_link_1