Stap 9: Multipoint algoritme
Zoals ik al zei, kan de multi punt niet perfect een lichte triangulatie-technologie met een CCD sensor. Het is vrij ingewikkeld om te werken aan dit deel... Maar het is ook erg leuk om te denken van de vele verschillende oplossingen over hoe je de beste resultaten zonder problemen toe te voegen.
Hier is hoe ik mijn gemaakt:
- Eerst, ik bewaar alle de waarde van de CCD in tabblad [] [] voor elke LEDs
- Dan ik alle de factor A en B van affiene functies Y Bereken = A * X + B gaande van elke LED naar het midden van de "zwarte zones" die de sensor niet zien (in rood op de foto).
- Heb ik geselecteerd met de eerste functie van de eerste LED (laat noemen het N) en de kruising met de eerste functie van de volgende LED (N + 1) berekend. Dit is mijn eerste referentiepunt. De zeer belangrijke stap hier is het verwijderen van deze twee functies door verlagen k in tab_position [LED] [k] [Black_zone] (het tabblad waar de B en A worden opgeslagen).
- Nu kijk ik net als de eerste functie van elke volgende LED (N + LED_LEFT) gaat dicht bij dit punt. Als ze zijn, ik aanpassen van de positie van het referentiepunt en hen ook verwijderen.
- Toen ik de andere LEDs controleerde, beginnen ik enkel voor het tweede punt. Ik kan de positie van twee LED's of meer (zoals op de tweede foto met 4 punten) perfect krijgen zolang de verschillende zwarte zones detectie voor een LED zijn niet het opsporen van twee punten in de zelfde tijd. Hun is nog steeds wat beter werk te doen over het gebruik van deze "grote zwarte zone" opsporen van twee punten. Ik kies om ze te negeren als ik kon in mijn code.
Dit algoritme is niet perfect, maar het staat u mij toe enkele multi-point gebruiken voor games, zoals ik kan kiezen waar de detectie punten zijn (Zie de externe NES op stap "definitieve program, let's play!"). Ik zal blijven verbeteren, en hoop dat sommige mensen wil advies en me helpen ook :-)