Project 3 : Transformation

Instructions:
The text in the upper-left corner indicates whether you are viewing the in orthographic or perspective modes. This can be changed either by right clicking or by Meta-clicking. The text in the upper-right corner is the current transformation mode. This can be changed by middle clicking with the mouse, or by Alt-clicking. You can reset the transformation matrix by holding down shift and right clicking, or by holding down shift and meta when you click.

Rotation
Mouse drag: Rotates the image

Scaling
Mouse drag: Scales in the X-Y plane
Shift-Mouse drag: Scales in the Z plane

Skew
Horizontal Mouse drag: Skews XY
Vertical Mouse drag: Skews YZ
Shift-Vertical Mouse drag: Skews XZ

Translation
Mouse drag: Translates in the X-Y plane
Shift-Vertical Mouse drag: Translates in the Z plane


Note that the orthographic view is automatically scaled by a factor of 10, because otherwise it does not fit on the screen. The perspective view is scaled by a factor of 10 because it is 10 units away from the camera. Therefore, if the orthographic view is also going to fit in the screen, it must also be scaled down by a factor of 10.


My code:
Raster.java
Point3D.java
Matrix3D.java
TestMatrix.java

Only TestMatrix.java and Matrix3D.java are different than the versions which were provided for this project.