Lab 1: Image Manipulations & Fractals
In this lab, we removed the bluescreen from a set of images, and did some basic manipulation on them. We also implemented iterative algorithms to generate Julia and Mandelbrot sets. 

ENGR 026. Computer Graphics
Computer graphics deals with the manipulation and creation of digital imagery. We cover drawing algorithms for twodimensional (2D) graphics primitives, 2D and three dimensional (3D) matrix transformations, projective geometry, 2D and 3D model representations, clipping, hidden surface removal, rendering, hierarchical modeling, shading and lighting models, shadow generation, special effects, fractals and chaotic systems, and animation techniques. Labs will focus on the implementation of a 3D hierarchical modeling system that incorporates realistic lighting models and fast hidden surface removal.

Lab 3: Scanline Fill
In this lab, we implemented the "scanline fill algorithm" for polygons and applied it to ellipses and circles. Given any number of points (the points might be outside the image area) our program can fill the polygon connecting the last point to the first one, thus making the region a closed area. For convenience, the border and the fill always have the same color (and the border of the polygon is drawn as it's filled in). 
Lab 4: 2D Transformations and the 2D Viewing Pipeline
We developed basic matrix manipulation routines that will help us with 2D (and later 3D) transformations. We coded algorithms that transform, scale or rotate matrices as well as algorithms that set the matrix to the identity matrix or multiply two matrices and do other mathematical operations and combinations of scaling, rotating and transforming. 
Lab 5: Hierarchical Modeling System
For this lab, we developed a 2D hierarchical modeling system that allows us to create structures and draw them and integrated it with our graphics environment so that the appropriate graphics variables get passed to the graphics primitive routines. 
Lab 6: 3D Viewing Pipeline
For this lab we built a 3D transformation library and the 3D viewing transformation function and integrated them with our system. 
Lab 7: Z Buffer Scanline Fill
Functions were written to render lines and polygons that overlap correctly depending on their distance from the viewer in 3D space, using depth information at each vertex that could be the output of a perspective projection algorithm. 
Lab 8: 2D Transformations and the 2D Viewing Pipeline
We developed basic matrix manipulation routines that will help us with 2D (and later 3D) transformations. We coded algorithms that transform, scale or rotate matrices as well as algorithms that set the matrix to the identity matrix or multiply two matrices and do other mathematical operations and combinations of scaling, rotating and transforming. 
Lab 9: Integrated 3D Modeling System
We implemented a 3D hierarchical modeling system for storing models of objects in threedimensional space. 
Final Lab : Behavioral Particle System
As a modeliing system we decided to implement a behavioral particle system. The scenes we created consisted of many particles who interacted with each other to form consequent scenes in an animation. We tried to create an animation that resembled fire, but with a few changes we can make animations that resemble water coming out of a fountain or exhausts. 