Etapes pour reproduire le bug:
- Lancer l'application
- N'appuyer sur aucune autre touche que la touche Z
- Maintenir la touche Z enfoncée jusqu'au crash
Résultat attendu:
Le cube continue de s'approcher de la caméra, ou la dépasse par derrière
Résultat obtenu:
L'application crashe
Environnement:
- Windows 8.1
- python version 3.1
- pygame version 1.9.1release-svn2575
- numpy version 1.7.1
Fichier joint:
Capture d'écran de l'erreur levée et de la dernière image de l'application
Commentaires:
L'erreur vient d'un problème de cast d'un infini positif en entier, à la ligne 183:
points += [(int(ex) + int(surface.get_width() / 2), int(ey) + int(surface.get_height() / 2))]
La valeur infinie est issue d'une division par zéro deux lignes au-dessus:
f = 500 / z
ex, ey = x * f, y * f
points += [(int(ex) + int(surface.get_width() / 2), int(ey) + int(surface.get_height() / 2))]
Si z vaut 0, la valeur infinie est assignée à f
Contourner cette erreur - par exemple en posant f = 1 ou f = 10**-10 si z = 0 ne corrige pas entièrement le problème. L'application ne crashe plus, mais le cube disparaît avant même de passer derrière la caméra lorsqu'on l'approche trop. Cet effet est mieux visible si le cube est penché.