Eheheh bravo, pare che funzioni 
Ho guardato un pò il codice, e forse ho dei suggerimenti da darti. Io te li butto là, poi vedi te 
Ho visto che fai chiamare hitControl da ogni linea (insomma da ogni "muro". Perché invece non la chiami una volta sola, e metti un ciclo for che scorra tutte le linee? Potresti creare una matrice avente una riga per ogni linea, e nelle colonne le informazioni che riguardano quella specifica riga. Ovvero:
codice:
M = [
[wx1, wy1, rotazione1], // riferita al "muro" 1
[wx2, wy2, rotazione2], // riferita al "muro" 2
.
. // eccetera...
.
]
Così potresti semplificare le cose e far sì che ogni volta che aggiungi un muro, tu debba semplicemente aggiungere una riga in questa tabella.
Comunque funziona anche così, tutto dipende da quello che ti serve
Io spesso mi diverto a fare le cose fini a sé stesse, ma di solito è una perdita di tempo 
Altra cosa: come ti accennai a suo tempo, se hai necessità di rendere il codice perfettamente funzionante in ogni circostanza dovresti eliminare quel parametro "time" e sostituirlo con qualcosa di meno approssimativo. La cosa non è impossibile ma neanche immediata, fammi sapere se ti serve o se puoi farne a meno. Il risultato sarebbe che la palla non entra più dentro ai muri, ma si ferma sempre sulla superifice (al contrario di quello che avviene ora).
In ogni caso buon lavoro