public void mouseDragged(MouseEvent e) {
		if(Global.isRunning) { return; } // block mouse input while simulating
		if(shiftStartPoint != null) {
			// shift the view
			pt.moveView((int) ((shiftStartPoint.x - e.getX()) / pt.getZoomPanelZoomFactor() * pt.getZoomFactor()), 
			            (int) ((shiftStartPoint.y - e.getY()) / pt.getZoomPanelZoomFactor() * pt.getZoomFactor()));
			shiftStartPoint = e.getPoint();
			gui.redrawControl();
		} else if(rotateStartPoint != null) {
			if(pt instanceof Transformation3D) {
				Transformation3D t3d = (Transformation3D) pt;
				t3d.rotate(e.getX() - rotateStartPoint.x, 
				           e.getY() - rotateStartPoint.y, 
				           !e.isControlDown(), true); // read keyboard - ctrl allows to freely rotate
				rotateStartPoint = e.getPoint();
				gui.redrawControl();
			}
		}
	}