Wykrywanie kolizji kół HTML5 Canvas

Chcę sprawdzić, czy kręgi kolidują ze sobą.

Wiem, że mogę to zrobić, uzyskując odległość między dwoma środkami kół i odejmując promień każdego okręgu od tej odległości i sprawdzając, czy „odległość” wynosi> 1.

Jak mogę to zrobić skutecznie, powiedzmy, 1000 kręgów? Może uda mi się jakoś zdobyć najbliższe 20 kręgów lub coś w tym stylu i sprawdzić je? Nie wiem, jak zacznę tak efektywnie, ale i tak ..

Jakieś pomysły?

Oto przykład:

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

questionAnswers(4)

yourAnswerToTheQuestion