2.1 KiB
2.1 KiB
Tasks
1. Noyau géométrique et tests unitaires
- 1.1 Créer
end_finder.pyavec les fonctions puresparse_point(deux nombres, espace ou virgule),angle_between(angle en degrés entre les deux droites) etintersect_lines(intersection par produits vectoriels,ValueErrorsi vecteur direction nul), ainsi que les constantesPARALLEL_ANGLE_DEG = 0.5etWARN_ANGLE_DEG = 10.0— vérifier via les tests du 1.2 - 1.2 Créer
tests/test_end_finder.py(stdlibunittest) couvrant : parsing des formats valides (x z,x,z, décimales) et rejets des invalides ; intersection nominale à résultat exact connu ; droites verticales ; droites exactement parallèles ; vecteur nul ; cohérence deangle_between— vérifier avecpython -m unittestdepuis la racine (tout passe)
2. Flux interactif et validation manuelle
- 2.1 Implémenter
main(): prompts en français (lancé puis chute de chaque œil), re-saisie en cas d'entrée invalide, re-saisie de la chute si confondue avec le lancé, application des seuils (parallèle → erreur sans coordonnées et sortie non nulle ; angle faible → avertissement avec angle), affichage arrondi à 1 décimale — vérifier manuellement avecpython end_finder.pysur un cas nominal aux coordonnées connues - 2.2 Valider manuellement les garde-fous : deux lancers alignés (droites parallèles → message d'erreur, aucune coordonnée affichée) et deux lancers formant un angle sous 10° (coordonnées affichées + avertissement) — vérifier la conformité aux scénarios du spec
end-portal-triangulation
3. Documentation
- 3.1 Rédiger
README.md: but du programme, mode d'emploi (python end_finder.py), méthode de relevé des coordonnées en jeu (F3 au moment du lancer et à la chute), conseil de garder les deux lancers à quelques centaines de blocs l'un de l'autre et de confirmer par un troisième lancer près du point trouvé — vérifier que la commande documentée s'exécute telle quelle
Workflow follow-up
- Archiver le changement (
opsx-archive) une fois la revue de code approuvée.