SymmePy

Term Project
June 2018 (1 week)
Python - Tkinter, Object Oriented Programming

Project Overview
This project was my term project for the course, Fundamentals of Programming and Computer Science, that I took the Summer of 2018. I had one week to create any Python program that incorporated skills taught in class. I ended up creating an application that allowed users to draw on one section of a canvas and have their strokes symmetrically drawn on other sides of the canvas. Users could choose how many times they want their strokes to be drawn, and they have the options to change colors, stroke types, and rotate their drawings.
Rotate feature!

Process
I used Tkinter, the Python GUI taught in class, to create the whole program. To rotate points, I used a Given's rotation matrix, a matrix that I was taught while doing math research the same summer. The matrix takes a point in the 2D Catersian coordinate system and rotates it along an origin (the center of the canvas) a certain number of degrees dependent on the number of sides chosen by the user.

I used object-oriented programming to create classes to describe the strokes on the canvas. Each stroke consisted of the points that the user drew from the time the user started holding down to when they release their mouse. Using OOP allowed me to keep track of the different strokes on canvas, undo strokes, and change attributes of the strokes, such as color and the number of times it is rotated on the canvas.

Drawing Mode
Changing number of sides