private Rotation(Point[] c, int r) {
				coords = new Point[4];
				
				for (int i = 0; i < 4; ++i) {
					coords[i] = new Point(c[i]);
				}
				
				// Rotate an appropriate number of times
				for (int i = 0; i < r; ++i) {
					for (Point p : coords) {
						p.setLocation(p.y, -p.x);
					}
				}
				
				// Cache minX, maxX, minY and maxY
				minX = 0; maxX = 0; minY = 0; maxY = 0;
				for (Point p : coords) {
					if (p.x < minX) { minX = p.x; }
					if (p.x > maxX) { maxX = p.x; }
					if (p.y < minY) { minY = p.y; }
					if (p.y > maxX) { maxY = p.y; }
				}
			}