Pour 1) Vous devez tester le chevauchement dans les rectangles. Le premier test que je développerais commencerait simplement avec les rectangles les uns sur les autres et les séparerait lentement jusqu'à ce qu'aucune collision ne soit détectée. L'erreur devrait probablement mesurer le pourcentage de chevauchement ou le nombre de pixels qui se chevauchent. Je ferais les deux ... Qui sait qu'ils ont peut-être développé l'algorithme pour être précis à une erreur de pixel ou à un% d'erreur d'objet. c'est-à-dire plus précis pour les objets plus petits. Après ce «test rapide» initial, je tenterais de développer un cas plus général avec plus de variation dans le chevauchement. c'est-à-dire ... 1 pixel dans le coin supérieur gauche chevauchant 1 pixel dans le coin inférieur gauche de l'autre rectangle avec des tailles variables de rectangles. Tester quelques cas d'angles intelligents et quelques triangles pseudo-aléatoires qui se chevauchent me semble être un bon test.
Je développe toujours des tests simples d'abord pour obtenir une rétroaction immédiate, puis j'essaie de passer à des tests plus généraux et approfondis. Évidemment, si vous mettez deux rectangles qui se chevauchent complètement et qu'il n'y a pas de collisions, quelque chose ne va pas. Pour 2) Le sémaphore de comptage vient à l'esprit comme un moyen de résoudre ce problème. Vous voulez qu'il bloque lorsque la file d'attente est pleine du côté de l'entrée et bloque lorsque la file d'attente est vide du côté de la file d'attente. Je ne suis pas sûr si les deux objets peuvent mettre en file d'attente et déqueue, mais cela n'a pas d'importance si vous utilisez des sémaphores pour suivre l'état de la file d'attente. Vous souhaitez également obtenir un verrou exclusif lorsque vous modifiez la file d'attente.
Je pense que les objets en question sont producteur et consommateur dans le problème connu du producteur-consommateur. –