public void compute() {
		recalcCount++;
		if (recalcCount < recalcInterval)
			return;
		int distanceToNearestOpponent = getDistanceToNearestOpponent();
		if (distanceToNearestOpponent < avoidBumpDistance) {
			setDirection(getLocation().orientTo(getNearestOpponent().getLocation()) + 180, velocity);
		} else {
			Opponent[] opponents = getOpponents();
			setDirection(
				(
					getCohesionDirection(opponents) * 1.0 + 
					getAlignmentDirection(opponents) * 1.0 +
					getDirectionToLeader() * 2.0
				) / 4.0, velocity);
		}
		recalcCount = 0;
	}