Étape 9: Algorithme Multipoint
Comme je le disais, le multipoint ne peut pas être parfait en utilisant une technologie de triangulation léger avec un capteur CCD. C’est assez complexe à travailler sur cette partie... Mais il est aussi très amusant d’imaginer de nombreuses solutions sur comment faire pour avoir les meilleurs résultats sans ajouter des problèmes.
Voici comment j’ai fait mienne :
- Tout d’abord, je stocke toutes les valeurs de la CCD dans l’onglet [] [] pour chaque LEDs
- Puis j’ai calculer tous le facteur A et B des fonctions affines Y = A * X + B allant de chaque LED au centre des « zones noires » qui ne vois pas le capteur (en rouge sur la photo).
- J’ai choisi la première fonction de la première LED (permet de l’appeler N) et calculé au croisement avec la fonction première de la LED suivante (N + 1). C’est mon premier point de référence. L’étape très importante ici est de supprimer ces deux fonctions de décrémentation k en tab_position [LED] [k] [Black_zone] (l’onglet stockant le B et A).
- Maintenant j’ai juste vérifier si la fonction première de chaque LED suivante (N + LED_LEFT) vont à proximité de ce point. S’ils le sont, j’ai adapter la position du point de référence et ainsi les supprimer.
- Quand j’ai vérifié tous les autres voyants, je commence juste au-dessus du second point. Je peux parfaitement la position de deux LEDs ou plus (comme sur la deuxième photo avec 4 points) aussi longtemps que plusieurs détection de zones noires pour une LED ne sont pas détecter deux points en même temps. Leur est toujours du travail amélioration à faire sur la façon d’utiliser ces « grande zone noire » deux points de détection. Dans mon code, je choisis de les ignorer que j’ai pu.
Cet algorithme n’est pas parfait, mais il me permet d’utiliser certains multipoint pour jeux, comme je peux choisir où sont les points de détection (voir la distance NES sur l’étape "Final program, Let's play!"). Je continuer à améliorer et espère que les quelques conseils de volonté des gens et m’aider ainsi:-)