private void externalReflection(Atom a) {
		double x0 = getX();
		double x1 = getX() + getWidth();
		double y0 = getY();
		double y1 = getY() + getHeight();
		double radius = a.sigma * 0.5;
		if (a.rx - radius < x1 && a.rx + radius > x0 && a.ry - radius < y1 && a.ry + radius > y0) {
			switch (RectangularObstacle.borderCross(getBounds().getBounds2D(), radius, a.rx, a.ry, a.dx, a.dy, x0, y0, x1, y1)) {
			case RectangularObstacle.EAST:
				a.vx = Math.abs(a.vx);
				break;
			case RectangularObstacle.WEST:
				a.vx = -Math.abs(a.vx);
				break;
			case RectangularObstacle.SOUTH:
				a.vy = Math.abs(a.vy);
				break;
			case RectangularObstacle.NORTH:
				a.vy = -Math.abs(a.vy);
				break;
			}
		}
	}