Tela de Detecção de Colisão em Círculo HTML5

Quero verificar se os círculos estão colidindo uns com os outros.

Eu sei que posso fazer isso obtendo uma distância entre os dois centros dos círculos e subtraindo o raio de cada círculo daquela distância e vendo se 'distance' é> 1.

Como posso fazer isso com eficiência, digamos 1000 círculos? Talvez eu possa de alguma forma obter os 20 círculos mais próximos ou algo parecido e verificar isso? Eu não sei como eu começaria a ir tão eficientemente embora também ..

Alguma ideia?

Aqui está um exemplo:

http://experiments.lionel.me/blocs/

questionAnswers(4)

yourAnswerToTheQuestion