My Projects

This site contains a selected number of projects I did (and most probably never completely finished) and am currently working on. It is not complete and gets updated (hopefully) regularly.

Map of Vienna (joint project with Jakob Steininger)

Imagine a city. Given a location in it, a natural question is how centrally located it is? Clearly, one may take the Euclidean distance from the location to the city center, however this hardly answers the question: in the real world the fastest path is not the "beeline" of the two points. We are restricted by houses, roads, traffic, etc. This leads to the investigation of the "central" locations if the protagonist is walking or driving. In my eyes, even more interesting, is the question for such locations if public transport is allowed. I live in Vienna, therefore my task is:

Visualize the minimal time needed to get by public transport and walking from any point in Vienna to its city center Stephansplatz.

A detailed map of all public transport of Vienna is available here at the official Website of Wiener Linien, the company running most of the public transit network in the city.

In order to deduce the time required to get from A to B by public transport it is necessary to use a good API. Even though Wiener Linien and Google provide such services, it turned out that the simplest way is to use Microsoft Bing Maps. Indeed, the following function was easily implemented and consists of just a few lines of Python code: origin2time(origins, destination). It gets as input a list of origins and a destination (as coordinates) and outputs a list of minutes needed to get from each origin to the destination. For example,


origin1 = (48.219474,16.367809)      		#Faculty of Mathematics
origin2 = (48.214839, 16.406007)     		#University of Economics and Business
destination = (48.208821, 16.372493) 		#Stephansplatz
origin2time([origin1, origin2],destination)
											
outputs [11,18], meaning that it takes 11 minutes to get from Faculty of Mathematics to Stephansplatz and 18 minutes from the University of Economics and Business to the same destination by public transport.

We laid a 420x350 grid over the map of Vienna, which turns out to be a rectangle with proportions approximately 6:5. This means that a square of this grid corresponds to roughly a 50x50 meters square in real life. We ran the function origin2time(origins, destination) in batches of 50 and created a dictionary with keys (i,j) standing for the indices in the grid and self-explanatory values (x_coordinate,y_coordinate, time). Here are the first elements in the dictionary:


(0, 0): (48.11949721989749, 16.249281367211044, 72),
(0, 1): (48.11999746291627, 16.249281367211044, 72),
(0, 2): (48.12049770593504, 16.249281367211044, 61),
(0, 3): (48.120997948953814, 16.249281367211044, 61),
(0, 4): (48.121498191972584, 16.249281367211044, 60),
(0, 5): (48.12199843499136, 16.249281367211044, 59),
(0, 6): (48.12249867801014, 16.249281367211044, 59),
(0, 7): (48.12299892102891, 16.249281367211044, 58),
											

Finally, it remains to visualize the findings. Here are two pictures:

Believe it or not, there are more than 50 colors in each of these images. All points which correspond to a time of more than 55 minutes are marked red and the most central points are green. Blue indicates that no path was found. Everything in between is a scale between these colors. As indicated before, the resolution of the pictures is 420x350 = 147000 pixels.

The picture on the right is an overlay of the left one and a simple map of public transport in Vienna. Note that metro stations are, as expected, centers of green blobs. But not only they: we clearly see where train stations are on the south-west and also recognize tram stations on the west. Feel free to investigate the images further!

Here is a zoomed out picture, in which one clearly sees more train stations and also the airport. As mentioned, the color blue stands for points from which no reasonable public transport path to the city center was found.


There are still many things to do in this project. For example, the color scale which is chosen now is suboptimal, since transition from green to red looks very fast. Another task would be do the same picture with a bunch of other destinations and compare them. Finally, we should explore other cities.

Algorithmic approach to Rupert's problem (joint project with Jakob Steininger)

Endless Engines - Vincent's Volitation

I participated at the online Endless Engines 3D Community Challenge hosted by Clinton Jones. The render I did in the programming language R using the package RGL and then applied artistic filters to the rendered images. Here is my final product:

If you are interested in how R can be used for rendering, you can download this file to get started.

Snake World - a mobile game

With Florian I created the mobile game Snake World. Check it out for android on Play Store.