CSCI 441 - Computer Graphics

Fall 2025

|     Home   |   Tasks  |   Leaders  |   Schedule  |   FAQ  |   Resources    |

Tympanius the Elementary

This is my webpage for showing what I've done in this Computer Graphics course!

A1 - The Metal Shop



For this assignment I created my nameplate. We were only able to use the primatives of triangles, triangle strip, and triangle fan. The triangles primative take points three at a time to form triangles. The triangle strip primative takes the first 3 points to create a triangle, then the next triangles are created using the next point and the previous two. The triangle fan primative use the first point for every triangle and then uses the follow pairs of points to define triangles.

I used the traingle fan primative to make my own functions (that could be parts of classes, but weren't), they created rectangles and ellipses. These function create a unit square and unit circle respectively and translates, scales, and rotates them to be able to create any kind of rectangle or ellipse (including squares and circles of course). I tried to also include shearing in the mix, but for whatever reason any values I put in didn't change anything. On the nameplate, I used exclusively rectangles for the letters and the pink part of the border. I used my ellipse class just to make the circle in the logo.

I first created my idea for my nameplate in Inkscape in a vector format. Then I rasterized it to the same scale as the size requirement (700x150). I used these occasionally to be able to figure out which coordinates to place things.

I used the triangle strip primative to make the "tails" on the logo. I took one of the tails in my rasterized version and selected points along the shape that I thought best define the shape, so they're all the same tail with different rotations and negative scalings (to create mirroring along the y, x, and y=x axes). I used the triangles primative for the triangles on the border.

A2 - The Grand Bazaar



For this assignment I made my animated 2D avatar, that can roam around a world made of my peer's (and my) background made in our lab01. He can also blow bubbles that I guess he can control with his mind.

I enjoyed drawing the avatar (first in Inkscape again ofc), and was fascinated by how little changes in positioning completely changed his expression. Tympanius is made exclusively of the ellipse and tail functions I made in A1. Once I was satisfied enough with how he looked I began to add animations.

For those of you that know a lot of Pokemon, you might recognize Tympanius as a Tympole. So I looked into how they are animated in the first game they appeared, and replicated that animation by adding bobbing up and down of the main body, and scaling the height of the tail from negative tail width to positive tail width. All these motions were eased using a sine function.

Once that was done I could start moving him in the world. I tried making diagonal movement, but trying register two buttons as being held down at once was not something I wanted to deal with. Once I got him moving I accidentally had a funny glitch where I forgot to teleport him to the opposite side of the screen when he goes to a new map by going off screen. It ended up continually switching him through all the maps in the cardinal direction he went into, and it was flashing a lot.

A lot of my time was spent creating the bubble interaction. It's controlled using the mouse for the direction it moves in, as well as activating with a left click, and popping with right click. By holding R, the bubble grows until it reaches a max size and pops automatically. It also pops when reaching far enough off screen. When I was experimenting around trying to fix something else, I accidentally made it so that you can controll the direction of the bubble after you release it from his mouth, and I found it fun enough that I kept it. (It's not a bug; it's a feature!). I tried making the direction the bubble goes relative to the bubble's current position, but I found that once the bubble caught up to the mouse position, it started glitching out a lot, so I decided to keep the bubble being controlled relative to Tympanius.

Anyway, here's a video with some "gameplay":