private static HashSet<Ball> proximityDetection(HashMap<Integer, Ball> balls, Ball ball, BufferedImage image, Color bgColor)
	{
		HashSet<Ball> collisions = new HashSet<Ball>();
		// Color of the background, we check against this color to see
		// if we've found a ball.
		int bgRGB = bgColor.getRGB();
		
		// We only need to check 200 degrees to catch all colliding balls, this allows for more precise
		// proximity detection while keeping the number of checks necessary down.
		double checks = 6;
		double checkTotal = 200;
		
		for(double degree = checkTotal / checks; degree <= checkTotal + 1; degree += checkTotal / checks)
		{
			int x = (int)(ball.getX() + (ball.getBallSize() / 2) + (ball.getBallSize() * Math.cos(Math.toRadians(degree))));
			int y = (int)(ball.getY() + (ball.getBallSize() / 2) + (ball.getBallSize() * Math.sin(Math.toRadians(degree))));
			
			// do a little bounds checking before we try and check the images.
			if((x >= 0 && x < image.getWidth() && y >= 0 && y < image.getHeight()) && image.getRGB(x, y) != bgRGB)
				// We don't have to worry about duplicates, the set will remove them.
				if(balls.containsKey(image.getRGB(x, y)))
					collisions.add(balls.get(image.getRGB(x, y)));
		}
		
		return collisions;
	}