Section courante

A propos

Section administrative du site

Introduction

Voici différents algorithmes en lien avec l'affichage, comme : Centrer une chaîne de caractères, Cercle avec PI, Conversion de 4 planes en BitMap, Ligne de Bézier, Mode 320x200 pixels en 256 couleurs,...

Centrer une chaîne de caractères

Lorsqu'on veut centrer une chaîne de caractères à l'écran ou dans un espace quelconque, on utilise habituellement l'algorithme suivant pour déterminer sa position de départ:

X ← ( Largeur de l'espace - Longueur de la chaîne de caractères ) / 2

Cercle avec PI

Cette algorithme montre comment on peut arriver à afficher un cercle avec le nombre PI, c'est-a-dire en utilisant les fonctions COS et SIN. Bien que cette technique soit très peut efficace par rapport au technique de Bézier, elle en demeure pas moins facile à comprendre et à imaginer. Voici donc son algorithme :

MODULE Cercle(valeur X, valeur Y, valeur Rayon)
   FinPI / 2
   PenteX / Y
   SauteFin / ( R x 2 x Pente )
   BOUCLE POUR Degré ← 0 JUSQU'A Fin AVEC SAUT DE Saute
      A ← COS(Degré) x Rayon x Pente
      B ← SIN(Degré) x Rayon x Pente
      Affiche Point ( X + A, Y + B )
      Affiche Point ( X + A, YB )
      Affiche Point ( XA, Y + B )
      Affiche Point ( XA, YB )
   FIN BOUCLE

Conversion de 4 planes en BitMap

Afin de permettre une meilleure compréhension d'une image affiché dans un mode vidéo 16 couleurs de standard EGA, VGA et Super VGA, on pourra utiliser l'algorithme suivant permettant de transformer une données totalement linéaire les 4 planes en question :

Largeur ← Octets par ligne / 4
BT ← 0
P1 ← 0
P2Largeur
P3Largeur x 2
P4P2 + P3
BOUCLE POUR Base ← 0 JUSQU'A Largeur – 1
   BOUCLE POUR IBit ← 0 JUSQU'A 7
   AndMask ← 1 décalage de bit vers la gauche IBit
   XL [ 7 – IBit ] ← (((Tampon [ P1 ] ∩ AndMask ) décalage de bit vers la droite IBit) décalage de bits vers la gauche 0 ) +
                           (((Tampon [ P2 ] ∩ AndMask ) décalage de bit vers la droite IBit) décalage de bits vers la gauche 1 ) +
                           (((Tampon [ P3 ] ∩ AndMask ) décalage de bit vers la droite IBit) décalage de bits vers la gauche 2 ) +
                           (((Tampon [ P4 ] ∩ AndMask ) décalage de bit vers la droite IBit) décalage de bits vers la gauche 3 )
   FIN BOUCLE POUR
   P1P1 + 1
   P2P2 + 1
   P3P3 + 1
   P4P4 + 1
   BOUCLE POUR IBit ← 0 JUSQU'A 3
      Tampon BitMap [ BT ] ← ( XL [ IBit x 2] / 16) + XL [ ( IBit x 2 ) + 1]
      BTBT + 1
   FIN BOUCLE POUR
FIN BOUCLE POUR

Ligne de Bézier

La ligne de Bézier est un algorithme très efficace permettant d'afficher rapidement une ligne à l'écran sans pour autant utiliser un seul calcul à virgule flottante. En voici l'algorithme :

MODULE Ligne(variable X1 , variable Y1 , variable X2, variable Y2 , variable Couleur )
   SI Y2 = Y1 ALORS
      Afficher Ligne Horizontale ( X1 , Y1 , X2 ), Couleur
   SINON
      SI Abs ( X2X1 ) < Abs( Y2 - Y1) ALORS
         SI Y1 > Y2 ALORS
            ECHANGER X1, X2
            ECHANGER Y1, Y2
         FIN SI
         SI X2 > X1 ALORS
            Direction Incrémentation ← 1
         SINON
            Direction Incrémentation ← -1
         FIN SI
         Delta YY2 - Y1
         Delta X ← Abs ( X2X1 )
         DeltaDelta X x 2 – Delta Y
         A inc ← ( Delta XDelta Y ) x 2
         B incDelta X x 2
         J X1
         Afficher Pixel ( X1 , Y1 ), Couleur
         I Y1 + 1
         BOUCLE FAIRE TANT QUE I <= Y2
            SI Delta >= 0 ALORS
               JJ + Direction Incrémentation
               DeltaDelta + A inc
            SINON
               DeltaDelta + B inc
            FIN SI
            Afficher Pixel( J , I ), Couleur
            I I + 1
         FIN BOUCLE FAIRE TANT QUE
      SINON
         SI Y1 > Y2 ALORS
            ECHANGER X1 , X2
            ECHANGER Y1 , Y2
         FIN SI
         SI Y2 > Y1 ALORS
            Direction Incrémentation ← 1
      SINON
         Direction Incrémentation ← -1
      FIN SI
      Delta XX2X1
      Delta Y ← Abs ( Y2Y1 )
      Delta ← ( Delta Y x 2 ) - Delta X
      A inc ← ( Delta YDelta X ) x 2
      B incDelta Y x 2
      JY1
      Afficher Pixel ( X1, Y1 ), Couleur
      IX1 + 1
      BOUCLE FAIRE TANT QUE I X2
         SI Delta ≥ 0 ALORS
            JJ + Direction Incrémentation
            DeltaDelta + A inc
         SINON
            DeltaDelta + B inc
         FIN SI
         Afficher Pixel ( I, J ), Couleur
         II + 1
      FIN SI
   FIN SI
FIN SI

Mode 320x200 pixels en 256 couleurs

Ce mode désigne sur les IBM PC, un affichage de 320 pixels horizontal et de 200 pixels vertical sur un choix de 256 couleurs modifiable sur une palette de 262 144 couleurs. Ce mode n'est disponible qu'à partir des cartes VGA ou supérieur par l'intermédiaire de l'INTERRUPTION 10h avec le mode 13h. L'algorithme pouvant s'appliquer pour modifier un pixel de se mode vidéo est le suivant :

Segment A000h : X + Y x 320 ← Couleur du Pixel


Dernière mise à jour : Dimanche, le 12 mars 2006