Programming
Various programming projects I did, mostly for school, that perhaps someone might find informative or useful. If you want to use any of the source feel free. The code is sorted by language or API and includes samples of: C++, OpenGL, Direct3D, Matlab, and Lisp.
NEAT Particles
Program: NEAT Particles 2.0
Description: Genetic art enables people with little artistic or technical to "evolve" orginal works of art possibly for use in video games or movies. This program uses a system of evolved Compositional Pattern Producing Networks (CPPNs), a type of Artificial Neural Network (ANNs) to create increasingly complex particle system effects. Includes saving and loading of particle systems from files. Coded in C++ with OpenGL rending and uses DirectX math libraries. For a full description, download the paper from CIG07 here.
Compositional Pattern Producing Networks
Program: CPPN
Description: A C++ implementation of Compositional Pattern Producing Networks, or CPPNs, which are a type of Artificial Neural Network, or ANN. A Visual Studio workspace is included along with a test program that shows how to use all CPPN functionality.
Like ANNs, CPPNs are a set of nodes and connections with inputs and outputs; however, CPPNs may have many types of activation functions and are usually activated across an entire input space to produce a complete image. CPPNs are also usually designed to evolve new structure (nodes and connections) to any level of complexity. See my CPPN/ANN page for further details.
GL Particles
Program: Open GL Particle System
Description: Demonstrates an object-oriented particle system in C++ / OpenGL. There are several classes of emitters. Each class of emitter can be adjusted via parameters to achieve various effects. The particles are billboarded quads.
Spatial Hashing
Program: Collision Optimization / Spatial Hashing
Description: Demonstrates collision optimization by spatial hashing. Allows comparison of optimized and un-optimized collision calculation times. Allows manipulation of key variables on the fly such as number of objects in the scene and grid size. Turn drawing off in order to analyze collision time only. Since the program does no drawing optimization and 20k+ spheres will kill frame rate on just about any system.
Ray Tracing
Program: Animated D3D Raytracer
Description: A ray tracer that animates the raytracing process in a Direct3D window. The raytrace camera and the scene are displayed from the D3D camera. All objects, their normals, and their bounding boxes are displayed in the D3D window. Each ray is animated with reflection vector, normals, light rays, etc... To speed things up the animation can be disabled. The ray tracer can calculate textured triangles and spheres, hard shadows, multi-sample soft shadows, reflective surfaces, ambient light, specular light, diffuse lighting, and has optional use of Bounding Volume Heirarchy for large scene optimization.
This pic shows the animated D3D window.
These pics are ray-traced output image samples.
C++
Program: Early Algorithm
Subject: natural language processing, Earley Algorithm.
Description: Simple sentence parser using the Earley Algorithm. Given an input sentence and a set of grammar rules, the program outputs all valid parses of that sentence based on the rules.
Program: Soundex Algorithm
Subject: natural language processing, soundex algorithm, finite state transducers.
Description: The input sentence is converted into Soundex Format (a form for archiving) via a set of finite state transducers (FST).
Program: Supervised, Rule-Based POS Tagger
Subject: natural language processing, parts of speech tagging
Description: An input sentence is tagged with based on rules generated from a training corpus.
Program: Supervised, Probability-Based POS Tagger
Subject: natural language processing, parts of speech tagging
Description: An input sentence is tagged based on probabilities generated from a training corpus.
Matlab
Program: Matlab Pack 1
Subject: Convolution, Image Expansion, Image Reduction, Laplacian Pyramid, Gaussian Pyramid, Sobel Edge Operator, Roberts Edge Operator, Prewitt Edge Operator
Description: MATLAB implementations of all of the above. Below is an example of my implementation of the Prewitt Edge Detector on model Laetitia Casta.
Program: Matlab Pack 2
Subject: Canny Edge Detector, Hough Transform, Least Squares Line Fitting, Maximum Likelyhood Line Fitting, Hysteresis Thresholding, Non-Maximum Supression, Gradient Magnitude.
Description: MATLAB implementations of all of the above. Below is an example of my implementation of the Canny Edge Detector.
Program: Matlab Pack 3
Subject: Snakes Algorithm, Image Thinning
Description: MATLAB implementations of all of the above. Below is an example of my implementation of the Guo and Hall thinning algorithm.
Program: Matlab Pack 4
Subject: Lucas Kanade Optical Flow, Affine Image Warping, Global Motion Estimation
Description: MATLAB implementations of all of the above.
Lisp
Program: IDA-Star
Subject: AI , 8-piece puzzle problem, IDA* Search
Description: Solves the 8-piece puzzle problem. Given a start-state and a goal-state it returns a series of moves to go from the start to the goal. Uses the recursive IDA* algorithm and the Manhattan Distance as a heuristic.
Program: Logic
Subject: AI , logic
Description: Given a set of facts (like A | B -> C) and a conclusion, the program will determine if the conclusion follows from the set of facts.