Rendering Engine Using Ray Casting, January 2018

Program allows user to import objects from STL files and specify different properties (color, shininess, reflection intensity). You can setup any number of point lights to illuminate these objects. I used the Phong Reflection Model to make the lighting realistic, and have also included shadows. Below is a scene that I rendered with the engine:

Rendered Blocks and Ball

Robotics Independent Study, January 2016

Worked with a friend to create a robot capable of climbing vertical glass walls using pneumatic suction cups. The robot is controlled using an Arduino, and designed entirely in SolidWorks. Custom laser cut and 3D printed parts were used as an alternative to metal components to reduce the robot’s weight.

CAD file

mcp9808 Temperature Sensor Library, March 2015

mcp9808 is an open-source library written in Node.js and published to Node Package Manager. The package makes it easy to communicate the mcp9808 temperature sensor from a raspberry pi computer using the I2C industry standard protocol. My package can be found online here.

Centipede Arcade Game, July 2014

I created Centipede in a two week Digipen programming class. It is a clone of the popular 80’s game made by Atari, but features a two-player mode and different monsters. It can also be played with Xbox controllers. To play Centipede, first you have to download and install SlimDX, and then you have to download and install the game. To start a new game, use the arrow keys to select single player and hit enter. To play, use the left and right arrow keys to move and the up arrow to fire. Press escape to pause the game. For more specifics, visit the help screen.

Python 3D Renderer, January 2014

I created Renderer from the ground up, as an experiment to see if I could build a basic 3D engine. The program draws in wireframe, supports world rotation, scaling, and translation, and draws from an STL file. Renderer was built with the 2D Tkinter canvas and uses hardware acceleration for matrix multiplications, but all of the rendering and geometry is done by my engine. Click here to download a simple demo of the engine: install renderer.