in reply to Data not acting as expected.

A more general comment. sin and cos take as their argument an angle in radians not degrees. You do make the correct degrees-to-radians conversion to the initial value of $rot but later adding 45, 90 or 225 seems somewhat strange.

Also if you need to (re-)calculate these trigonometric values many times, it can speed up your program when you pre-calculate these values and save them in a array and then simply reference these arrays.

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

My blog: Imperial Deltronics