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) Fin ← PI / 2 Pente ← X / Y Saute ← Fin / ( 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, Y B ) Affiche Point ( X A, Y + B ) Affiche Point ( X A, Y B ) 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 P2 ← Largeur P3 ← Largeur x 2 P4 ← P2 + 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 P1 ← P1 + 1 P2 ← P2 + 1 P3 ← P3 + 1 P4 ← P4 + 1 BOUCLE POUR IBit ← 0 JUSQU'A 3 Tampon BitMap [ BT ] ← ( XL [ IBit x 2] / 16) + XL [ ( IBit x 2 ) + 1] BT ← BT + 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 ( X2 X1 ) < 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 Y ← Y2 - Y1 Delta X ← Abs ( X2 X1 ) Delta ← Delta X x 2 Delta Y A inc ← ( Delta X Delta Y ) x 2 B inc ← Delta X x 2 J ← X1 Afficher Pixel ( X1 , Y1 ), Couleur I ← Y1 + 1 BOUCLE FAIRE TANT QUE I <= Y2 SI Delta >= 0 ALORS J ← J + Direction Incrémentation Delta ← Delta + A inc SINON Delta ← Delta + 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 X ← X2 X1 Delta Y ← Abs ( Y2 Y1 ) Delta ← ( Delta Y x 2 ) - Delta X A inc ← ( Delta Y Delta X ) x 2 B inc ← Delta Y x 2 J ← Y1 Afficher Pixel ( X1, Y1 ), Couleur I ← X1 + 1 BOUCLE FAIRE TANT QUE I ≤ X2 SI Delta ≥ 0 ALORS J ← J + Direction Incrémentation Delta ← Delta + A inc SINON Delta ← Delta + B inc FIN SI Afficher Pixel ( I, J ), Couleur I ← I + 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 |