This is a group of miscellaneous software that I've written. It's
mostly things that don't actually serve any great purpose of their own,
but demonstrate or test an algorithm.
|
This is a quick little demo that takes an image and does some neat warping
animation on the screen with it. I was using this as a handy way to test and
iron out bugs in a function I recently wrote. The function can read a polygon
from a source image, and draw its contents to another polygon in another image.
What makes it so useful is that those polygons do not have to be identical.
I have already used it to implement a blitting function with transformations
that is much faster than the one I wrote in college. It does have a few limitations.
For one thing, although the polygons in use do not have to be the same shape, they
do need to have an equal number of defining points (for instance, you could copy
between any two triangles, but not from a triangle to a square). This could
actually be changed if necessary, but I do not consider it so for now. The other
(more significant) limit is that the polygon to which it's drawing must be convex
(although the one from which it's reading does not need to be). That too could
be avoided, but doing so would slow the function down. This demo is always drawing
to a rectangle (the whole window), but is reading from a polygon that is transforming.
The file linked at the top contains the source code and a make
file, having been written to work on the GNU/Linux platform. A good friend of
mine was kind enough to compile this on his Windows machine for me, so if you're
using Windows and would like to see the program in action, you can download it
in this zip file.
|
|
This is a simple little demo of transformations being done with my new image
manipulating algorthm. It has a bunch of heads bouncing and spinning on the
screen. The heads depicted are actually a slightly modified photograph of an
origami mask that
I made some time ago. The only modification to the picture was the addition of
pupils on the eyes.
|
|
This is a screensaver style of graphical demo that uses a 3D
graphics library I wrote when I was in college. It shows a bunch of
spheres bouncing around on the screen. The angle of the lighting can
be changed by moving the mouse, and the number of balls increased and
decreased by clicking on the left and right mouse buttons respectively.
The program will end when you hit the escape key.
|
|
Another quick demo of my old 3D graphics library. In this case, there
is a model of a red maple leaf on the screen, which can be rotated using
the mouse.
|
|
A simple program that draws a cube on the screen and lets you rotate it by moving
the mouse. The main purpose of this program is to demonstrate a function I wrote
which draws textured polygons in three dimensions. This was written for
Xwindows on the GNU/Linux platform
using SDL.
|
|
This "zip" file actually has three different programs in it, each one
demonstrating the same algorithm. It started out as a simulation of a
series of wagons being pulled, and evolved into these more interesting
toys.
|
|
This is a GNU/Linux version of the worm algorithm that I originally developed
under MS-DOS. It uses Mesa, the Linux port of OpenGL, and runs on the
Xwindows desktop.
|
|
A bunch of particles with colour-coded masses almost following the laws of
gravity. You move the heaviest particle around with the mouse and the
others will follow.
|
|
The Mandelbrot Set
is a fractal which is named after
Benoit Mandelbrot,
the mathematician who first plotted out this set of numbers on a computer.
The program here is my own rendering of that set.
|
|
This is another version of that same Mandelbrot set, written to work with Xwindows
on GNU/Linux. It uses the Mesa graphics library and should port pretty easily
to other platforms.
|
|
When I was in high school, I and a good friend of mine discovered
screen savers (bear in mind that these were a new concept at that point).
We both thought they would be fun to write and did so. This program demonstrates
some of the ones that I wrote.
|
Copyright © 2009, Jacob A. Ewing