My code for the assigned projects of CS187, a course that introduces fundamental concepts of 2D and 3D computer graphics, such as image processing, 2D/3D modelling, 3D graphics pipeline, WebGL, shading, texture mapping and ray tracing. Project overviews taken from the instructions provided by the professo are provided below.
Note that the majority of code that I have written would be under the TODO sections of each project, though there are helper methods and classes that are not under the TODOs.
This project is a quick introduction to computer graphics programming using Javascript, WebGL, and three.js. Through this homework, you will ensure WebGL runs correctly in your browser and experiment with some basic features of a provided demo program.
TODO sections in glWarmup.js; one written question, adding two additional shapes to the program (TorusKnot and TorusKnot2 mesh), modifying the code to be able to rotate objects horizontally.
In this project, you will implement several image processing algorithms, including pixel operations, convolution, dithering, and mosaicing.
TODO sections in imProcess.js; implement functions adjustContrast, adjustSaturation, sharpen, uniformQuantization, randomDither, orderedDither, imageMosaic.
In this project, you will implement algorithms to compute Bezier, B-Spline, and Hermite curves. The starter code can then generate and render surfaces of revolution using the curves you compute.
TODO sections in curves.js; implement functions Beizier, BSpline, Hermite, use your implementation to generate two novel surfaces of revolution of your own design.
In this project, you will implement Loop’s subdivision algorithm to generate subdivided surfaces.
TODO sections in subdivision.js; implement function subdivide.