Je ne pense pas qu'il y ait une solution facile.
Je voudrais aborder cela en prenant chaque cercle à son tour, et en effectuant une soustraction booléenne de tous les autres cercles. (Les cercles qui sont assez loin - R0 + R1 < D12 - n'interféreront pas.)
Après avoir mangé des morceaux, un cercle devient un polygone curviligne fait d'arcs de cercle, ou un ensemble de tels polygones, comme la connexité peut être brisé. Un polygone peut être représenté par la liste des cercles qui contribuent à un arc de son contour, et les points d'extrémité d'arcs sont définis par l'intersection commune de deux voisins consécutifs, ou du cercle cible et d'un voisin. Notez que le même voisin peut apparaître plusieurs fois. Pour rendre les choses un peu plus sanglantes, les polygones peuvent avoir des trous, que vous devez également représenter.
Ensuite, une opération cruciale est la soustraction d'un cercle d'un polygone curviligne. Vous devez détecter les arcs qui sont entièrement à l'intérieur du nouveau cercle et ceux qui le traversent. Après avoir obtenu les parties restantes des arcs, vous devez réorganiser les arcs restants et le nouveau (s).
Je suppose que toutes ces opérations peuvent être construites à partir d'une seule primitive qui trouve la partie d'un arc (définie par trois cercles) qui est à l'intérieur d'un disque.
Considérons un grand cercle et sa bordure entièrement recouverte de petits cercles. Le centre du grand cercle ne sera certainement pas couvert par les petits cercles. Et si je comprends bien la question, il s'agit de cercles avec leur intérieur. – maxim1000
C'est correct. Les cercles blancs correspondent à une zone, et un autre cercle peut recouvrir cette zone ou une partie de celle-ci. C'est ce que je dois vérifier. – oscarm
Oui, vous avez raison! Bon point. Votez-moi! : D – forestgril