Projects
This page lists some of my most interesting programming projects. Some of them are improved versions of class assignments and some are just personal projects. Many projects have full source included and it is usually published under Public Domain or MIT licenses on GitHub.
Mausr - Marek's Unicode Symbols Recognizer
Have you ever wanted to easily find any unicode symbol like →, ×, ≠, ℝ, or »? Then Mausr is what you are looking for! Mausr is a library and web interface that performs unicode symbols recognition from hand drawn input using simple neural network. The library implements back-propagation learning algorithm as well as basic non-linear optimization algorithms such as gradient descent and iRprop. Read on ...
Personal project
Tags: C#, ASP.NET MVC
Mamex - Marek's Mandelbrot explorer
Mandelbrot explorer is written in C# and supports arbitrary precision arithmetic that allows to zoom indefinitely. Arbitrary precision support is provided by GMP library that was compiled using standard C++ compiler and C++/CLI was used to create simple wrapper for C#. The explorer can visualize Mandelbrot and Julia sets and has many additional features such as interactive color gradient editor, projections support, and batch rendering. Custom anti-aliasing algorithm, sharpening, and color dithering algorithms yields beautiful results. Some of the results can be seen in the Gallery on this website. Read on ...
Personal project
This project demonstrates visualization techniques like glyphs, stream lines, stream tubes, and stream surfaces — all in real time. The key is RK4 integrator implemented in CUDA that is using very fast texture lookup functions to access a vector field. The vector field itself is stored as a 3D texture which enables to use hardware accelerated trilinear interpolation lookup functions. This article contains more than 100 images and figures, commented code snippets, and source code available for download. Read on ...
School project (CS 530 -- Introduction to Scientific Visualization)
Conway's Game of Life on GPU using CUDA
This project compares performance of CPU and GPU in evaluation of famous Conway's Game of Life. The performance was tested on three different implementations. The most sophisticated version of the algorithm on GPU stores data in one bit-per-cell array and leads to speed-up of 480x compared to serial CPU algorithm. The best implementation for CPU turned out to be lookup-table approach leading to 60x speedups over serial CPU. The report contains detailed explanation of used algorithms, measurements, and code of whole project for download. Read on ...
School project (CGT 620 -- GPU Programming in CUDA)
Comparison of performance of CPU and GPU in computation of Random faults algorithm for random terrain generation. Speedup of GPU over CPU is over 700x. Project uses shared VBO's to avoid CPU-GPU data transfer which makes it interactive experience. Read on ...
School project (CGT 620 -- GPU Programming in CUDA)
Maraytr - Marek's Ray-tracer
Maraytr is a ray-tracer written with high focus on algorithms and data structures rather than on performance. I decided to make it as revision and deeper understanding of theory and math behind ray-tracing. And also because ray-tracing is fun! The core was written in four days and without third-party libraries. The scene is represented as CSG and supported primitives are sphere, cube, and plane. It is possible to do basic boolean operations like union, intersection, subtraction, or xor. Read on ...
Personal project
Growing HPCG logo
Video of simulation of growth of simple trees restricted by environment with L-systems. This animation was made to demonstrate power of my L-system framework Malsys and to have fun with L-systems. Whole simulation is one L-system using sub-L-systems for leaves and blooms. Article contains detailed description how was this L-system written and how animation was produced. Read on ...
Personal project
Tags: L-system (Malsys), Python, Malsys, Maya
Malsys - Marek's L-systems
Highly modular L-system processing library with web interface and gallery. Malsys supports advanced L-system features like context rewriting or parametric L-systems as well as some unique features like rewriting symbol as another L-system. This project was done as my bachelors work at Charles university in Prague. Read on ...
School project
Tags: C#, F#, ASP.NET MVC, F# Power Pack, Microsoft SQL
L-system polygon triangulation
Automatic triangulation for complex L-system polygons in 3D. Polygons in L-systems are defined by points on their border and it is not easy to decide correct triangulation. This project was done as final project for Computational geometry class and it was later included in Malsys. I also learned how to use WPF thanks to this project. Read on ...
School project
L-systems in Haskell
This project is relatively advanced L-system library written in Haskell. Out of the box it supports symbols with parameters, conditional rewriting, and it can evaluate expressions with binary and unary operators. There are two available L-system interpreters: text and SVG vector graphics. The code is well commented and written with extensibility in mind. It is easy to add new operators, new interpreters, or even extend the grammar. This project was my final program of Non-procedural programming class. Read on ...
School project
Tags: Haskell
Wandering
Wandering is a generic maze generator, solver, and game playable in a console. It supports hexagonal and rectangular mazes and two types of maze generators. Cool thing is that the maze type is independent of the solver. Every solver can solve every type of maze. It is possible to define new maze types, generators, and solvers. Another cool feature is the UI system in a console including menus, text boxes, windows, and screen manager. This was my first larger program written in C++. Read on ...
School project
Tags: C++
Animated Pythagoras tree
Animation of growing tree made using L-systems. Animation starts as a small tree branching only to the right and then start turning left revealing beautiful structure. Basic rules of the tree are based on Pythagoras tree however resulting tree is not pure Pythagoras tree. This animation was made as homework to the computer graphics class. Read on ...
School project (Computer graphics I)
Tags: C#
Bridger
Proof of concept of bridge builder game for Android made as part of Game Development course. Supports designing of bridge and simulating physics with Box2D engine, uses AndEngine for rendering. Nice touch is parallax background. Works on current versions of android! Read on ...
School project (Game Development)
Library and interface for automatic music sheet recognition. Input is image of sheet of music and output is standard MIDI file. Uses database of symbols together with dynamic recognition to do the recognition. This was my final project of High school and I won 'A small Czech head' prize for it. Read on ...
School project
Mandelbrot set poster
Big poster (4 x 1.7 m) of 4 deep zooms into Mandelbrot set. I made this poster because I was amazed by Mandelbrot set and I had a program (Mandelbrot set explorer) to generate high quality images. My dad helped me to print this big guy and later I donated it to the institution where I was having programming courses after school as a kid. It is there till now. Read on ...
Personal project
Tags: Corel Draw