|
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
|
|