public Piece computeNextRotation() {
		// arraylist of TPoints to hold the rotated blocks
		TPoint[] rotatedPts = new TPoint[body.length];
		for (int i = 0; i < body.length; i++) {
			int x = body[i].x;
			int y = body[i].y;
			
			// apply CC rotation matrix to [x, y] vector: R = [0 -1; 1 0]
			int x_p = x * 0 + y * (-1);
			int y_p = x * 1 + y * 0;
			
			TPoint rotdNotCorrctd = new TPoint(x_p, y_p);
			rotatedPts[i] = rotdNotCorrctd;			
		}
		
		// we have now rotated the piece to quadrant II, so we must correct x values
		int xMin = 0;
		int yMin = 0;
		for (int i = 0; i < rotatedPts.length; i++) {
			int x = rotatedPts[i].x;
			int y = rotatedPts[i].y;
			
			if (x < xMin) xMin = x;
			if (y < yMin) yMin = y;
		}
		
		for (int i = 0; i < rotatedPts.length; i++) {
			rotatedPts[i].x += Math.abs(xMin);
			rotatedPts[i].y += Math.abs(yMin);
		} 
		
		// construct new piece from the arrayList
		Piece rotdPiece = new Piece(rotatedPts);
		return rotdPiece; 
	}