Aller au contenu

Algorithme de Bresenham

Tracé de segment sur grille de pixels

Exercice Intermédiaire · Algorithmique · prepa scientifique et economique (CPGE)

Enonce

Implémenter bresenham(x0, y0, x1, y1) qui retourne la liste de couples (x, y) des pixels traversés par le segment.

⚠ Contrainte : Aucune opération flottante, aucun /. Doit fonctionner pour toutes les directions (8 octants), y compris segments verticaux et pentes négatives.

Signature attendue

def bresenham(x0: int, y0: int, x1: int, y1: int) -> list:

Exemples

  • bresenham(0, 0, 5, 0) → [(0,0),(1,0),(2,0),(3,0),(4,0),(5,0)]
  • bresenham(0, 0, 4, 4) → [(0,0),(1,1),(2,2),(3,3),(4,4)]
  • bresenham(0, 0, 6, 3) → [(0,0),(1,0),(2,1),(3,1),(4,2),(5,2),(6,3)]

📖 Rappel de cours

Tracer un segment entre $(x_0,y_0)$ et $(x_1,y_1)$ sur une grille de pixels nécessite de choisir, à chaque colonne, quel pixel allumer. La méthode naïve avec division flottante est lente et imprécise.

Idée de Bresenham (1965) :

Maintenir une erreur entière qui mesure l'écart entre le segment idéal et le pixel choisi. À chaque pas en $x$, on incrémente $y$ uniquement si l'erreur dépasse un seuil. Aucun flottant, aucune division.

Utilisé partout : rendu typographique, traçage CAO, rasterisation GPU.

← Exercices d'algorithmique en Python — tris, dichotomie, récursivité

Exercices du meme theme

  • Rendu de Monnaie (DP)
  • Problème des N-Reines
  • Traitement d'Image — Seuillage et Barycentre

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite