Subdiv is the beginings of a subdivision surface renderer. Currently
I have a half edge data structure coded up with split and collapse
functions for verticies, edges and faces.
This is a user driven Genetic Algorithm plant evolution program. It
uses protien diffusion and concentrations to trigger genes and protien
actions in each cell. Currently protiens can cause cells to divide,
change color and grow.
A utility for demonstrating the math for Julia fractals. It uses the
IIM (Inverse Iteration Method) to generate Julia sets in real time.
It also lets you select a point and it will show you where that point
could go under inverse iteration.
Morbit is a program (architecture really) for managing lots of vector
operations on datasets that consist of a bunch of points. An early
incarnation of which created some of the images in my fractal
archive.
Puddle is an OpenGL wave equation simulation. It visualizes waves
like you might see in a puddle. Well, not really, its to simplified
to do that, but they look cool. :) Water and Rubber are a couple
different incarnations of the same simulator, they are just playing
with transparency and environment mapping.
I have written a couple different ray tracers in my wanderings. Some
that "work" in 4D, others that try to run in real time. But mainly
its just given me enough experience to add generic ray-object
intersection code into my support library. It turns out to be pretty
useful.
Render originated from a school project where we were writing a
progressive radiosity engine. I decided to split up the computation
and visualization into separate processes that were linked over the
network. As the radiosity engine computed new intensity data it
would send it over to the renderer which could be used to view the
scene in real time. The original render used my own polygon
transform, lighting and rasterization code. I have since ported it
to OpenGL.
Hey, who dosn't like a fun particle simulator? :) This is my
Fireball particle simulator. It has gravity and viscosity and
positionable forces, and barriers that the particles bounce off of.
The particles also have a limited lifetime. They can change color
over thier life and will respawn when they die. It makes pretty
pictures.
Spring is a cute (at least I like it) program for displaying spring
mass systems. You can lock a mass so it dosn\'t move and it reads
its objects in from a config file. I generated a couple cool files,
a Sierpinsky gasket as well as a Pythagorean tree.
Puzzle is my implimentation of the game that Rus turned me on to. You
should check it out at his site
www.devtools.org. I wanted to try my hand at writing a solver
for the game, and since I don\'t know Java it was simplest for me to
code the game up in my language and platform of choice.
Beater
Beater is an attempt to understand wavelets and their audio processing
abilities. It allows you to view sampled audio in a number of
different ways, including wavelet and FFT transforms. The audio can
be windowed as well to remove circular convolution artifacts. It can
do standard wavelet decomposition as well as wavelet packet analysis.
Space
Space is another experiment. This time in UI design. I hate GUI's,
they are never designed the way I think. So I have been working on
an infinitely zoomable desktop where everything is persistent. So
you don't run applications, you just move to where you last left
whatever document you were working on and it will be there in
whatever state you last left it. The main idea is that you could
probably find your house if I gave you a globe that you could zoom
into. I think that might be a good interaction style. Currently the
project is waiting for me to finish writing a true type font renderer
for it. :) I want to write my own in this case because I don't want
it interpreting the byte codes that go with the fonts. That will
mess up their animation.
Brain
Brain is a project that my brother and I have been working on. It
uses GA's to evolve brains that run around inside virtual worlds.
Sound familiar. :) I don't know anyone who hasn't wanted to do
this. Well, this is an early attempt at making a brain. I really
should upload the latest brain. This one evolves a fully connected
two layer neural network. It also has connections from each hidden
neuron back to each other hidden neuron so if the GA decided it was
a good idea it could have some state. It turned out that this gave
the GA a HUGE search space and it never converged, Duh.
Atom
Atom is my collection of C++ code that is needed to pretty much
compile anything you might find on this site.
Micros
This is a simple x86 operating system that I have been working on.
It died along with some other stuff when I had a hard drive crash,
but I had a boot disk that I have been able to resurrect most of the
code from. :) It can boot from a floppy and get into 32-bit mode.
It has some simple console drivers and threading.
DLL
DLL is a program for linux that will load and relocate a Windows DLL
file and let you browse the contents using a curses interface. I
initialy wrote it to gain access to the Snappy(tm I think) image
capture device's DLL's. That project was never finished, but this
code is pretty usefull by itself. You can see what DLL's the DLL your
viewing referneces, and what functions it requests from them. You
can also see what functions it exports. If I get some time I will
add the binding code so you can call functions out of the DLL from
linux.
Random Tree
Random Tree is an experiment that I conducted recently. I wanted to
know how the worst case lookup time varied with the number of nodes
inserted into a binary tree if the keys were randomly generated. Its
kinda interesting. It turns out that the longest path is still
log(N), just to a base of something like 1.3 instead of 2 for a
balanced binary tree.
Servo
For some reason it was more trouble than I thought it should have
been to access the serial port under Linux in a raw mode. This
program does that and accesses some RC hobby servos connected to it
throughout a Scott Edwards Mini Serial Servo Controller. Great
little toy if you don\'t want to make the hardware yourself.
HC11
This is a collection of programs I have written for the MC86HC11
family of processors. It includes some simple test programs as well
as a PIC programmer that I made. I will add to this a
preemptive-multitasking kernel that I wrote for my robotics projects
if I can find a copy of it. Another death due to the hard drive
crash. :( I think I have an HC11 that still has the code programmed
into it though. :)
PIC
I also play with the PIC and this is a collection of programs that I
have written for that family. Currently only one of my programs is
up, its one that can generate multi-synch VGA video from software.
Its pretty cool to be able to generate the video on the fly, but not
really all that useful.
Quadraped
This is a robot that I made my senior year at CMU. Its a four legged
walker that skid steers. It doesn't have any sensors so its kinda
boring when it comes to dynamic anything.
Caterpillar
This was another robot I made senior year. It was for my senior
research thesis. I used PBIL (Probabilistic Incremental based
Learning) which is like genetic programming to evolve a gait for a
planar crawling robot. It has eight servos, one at each joint, and
actually showed up on the Discovery channel. I trained it to crawl
in a physical simulation and then transfered the gait to the physical
body.
Leaf is the first PCB that I have ever designed and had fabricated.
:) It's great fun. This board is a generic sensor/prototype board
with a number of voltage regulation options. I can drive up to seven
servos simply. It has space for the Analog Devices two axis iMems
accelerometer. It also has pads for Agilents HSDL-3000 IrDA
transceiver. Finally, it uses the PIC16F688 from Microchip and an
RS-485 transceiver to talk on my RLan network (RLan is a project of
mine to build a multi-drop network a lot like ethernet but much
simpler for hobbyists to use.
Spectral Miasma
A graphics and sound demo that I wrote with a few friends while living
in Santa Barbara.