Reaction Diffusion
Simulate a interaction between 2 chemicals in a reaction diffusion simulation. The program is based on an applet by Joakim Linde. There are 2 chemicals that react in complex ways as defined by a non-linear differential equation that cannot be solved analytically. The simulation solves it numerically.
Run as applet or webstart.
|
|
Snake
Simulate a living snake. The program uses a spring based model to represent the snake. There is a sinusoidal force function applied to each side to simulate muscular contractions. Directional friction is used to make the snake go forward (as happens with a real snake). Snakes have 4 ways of moving: rectilinear progression, horizontal undulatory progression, sindwinding, and concertina progression (rarely used). I only used the most common gait, horizontal undulatory progression, in this demo, but will probably add the others. You can also change the parameters of this gait to get different behaviors. The snake "learns" to move more efficiently by a process of automated optimization. It uses exactly the optimization code I use for improving the performance of the game programs. I now understand really well how a snake moves. Based on work by Gavin Miller in his 1988 SIGGRAPH papaer.
Run as applet or webstart.
|
|
Dice
I was looking for a good way to explain probability distributions to my son and his clasmates. This simple program illustrates the different sorts of bell-curve (or gaussian) distributions that can arise as you vary the number of dice and the number of sides that they have.
Run as applet or webstart.
|
|
Stock Price Simulation
This simulation was motivated by the following problem. You invest $100,000 in a volatile stock. Each year, with equal probability, it either rises 60% or falls by 40%. You declare that your heirs are not to sell the stock for 100 years. What would be the expected stock value (mean) after 100 years? What would be the median? What would be the mode? The expected value would be $1,378,000,000. If there are many stocks like this, the total market value will rise dramatically (value = expected * num_stocks) 100,000 * ((1.6+0.6)/2)^100 = 100,000 * 1.1^100 The mode and the median are both $13,000 (100,000 * (1.6)^50 * (0.6)^50). While on average you expect a 10% return a year, the most likely scenario (mode) is that you'll end up with $13,000. Moreover, more than half the people will end up with $13,000 or less. The moral of the story is Diversify! Now you know why you hear that investment advice from the experts so often.
Run as applet or webstart.
|
|
Predator Prey Simulation
Simulates foxes (predators) and rabbits (prey) in the wild. Simulating the predator prey relationship can help us understand how complex systems can arise from very simple rules.
Run as applet or webstart.
|
|
Habitat Simulation
Create and maintain a set of creatures in a self-sustaining habitat. Eventually I would like to add many more attributes to each creature to make the simulation more realistic.
Run as applet or webstart.
|
|
Henon Phase Explorer
The Henon Strange Attractor is defined by the following transformations:
Xn+1 = Xn cos(a) - (Yn - Xn^2) sin(a)
Yn+1 = Xn sin(a) + (Yn - Xn^2) cos(a)
Run as applet or webstart.
|
|
Fractal Explorer
This program allows you to navigate through the most complex object in mathematics, the Mandelbrot set. Drag open a bock to zoom, and click the "go back" button to undo the last zoom. When I created my first implementation of this program in turbo pascal in high school, I can remember waiting for hours for the images to generate (on a 640 by 200 pixel screen). Now its almost instantaneous.
Run as applet or webstart.
|
|
Liquid Simulation
Particle based fluid simulation based on Nick Fosters SIGGRAPH paper. Numerical instability (due to a bug) causes this simulation to blow up after a relatively short time unfortunately.
Run as applet or webstart.
|
|
Fluid Simulation
Deep water simulation based on work by Jos Stam. Use the mouse to stir up the fluid by clicking and dragging.
Run as applet or webstart.
|
|
Trebuchet
Simulate a trebuchet.This program uses a physically based model to represent a trebuchet. When my son and I were watching Lord of the Rings, we noticed that Minas Tirith used trebuchets to defend itself. We built one out of lego, but optimizing lego is tedious, so I made this virtual trebuchet in order to try different designs. The trebuchet can also "learn" to move more efficiently by a process of automated optimization. It uses exactly the optimization code I use for improving the performance of the game programs. This is still a work in progress. I need to use constrained dynamics for the projectile's attachement to the sling (instead of a simple spring based restorative force which leads to instability). When done, I hope to build a trebuchet with my son according to the optimized specifications.
Run as applet or webstart.
|
|
Sierpinski
This is an example of a self-similar set. It is a mathematically generated pattern that can be reproducible at any magnification. See Sierpinski Triangle
Run as applet or webstart.
|
|
Image Breeder
Use a genetic algorithm to mix different image processing operator together. The fitness function is the user's evaluation of the images.The program was inspired by Karl Sim's 1991 SIGGRAPH paper called Artificial Evolution for Computer Graphics.
Run as applet or webstart.
|
|