Section courante

A propos

Section administrative du site

 Langage  Elément  Programmation  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Historique
Les remarques
Les opérateurs
Les conditionnelles
Les algorithmes à base logarithmique
Les algorithmes sur les tris
Les algorithmes sur la recherche
Les algorithmes sur l'affichage
Les algorithmes sur les mathématiques
Les algorithmes de traitement de chaînes de caractères
Les algorithmes de cryptographie
Les algorithmes de traitement de graphes
Les algorithmes de traitement d'image et de vision par ordinateur
Les algorithmes d'intelligence artificielle et d'apprentissage automatique
Les algorithmes d'optimisation
Les algorithmes sur les fractals
Les algorithmes de traitement de dates et de temps
Les algorithmes de compression
Les algorithmes sur le gouvernement ou la réglementation
Tri à bulles (Bubble Sort)
Tri par insertion (Insertion Sort)
Tri par sélection (Selection Sort)
Tri de Shell-Metzner
Recherche séquentielle (Recherche linéaire)
Recherche dichotomique (Recherche binaire)
Algorithmes de calcul numérique
Algorithmes de calcul matriciel et algèbre linéaire
Algorithmes mathématiques de géométrie et trigonométrie
Algorithmes de théorie des nombres
Algorithmes statistiques et probabilistes
Algorithmes de calcul scientifique et d'optimisation
Triangle de Sierpinski
Année bissextile
Calcul de la différence entre deux dates
Algorithmes de fiscalité
Algorithmes de gestion des prestations sociales
Téléphone
Préface
Notes légal
Dictionnaire
Recherche

Introduction

Les algorithmes d'affichage sont des méthodes informatiques utilisées pour présenter des images, du texte, des graphiques et des animations sur un écran. Ils optimisent la manière dont les informations visuelles sont rendues pour garantir que l'affichage est rapide, précis et efficace. Les algorithmes d'affichage sont fondamentaux dans des domaines comme le rendu graphique, la manipulation de polices de caractères, le traitement des pixels, et l'affichage de contenu 3D ou 2D. Voici quelques types courants d'algorithmes d'affichage :


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

Un algorithme pour centrer une chaîne de caractères consiste à placer le texte de manière équilibrée dans une largeur donnée, typiquement en ajoutant des espaces de part et d'autre. 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


PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 12 mars 2006