LES DESSINS ET LES GRAPHISMES
LISTE DES MOTS CLÉS SPÉCIFIQUES.
Mots clés du BBC BASIC.
BY : indique que les coordonnées sont relatives pour DRAW, FILL, MOVE ou PLOT.
CIRCLE : dessine un cercle.
CIRCLE FILL : dessine un disque.
CLG : efface les affichages graphiques de la fenêtre de sortie.
DRAW : trace une ligne depuis la position du curseur graphique jusqu'aux coordonnées absolues.
DRAW BY : trace une ligne depuis la position du curseur graphique jusqu'aux coordonnées relatives.
ELLIPSE : dessine une ellipse.
ELLIPSE FILL : dessine une ellipse pleine.
FILL : remplit une zone fermée de la couleur d'avant-plan, à partir de coordonnées absolues.
FILL BY : remplit une zone fermée de la couleur d'avant-plan, à partir de coordonnées relatives.
GCOL : définit la couleur logique d'avant-plan et d'arrière-plan des graphiques.
LINE : trace une ligne entre deux points dans la couleur de premier plan.
MODE : définit les caractéristiques de la fenêtre d'affichage du programme.
MOVE : déplace le pointeur graphique à des coordonnées absolues, sans rien dessiner.
MOVE BY : déplace le pointeur graphique à des coordonnées relatives, sans rien dessiner.
ORIGIN : définit le point d'origine pour les commandes graphiques suivantes.
PLOT : dessine divers types de figures géométriques à partir de coordonnées absolues.
PLOT BY : dessine divers types de figures géométriques à partir de coordonnées relatives.
POINT() : retourne la couleur logique (code de la palette) aux coordonnées données.
RECTANGLE : dessine un rectangle vide.
RECTANGLE FILL : dessine un rectangle plein.
RECTANGLE ... TO ... : recopie une zone rectangulaire vers un autre emplacement.
RECTANGLE FILL ... TO ... : déplace une zone rectangulaire vers un autre emplacement.
RECTANGLE SWAP ... TO ... : échange le contenu de deux zones rectangulaires.
TINT() : retourne un entier avec la valeur RVB de la couleur aux coordonnées données.
VDU : configure certains paramètres de la fenêtre de sortie et/ou de ses composants.
Variables système du BBC BASIC.
@vdu.g.a& : retourne action d'avant-plan graphique, définie par l'instruction GCOL.
@vdu.g.b& : retourne la couleur d'avant-plan pour les dessins, définie par l'instruction GCOL.
@vdu.g.c& : retourne action d'arrière-plan graphique, définie par l'instruction GCOL.
@vdu.g.d& : retourne la couleur d'arrière-plan pour les dessins, définie par l'instruction GCOL.
@vdu.l.x% : retourne la position du curseur graphique par rapport à la gauche de la fenêtre de sortie.
@vdu.l.y% : retourne la position du curseur graphique par rapport au haut de la fenêtre de sortie.
@vdu.m.b& : retourne le nombre de couleurs dans la palette (quantité - 1).
@vdu.o.x% : retourne l'abscisse actuelle du point d'origine ;
@vdu.o.y% : retourne l'ordonnée actuelle du point d'origine.
@vdu.p.x% : retourne la valeur précédente de @vdu.l.x%.
@vdu.p.y% : retourne la valeur précédente de @vdu.l.y%.
Module de la bibliothèque du BBC BASIC.
aagfxlib.bbc : propose des procédures et des fonctions permettant d'obtenir des graphismes anticrénelés.
ellipse.bbc : propose des procédures pour dessiner des ellipse inclinées par rapport à l'axe des abscisses.
gfxlib.bbc : propose des procédures et des fonctions pour afficher des graphismes 2D haute performance pour les jeux.
imglib.bbc : propose des procédures et des fonctions pour charger et afficher des fichiers images.
ogllib.bbc : propose des procédures et des fonctions pour l'affichage de graphismes 3D.
pdflib.bbc : propose des procédures et des fonctions permettant de créer des documents au format .pdf.
PRÉAMBULE.
Rappel : Avec BBC BASIC SDL 2.0 une unité graphique corresponds en réalité à deux unités d'image, ou pixels. Par exemple, en MODE 8, la fenêtre de sortie a une surface graphique de 640 x 512 points soit une surface d'image de 1280 x 1024 pixels.
Rappel : Quand des coordonnées graphiques sont données, la première valeur correspond à l'abscisse et la deuxième valeur corresponds à l'ordonnée. L'axe des abscisses est la ligne parallèle aux bords haut et bas de la fenêtre de sortie, la valeur de l'abscisse augmente en allant vers la droite et diminue en allant vers la gauche. L'axe des ordonnées est la ligne parallèle aux bords gauche et droit de la fenêtre de sortie, la valeur de l'ordonnée augmente en allant vers le haut et diminue en allant vers le bas. Le point d'origine est l'intersection de ces deux axes et ses coordonnées sont ( 0 , 0 ).
Rappel : quand on fait appel à une variable système, il est conseillé de faire marquer une légère pause au programme avec la fonction WAIT() afin de s'assurer que les traitements en cours sont bien terminés et que les valeurs de ces variables ont bien été mise à jour.
Par défaut, un programme BBC BASIC se lancera dans une fenêtre par défaut, ne pouvant afficher que du texte et des tracés noir sur fond blanc. Cette configuration, pouvant suffire pour des applications simples, avec peu de mise ne forme, est insuffisante pour exploiter pleinement les possibilités graphiques qu'offre le BBC BASIC.
Pour modifier les caractéristiques de la fenêtre, où s'exécutera le programme BBC BASIC, on peut utiliser l'instruction VDU 22 , 23 , largeur ; hauteur ; charx , chary , ncols , charset pour une configuration fortement personnalisée, mais le plus souvent on aura recours à l'une des options de l'instruction MODE.
La fenêtre obtenue avec l'instruction MODE 8, est une bonne configuration polyvalente, en s'adaptant aisément à la plupart des ordinateurs, ce qui permettra de déplacer son script sur d'autres machines sans avoir à adapter le code du programme en fonction de la configuration de l’hôte. L'option MODE 8 permet d'afficher :
- du texte en 80 colonnes sur 32 lignes et ;
- des dessins en 1280 pixels de large sur 1024 pixels de haut ;
- soit 640 x 412 unités graphiques ;
- en 16 couleurs.
Avec BBC BASIC SDL 2.0 une unité graphique corresponds en réalité à deux unités d'image, ou pixels. Par exemple, en MODE 8, la fenêtre de sortie a une surface graphique de 640 x 512 points graphiques soit une surface d'image de 1280 x 1024 pixels.
Si l'utilisateur déplace ou redimensionne la fenêtre de sortie, à l'aide de la souris par exemple, la commande ON MOVE, si elle est présente, permet de gérer cet événement.
Voir l'instruction MODE pour plus de détails sur les options disponibles pour la fenêtre d'affichage.
Voir l'instruction VDU pour plus de détails sur les options de flux de sortie sélectionné.
GÉNÉRALITÉS.
Tout nouveau tracé, ou dessin, se place au-dessus des tracés, ou dessins, précédents.
1. Définir la surface de la fenêtre graphique.
Rappel : Bien qu'elles cohabitent, en se chevauchant, dans la fenêtre de sortie, la surface graphique et la surface textuelle sont bien 2 surfaces différentes. A l'initialisation d'une nouvelle fenêtre de sortie, les surfaces textuelle et graphique s'étendent sur la totalité de la fenêtre de sortie du BBC BASIC, mais leur taille et leur position peuvent être modifiées, indépendamment l'une de l'autre, et elle pourront être restaurées à leur valeur initiale avec la commande VDU 26.
L'instruction CLS efface la surface textuelle, alors que l'instruction CLG supprimera le contenu de la surface graphique. Si toute ou partie des surfaces textuelle et graphique sont superposées, la couleur d'arrière-plan de la zone commune sera définie par la dernière commande d'effacement exécutée. Les caractères sont affichés en fonction de la position du curseur texte et les dessins sont tracés en tenant compte du curseur graphique.
MODE 8 : REM - affiche et initialise une fenêtre de sortie
VDU 28 , 30 , 17 , 52 , 8 : REM - modifie la surface textuelle
VDU 24 , 300 ; 250 ; 750 ; 900 ; : REM - modifie la surface graphique
GCOL 129 : CLG : REM - efface et recolorise la surface graphique
COLOUR 132 : CLS : REM - efface et recolorise la surface textuelle
FOR ktest = 0 TO 127
COLOUR ktest
PRINT "BBC BASIC for SDL 2.0"
GCOL RND ( 16 )
LINE RND( 1280 ) , RND( 1024 ) , RND( 1280 ) , RND( 1024 )
WAIT( 25 )
NEXT ktest
END
Pour modifier la position de la surface graphique dans la fenêtre de sortie, et ses dimensions, sauf si la fenêtre de sortie est en MODE 7, on utilisera la commande VDU 24 , gauche ; bas ; droite ; haut ; ( attention à ne pas oublier le dernier ; ) où :
- gauche indique l'abscisse de la bordure gauche de la surface graphique ;
- bas indique l'ordonnée de la bordure basse de la surface graphique ;
- droite indique l'abscisse de la bordure droite de la surface graphique ;
- haut indique l'ordonnée de la bordure haute de la surface graphique.
gauche, bas, droite et haut doivent être compris entre −32 768 et +32 767 et être exprimés en fonction des coordonnées du point d'origine graphique (voir ci-dessous). Il est donc vivement conseillé d'utiliser l'instruction ORIGIN 0 , 0 avant la commande VDU 24, pour s'assurer que le point d'origine graphique est bien repositionnée dans le coin inférieur gauche de la fenêtre de sortie.
MODE 8
kencre = 3
kfond = 128
REPEAT
VDU 24 , RND( 640 ) ; RND( 512 ) ; 640 + RND( 640 ) ; 512 + RND( 512 ) ;
IF kencre < 16 THEN kencre += 1 ELSE kencre = 0
IF kfond < 143 THEN kfond += 1 ELSE kfond = 128
GCOL kencre
GCOL kfond
CLG
WAIT ( 100 )
CIRCLE FILL 640 , 512 , 100
PRINT TAB( 0 , 0 ) "Appuyez sur Q pour quitter."
kpause$ = INKEY$( 100 )
UNTIL kpause$ = "Q" OR kpause$ = "q"
END
On remarquera :
- seuls les dessins et tracés contenus dans la nouvelle surface de la surface graphique sont effacés ;
- seule la nouvelle surface de la surface graphique est recolorisée ;
- les parties des dessins qui se trouvent hors de la surface de la surface graphique ne sont pas affichées.
2. Origine du système de coordonnées.
Par défaut, le point d'origine des dessins est situé à l'intersection des bordures gauche et basse de la fenêtre de sortie :
- l'abscisse de cette origine est 0 et augment en se déplaçant vers la droite de la fenêtre de sortie ;
- l'ordonnée de cette origine est 0 et augmente en se déplaçant vers le haut de la fenêtre de sortie.
L'instruction ORIGIN permet de définir les coordonnées du point d'origine, c'est-à-dire le point de la fenêtre qui aura les coordonnées : 0,0. Ces coordonnées peuvent se trouver en dehors de la fenêtre, mais doivent toujours être comprises entre −32768 et +32767. Son appel doit avoir la forme ORIGINE abscisse , ordonnee où :
- abscisse est un nombre entier, indiquant une distance depuis la gauche de la fenêtre de sortie ;
- ordonnee est un nombre entier, indiquant une distance depuis le bas de la fenêtre de sortie.
Toutes les instructions de dessin prendront en compte les coordonnées du point d'origine définie par le dernier appel de l'instruction ORIGIN pour placer les dessins qui seront commandés.
Pour connaitre les coordonnées actuelles du point d'origine, par rapport au coin inférieur-gauche de la fenêtre de sortie, on utilisera les variables système :
- @vdu.o.x% , pour connaitre l'abscisse actuelle du point d'origine ;
- @vdu.o.y% , pour connaitre l'ordonnée actuelle du point d'origine.
Notez que les coordonnées du point d'origine seront réinitialisées dans le coin inférieur gauche de la fenêtre, par l'utilisation d'une instruction MODE ou d'une commande VDU 26.
MODE 8
ORIGIN 640 , 512 : REM --- modifie la position du point d'origine
WAIT( 10 ) : REM - marque une legere pause pour mettre à jour les variables systeme
PRINT @vdu.o.x% , @vdu.o.y% : REM - affiche l'abscisse et l'ordonnee du point d'origine
ORIGINE abscisse , ordonnee et VDU 29 , abscisse ; ordonnee sont des synonymes.
3. Indiquer des coordonnées aux instructions de dessin.
La plupart des instructions de dessin ont besoin de coordonnées pour fonctionner correctement. On peut fournir ces coordonnées de façon :
- absolue, grâce une paire de valeurs ayant la forme abscisse , ordonnee , où :
- abscisse précise l'abscisse réelle (absolue) du point ;
- ordonnee précise l'ordonnée réelle (absolue) point ;
- relative, indiquée par le mot clé BY grâce une paire de valeurs ayant la forme horizontal , vertical , où :
- horizontal est le décalage horizontal, en pixels, de l'abscisse du curseur graphique. Si horizontal est :
- positif, l'abscisse du curseur graphique se déplace vers la droite (augmente) ;
- 0, l'abscisse du curseur graphique ne change pas ;
- négatif, l'abscisse du curseur graphique se déplace vers la gauche (diminue).
- vertical est le décalage vertical, en pixels, de l'ordonnée du curseur graphique. Si vertical est :
- positif, l'ordonnée du curseur graphique se déplace vers le haut (augmente) ;
- 0, l'ordonnée du curseur graphique ne change pas ;
- négatif, l'ordonnée du curseur graphique se déplace vers le bas (diminue).
abscisse, ordonnee, horizontal et vertical doivent être des nombres entiers compris entre −32768 et +32767.
4. Le curseur graphique.
Le curseur graphique donne les coordonnées, sur ou en dehors de la fenêtre de sortie, à partir desquelles le tracé suivant débutera. Il est actualisé après chaque opération graphique réalisée et, en général, il correspond aux coordonnées du derniers point visité. Il est possible de connaitre la position actuelle du curseur graphique en interrogeant certaines variables systèmes, mais qui dépendent de l'O.S. présent sur la machine hôte. Voir les variables système pour plus de détails.
L'instruction MOVE permet de modifier manuellement les coordonnées du curseur graphique pour le déplacer n'importe où sur ou en dehors de la fenêtre de sortie, et sans effectuer de tracé.
Avec la forme MOVE abscisse , ordonnee déplace le curseur graphique de façon absolue, c'est-à-dire que abscisse et ordonnee sont exprimés en fonction du point d'origine aux coordonnées (0,0). Par exemple : MOVE 100 , 50 place le curseur graphique aux coordonnées abscisse = 100 et ordonnée = 50.
Avec la forme MOVE BY horizontal , vertical déplace le curseur graphique de façon relative. c'est-à-dire que l'abscisse et l'ordonnée de la nouvelle position du curseur graphique sont exprimées en fonction de sa position actuelle. Par exemple : MOVE BY 100 , 50 déplace le curseur graphique de 100 points sur l'axe des abscisses et de 50 points sur l'axe des ordonnées.
Quelle que soit la forme utilisée, les coordonnées de la nouvelle position du curseur graphique doivent être comprises entre −32768 et +32767, toute valeur en dehors de cette fourchette seront tronquées aux limites, inférieure ou supérieure, de la fenêtre de sortie.
MODE 8
MOVE 100 , 50 : REM --- deplace le curseur graphique
DRAW 300 , 150 : REM --- trace une ligne
ORIGIN 640 , 512 : REM --- modifie la position du point d'origine
MOVE 100 , 50 : REM --- deplace le curseur graphique
DRAW 300 , 150 : REM --- trace une ligne
END
Pour connaitre la position du curseur graphique, en unités graphique BBC BASIC, on consultera la variable système :
- @vdu.l.x% qui retourne sa position actuelle par rapport au bord gauche de la fenêtre de sortie ;
- @vdu.l.y% qui retourne sa position actuelle par rapport au bord haut de la fenêtre de sortie.
- @vdu.p.x% qui retourne sa position précédente par rapport au bord gauche de la fenêtre de sortie ;
- @vdu.p.y% qui retourne sa position précédente par rapport au bord haut de la fenêtre de sortie.
Comme les valeurs retournées par ces variables système sont exprimées en unités graphiques BBC BASIC, il faudra les multiplier par 2 pour obtenir le nombre de pixels réellement disponibles pour chacune de ces axes. De plus, l'ordonnée est retournée par rapport à la bordure supérieure de la fenêtre de sortie, et non de la bordure inférieure qui est la référence pour l'ordonnée des placements des tracés et des dessins.
Enfin, les valeurs retournées sont absolues, c'est-à-dire qu'elles ne tiennent pas compte des coordonnées du point d'origine, qui n'est pas forcément dans le coin inférieur-gauche, car le script peut le modifier avec l'instruction ORIGIN. Pour retrouver la position du curseur graphique dans le système de coordonnées de la fenêtre de sortie, il faudra soustraire les coordonnées du point d'origine aux valeurs retournées, sans oublier que ces coordonnées sont, elles, exprimées en pixels et non en unités graphiques de BBC BASIC.
Rappel : quand on fait appel à une variable système, il est conseillé de fait marque une légère pause au programme avec la fonction WAIT() , en général WAIT( 10 ), afin de s'assurer que les traitements en cours sont bien terminés et que les valeurs de ces variables ont bien été mise à jour.
MODE 8
REM - tester avec différents points d'origine en mettant ici ORIGINE horizontal , vertical
FOR kabscisse = 4 TO 5
FOR kordonnee = 6 TO 7
MOVE kabscisse , kordonnee
WAIT( 20 )
kabs = ( @vdu.l.x% * 2 ) - @vdu.o.x%
kord = ( ( @size.y% - @vdu.l.y% - 1 ) * 2 ) - @vdu.o.y%
PRINT kabscisse ; ":" ; kordonnee ; " - " ; @vdu.l.x% ; ":" ; @vdu.l.y% ; " - " ; kabs ; ":" ; kord
NEXT kordonnee
NEXT kabscisse
END
MOVE abscisse , ordonnee et PLOT 4 , abscisse , ordonnee sont des synonymes. (voir ci-dessous)
MOVE BY horizontal , vertical et PLOT 0 , horizontal , vertical sont des synonymes. (voir ci-dessous)
5. Épaisseur des lignes tracés.
Par défaut, tous les tracés, que ce soit pour dessiner des lignes continues ou les contours de figures, l'épaisseur des traits est de 1 pixel. Pour modifier cette épaisseur, on doit utiliser la commande VDU 23 , 23 , epaisseur ou VDU 23 , 23 , epaisseur ; 0 ; 0 ; 0 ; où epaisseur est un nombre entier définissant la nouvelle épaisseur des tracés à venir.
L'épaisseur des tracés existants ne sera pas modifiée et les tracés réalisés en pointillés ou en discontinus auront toujours une épaisseur de 1 pixel quelque soit la valeur de epaisseur active.
MODE 8
GCOL 3
FOR kepaisseur = 2 TO 10
kordonnee = 1024 - ( kepaisseur * 50 )
LINE 100 , kordonnee , 1180 , kordonnee
VDU 23 , 23 , kepaisseur ; 0 ; 0 ; 0 ;
NEXT kepaisseur
END
6. Effacer les tracés et modifier la couleur du fond.
L'instruction CLG efface tous les tracés créés depuis le début du programme ou depuis la dernière utilisation de l'instruction CLG et actualise la couleur de fond de la surface graphique si une instruction GCOL l'a modifiée. Notez que les coordonnées du pointeur graphique ne sont pas modifiées, contrairement à l'instruction CLS qui réinitialise la position du pointeur texte aux coordonnées ( 0 , 0 ).
MODE 8
GCOL 146 : REM --- modifie la couleur du fond (voir ci-dessous)
DRAW 800 , 400 : REM --- trace une ligne
PRINT "Appuyez sur une touche pour effacer le trace ..."
kattente$ = GET$ : REM --- attend que l'utilisateur appuie sur une touche
CLG : REM --- efface la ligne et change la couleur du fond
PRINT "Test termine."
PRINT "Vous pouvez fermer la fenetre."
END
7. Gestion des couleurs des dessins.
Pour modifier la couleur des dessins, on utilise l'instruction GCOL :
- avec des valeurs inférieures à 128 pour les tracés et les remplissages à venir ;
- avec des valeurs supérieures à 127 pour le fond, après une instruction CLG.
MODE 8
FOR kcouleur = 1 TO 16
GCOL kcouleur : REM --- modifie la couleur du tracé (<128)
GCOL 146 - kcouleur : REM --- modifie la couleur du fond (>127)
CLG : REM --- efface les tracés
PRINT "Test en cours ..."
CIRCLE FILL 639 , 511 , 100 : REM --- trace un cercle plein
WAIT 50
NEXT kcouleur
PRINT "Test termine."
PRINT "Vous pouvez fermer la fenetre."
END
Notes : Les couleurs du texte, avant et arrière plan ne sont pas modifiées, mais les textes chevauchant la surface graphique sont bien effacés. Si l'on supprime la commande CLG, la couleur de fond ne sera jamais modifié durant l’exécution du programme, bien que ses modifications soient prises en compte. Pour gérer les couleurs des dessins, on pourra aussi utiliser l'instruction VDU 18.
L'instruction GCOL peut aussi avoir la forme GCOL mode , couleur, où :
- mode détermine le mode de traçage, si mode vaut :
- 0, les tracés se feront avec couleur ;
- 1, OR binaire de couleur avec la couleur présente ;
- 2, AND binaire de couleur avec la couleur présente ;
- 3, XOR binaire de couleur avec la couleur présente ;
- 4, inverse la couleur présente (couleur n'est pas pris en compte dans ce mode) ;
- 5, ne faites rien (les opérations sont interdites) ;
- 6, AND binaire inverse de couleur avec la couleur présente ;
- 7, OR binaire et inverse de couleur avec la couleur présente ;
- couleur la couleur de premier plan ou d'arrière-plan du graphique, selon les modalités ci-dessus.
Voir l'instruction GCOL pour plus de détails sur les modes de traçages.
Dans BBC BASIC pour SDL 2.0, il existe deux types de couleurs : logiques et physiques.
Le nombre de couleurs disponibles dépend du mode d'affichage choisi, il y a :
- 2 couleurs logiques avec MODE 0, MODE 4 et MODE 32 ;
- 4 couleurs logiques avec MODE 1, MODE 5 et MODE 33 ;
- 8 couleurs logiques avec MODE 7, mais ce mode ne possède pas de palette de couleur ;
- 16 couleurs logiques avec les autres modes de fenêtres de sortie ;
- 128 couleurs logiques avec les modes personnalisées grâce à VDU 22 , 23 , ....
Pour connaitre la couleur d'un point spécifique de la fenêtre de sortie aux coordonnées données en argument, on utilisera la fonction :
- POINT ( abscisse , ordonnee ) pour obtenir la valeur de la couleur logique ;
- TINT ( abscisse , ordonnee ) pour obtenir la valeur de la couleur physique.
Si le point aux coordonnées ( abscisse , ordonnee ) est en dehors de la fenêtre de sortie, les fonctions POINT() et TINT() retourneront −1.
MODE 8
GCOL 3 : REM --- definie la couleur du premier plan en jaune
CIRCLE FILL 410 , 511 , 100 : REM --- dessine un rond jaune à gauche
GCOL 1 : REM --- definie la couleur du premier plan en rouge
CIRCLE FILL 640 , 511 , 100 : REM --- dessine un rond rouge au centre
GCOL 4 : REM --- definie la couleur du premier plan en bleu
CIRCLE FILL 870 , 511 , 100 : REM --- dessine un rond bleu à droite
FOR kabscisse = 295 TO 980 STEP 115
klogique = POINT( kabscisse , 511 )
kphysique = TINT( kabscisse , 511 )
PRINT "A l'abscisse " ; kabscisse ; " : " ; klogique ; " et " ; kphysique
NEXT kabscisse
END
retourne
A l'abscisse 295 : 0 et 0
A l'abscisse 410 : 3 et 52942
A l'abscisse 525 : 0 et 0
A l'abscisse 640 : 1 et 206
A l'abscisse 755 : 0 et 0
A l'abscisse 870 : 4 et 13500416
A l'abscisse 985 : 0 et 0
GCOL couleur et VDU 18 , 0 , couleur sont des synonymes.
GCOL mode , couleur et VDU 18 , mode , couleur sont des synonymes.
Voir La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.
TRACER UNE LIGNE SIMPLE.
L'instruction DRAW trace un segment de ligne droite depuis la position du curseur graphique jusqu'aux coordonnées fournies à l'instruction. L'appel de l'instruction doit avoir la forme :
- DRAW abscisse , ordonnee, coordonnées absolues du point final ;
- DRAW BY horizontal , vertical, coordonnées relatives à la position actuelle du curseur graphique du point final.
Les coordonnées du point final, qu'elles soient fournies de façon absolues ou relatives, doivent être des valeurs numériques comprises entre −32768 et +32767. Après le tracé du segment de ligne, le curseur graphique sera déplacé aux coordonnées du point final.
MODE 8
MOVE 100 , 50 : REM --- deplace le curseur graphique
FOR kvaleur = 1 TO 10
kabscisse = kvaleur * 125
kordonnee = kvaleur * 75
GCOL kvaleur kvaleur : REM --- modifie la couleur du premier plan
DRAW kabscisse , kordonnee : REM --- trace un nouveau segment
NEXT kvaleur
END
L'instruction DRAW et PLOT 5 sont synonymes (voir ci-dessous).
L'instruction LINE trace un segment de ligne droite sur la surface graphique. L'appel de l'instruction doit avoir la forme LINE xdebut , ydebut , xfin , yfin, où :
- xdebut , ydebut sont les coordonnées du point de départ du segment et ;
- xfin , yfin sont les coordonnées du point d'arrivée du segment.
xdebut, ydebut, xfin et yfin doivent être des valeurs numériques comprises entre −32768 et +32767. Après le tracé du segment de ligne, xfin , yfin deviennent les nouvelles coordonnées du curseur graphique.
MODE 8
FOR kvaleur = 1 TO 16
kxdebut = 100 + RND( 200 )
kydebut = 50 + RND( 920 )
kxfin = 1180 - RND( 200 )
kyfin = 50 + RND( 920 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
LINE kxdebut , kydebut , kxfin , kyfin : REM --- trace un nouveau segment
NEXT kvaleur
END
COLORIER UNE FIGURE FERMÉE.
L'instruction FILL colorie, avec la couleur d'avant-plan, tous les points contenue dans une figure fermé.
L'appel de l'instruction doit avoir la forme FILL abscisse , ordonnee, où abscisse , ordonnee sont les coordonnées à partir duquel les points de la figure seront coloriées. L'opération de coloriage se poursuivra tant qu'un point de la couleur de l'arrière-plan n'est pas rencontré. Si la figure n'est pas fermée, le remplissage sera effectué sur toute la surface graphique.
Avec la forme FILL BY horizontal , vertical, les coordonnées du point de départ sont exprimées de façon relative, c'est-à-dire que horizontal , vertical indiquent le décalage qui faut ajouter à la position actuelle du curseur graphique.
Quelle que soit la forme utilisée, les coordonnées du point de référence doivent être comprises entre −32768 et +32767. Après le coloriage de la zone, le curseur graphique sera déplacé aux coordonnées du point de référence.
MODE 8
MOVE 400 , 700
DRAW 600 , 800
DRAW 900 , 500
DRAW 800 , 300
DRAW 1000 , 250
DRAW 700 , 100
DRAW 300 , 300
DRAW 400 , 700
PRINT "Appuyez sur une touche pour colorier la figure ... "
GCOL 4
kpause = GET
FILL 640 , 500
PRINT "Appuyez sur une touche pour colorier le reste ... "
GCOL 1
kpause = GET
FILL 0 , 0
END
L'instruction FILL abscisse , ordonnee et PLOT 133 , abscisse , ordonnee sont synonymes (voir ci-dessous).
L'instruction FILL BY abscisse , ordonnee et PLOT 129 , abscisse , ordonnee sont synonymes (voir ci-dessous).
Le mot clé FILL peut aussi être associé aux instructions de dessin CIRCLE, ELLIPSE et RECTANGLE pour colorier les figures qu'elles tracent. (voir ci-dessous).
DESSINER UN RECTANGLE OU UN CARRÉ.
L'instruction RECTANGLE dessine un rectangle, ou un carré.
Pour tracer un rectangle, l'appel de l'instruction doit avoir la forme RECTANCLE abscisse , ordonnee , longueur , hauteur, où :
- abscisse et ordonnee sont les coordonnées du coin en bas et à gauche (origine) du rectangle ;
- longueur est la taille horizontale du rectangle ;
- hauteur est la verticale du rectangle.
MODE 8
FOR kvaleur = 1 TO 16
kabscisse = RND( 1279 )
kordonnee = RND( 1023 )
klongueur = 200 - RND( 400 )
khauteur = 200 - RND( 400 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
RECTANGLE kabscisse , kordonnee , klongueur , khauteur : REM --- trace un rectangle
NEXT kvaleur
END
Si longueur est :
- positif, le rectangle s'étend vers la droite ;
- négatif, le rectangle s'étend vers la gauche ;
si hauteur est :
- positif, le rectangle s'étend vers le haut ;
- négatif, le rectangle s'étend vers le bas.
MODE 8
GCOL 1 : RECTANGLE 640 , 512 , 300 , 150 : REM --- trace un rectangle rouge
GCOL 2 : RECTANGLE 640 , 512 , -300 , 150 : REM --- trace un rectangle vert
GCOL 4 : RECTANGLE 640 , 512 , -300 , -150 : REM --- trace un rectangle bleu
GCOL 7 : RECTANGLE 640 , 512 , 300 , -150 : REM --- trace un rectangle blanc
END
Pour tracer un carré, l'appel de l'instruction doit avoir la forme RECTANCLE abscisse , ordonnee , taille, où :
- abscisse et ordonnee sont les coordonnées du coin en bas et à gauche (origine) du rectangle ;
- longueur est l'abscisse du coin opposé à origine ;
- taille est la taille des cotés du carré.
MODE 8
FOR kvaleur = 1 TO 16
kabscisse = RND( 1279 )
kordonnee = RND( 1023 )
ktaille = 200 - RND( 400 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
RECTANGLE kabscisse , kordonnee , ktaille : REM --- trace un carre
NEXT kvaleur
END
Si taille est :
- positif, le carré s'étend vers la droite et le haut ;
- négatif, le rectangle s'étend vers la gauche et le bas ;
MODE 8
GCOL 2 : RECTANGLE 640 , 512 , 300 : REM --- trace un carré vert
GCOL 7 : RECTANGLE 640 , 512 , -300 : REM --- trace un carré blanc
END
La forme RECTANGLE FILL permet de dessiner un rectangle ou un carré plein, c'est-à-dire rempli de la couleur de premier-plan.
MODE 8
FOR kvaleur = 1 TO 16
kabscisse = RND( 1279 )
kordonnee = RND( 1023 )
klongueur = 200 - RND( 400 )
khauteur = 200 - RND( 400 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
RECTANGLE FILL kabscisse , kordonnee , klongueur , khauteur : REM --- trace un rectangle plein
NEXT kvaleur
END
abscisse, ordonnee, longueur, hauteur et taille doivent être des valeurs numériques comprises entre −32768 et +32767. Après le tracé du cercle, abscisse et ordonnee deviennent les nouvelles coordonnées du curseur graphique.
L'instruction RECTANGLE correspond à PLOT 96 (voir ci-dessous).
L'instruction RECTANGLE FILL correspond à PLOT 97 (voir ci-dessous).
DESSINER UN CERCLE.
L'instruction CIRCLE dessine un cercle. L'appel de l'instruction doit avoir la forme CIRCLE abscisse , ordonnee , rayon, où abscisse , ordonnee sont les coordonnées du centre du cercle et rayon le rayon du cercle à dessiner. abscisse, ordonnee et rayon doivent être des valeurs numériques comprises entre −32 768 et +32 767. Après le tracé du cercle, abscisse et ordonnee deviennent les nouvelles coordonnées du curseur graphique.
MODE 8
FOR kvaleur = 1 TO 16
kabscisse = RND( 1279 )
kordonnee = RND( 1023 )
krayon = 200 - RND( 400 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
CIRCLE kabscisse , kordonnee , krayon : REM --- trace un cercle
NEXT kvaleur
END
La forme CIRCLE FILL abscisse , ordonnee , rayon permet de dessiner un rond, ou cercle plein, c'est-à-dire un cercle rempli de la couleur de premier-plan.
MODE 8
FOR kvaleur = 1 TO 16
kabscisse = RND( 1279 )
kordonnee = RND( 1023 )
krayon = 200 - RND( 400 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
CIRCLE FILL kabscisse , kordonnee , krayon : REM --- trace un rond
NEXT kvaleur
END
L'instruction CIRCLE abs , ord , ray correspond à PLOT 145 , ray , 0 (voir ci-dessous).
L'instruction CIRCLE FILL abs , ord , ray correspond à PLOT 153 , ray , 0 (voir ci-dessous).
DESSINER UNE ELLIPSE.
L'instruction ELLISPE dessine une ellipse. L'appel de l'instruction doit avoir la forme ELLISPE abscisse , ordonnee , horizon , vertical, où abscisse , ordonnee sont les coordonnées du centre de l'ellipse, horizon le rayon horizontal de l'ellipse et vertical le rayon vertical de l'ellipse à dessiner. abscisse, ordonnee, horizon et vertical doivent être des valeurs numériques comprises entre −32768 et +32767. Après le tracé de l'ellipse, abscisse et ordonnee deviennent les nouvelles coordonnées du curseur graphique.
MODE 8
FOR kvaleur = 1 TO 16
kabscisse = RND( 1279 )
kordonnee = RND( 1023 )
khorizon = 200 - RND( 400 )
kvertical = 200 - RND( 400 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
ELLIPSE kabscisse , kordonnee , khorizon , kvertical : REM --- trace une ellipse
NEXT kvaleur
END
La forme ELLISPE FILL abscisse , ordonnee , horizon , vertical, permet de dessiner une ellipse pleine, rempli de la couleur de du premier-plan.
MODE 8
FOR kvaleur = 1 TO 16
kabscisse = RND( 1279 )
kordonnee = RND( 1023 )
khorizon = 200 - RND( 400 )
kvertical = 200 - RND( 400 )
GCOL kvaleur : REM --- modifie la couleur du premier plan
ELLIPSE FILL kabscisse , kordonnee , khorizon , kvertical : REM --- trace une ellipse pleine
NEXT kvaleur
END
L'instruction ELLIPSE abs , ord , hor , ver correspond à PLOT 193 , 0 , ver (voir ci-dessous).
L'instruction ELLIPSE FILL abs , ord , hor , ver correspond à PLOT 291 , 0 , ver (voir ci-dessous).
Note : BBC BASIC pour SDL 2.0 ne peut dessiner que des ellipses alignées sur les axes. Pour dessiner une ellipse angulaire, utilisez les routines de la bibliothèque ELLIPSE.
DÉPLACER UNE ZONE RECTANGULAIRE.
La forme de l'instruction RECTANGLE FILL abscisse , ordonnee , largeur , hauteur TO versx , versy déplacera une zone rectangulaire de la fenêtre de sortie vers un autre emplacement de la même fenêtre de sortie.
abscisse, ordonnee, largeur, hauteur, versx et versy doivent être des nombres entiers compris entre −32768 et +32767. Après le tracé le déplacement, abscisse et ordonnee deviennent les nouvelles coordonnées du curseur graphique.
- abscisse est l'abscisse du coin inférieur bas (origine) de la zone à déplacer ;
- ordonnee est l'ordonnée du coin inférieur bas (origine) de la zone à déplacer ;
- largeur largeur de la zone à déplacer ;
- hauteur hauteur de la zone à déplacer ;
- versx est l'abscisse du coin inférieur bas de la zone de destination ;
- versy est l'ordonnée du coin inférieur bas de la zone de destination.
La zone d'origine (source) sera remplie de la couleur d'arrière-plan. Si une portion de la zone origine chevauche une partie de la zone de destination, cette portion ne sera pas effacée après le transfert des graphismes.
MODE 8
CIRCLE FILL 250 , 250 , 75
LINE 0 , 0 , 1279 , 1023
LINE 1279 , 1023 , 0 , 0
PRINT "Appuyez sur une touche pour déplacer le disque ..."
kpause = GET
RECTANGLE FILL 150 , 150 , 300 , 300 TO 600 , 600
END
Si les caractéristiques de la surface graphique ont été modifiées avec une commande VDU 24, les zones d'origine et de destination peuvent tout de même se trouver hors de la surface graphique.
MODE 8
VDU 24 , 100 ; 100 ; 500 ; 500 ; : REM - restreint la surface graphique
GCOL 12
GCOL 143
CLG : REM - remplie la surface graphique de la couleur d'arrière-plan
CIRCLE FILL 250 , 250 , 75
LINE 100 , 300 , 500 , 300
LINE 300 , 100 , 300 , 500
RECTANGLE FILL 150 , 150 , 200 , 200 TO 600 , 600 : REM - deplacement hors de la surface graphique
RECTANGLE FILL 600 , 600 , 200 , 200 TO 200 , 700 : REM - deplacement exterieur à la surface graphique
LINE 0 , 0 , 1279 , 1023 : REM - trace temoin
END
Le tracé témoin LINE 0 , 0 , 1279 , 1023, programmé pour aller du coin inférieur-gauche au coin supérieur-droit, et qui n'est affiché que dans la surface graphique, démontre bien qu'il n'est pas possible de dessiner en dehors de la surface graphique, mais que les déplacement peuvent être fait vers et/ou depuis toute la fenêtre de sortie.
L'instruction RECTANGLE FILL ... TO ... correspond à PLOT 185.
COPIER UNE ZONE RECTANGULAIRE.
La forme de l'instruction RECTANGLE abscisse , ordonnee , largeur , hauteur TO versx , versy copiera une zone rectangulaire de la fenêtre de sortie vers un autre emplacement de la même fenêtre de sortie.
abscisse, ordonnee, largeur, hauteur, versx et versy doivent être des nombres entiers compris entre −32768 et +32767. Après le tracé du segment de ligne, abscisse et ordonnee deviennent les nouvelles coordonnées du curseur graphique.
- abscisse est l'abscisse du coin inférieur bas (origine) de la zone à déplacer ;
- ordonnee est l'ordonnée du coin inférieur bas (origine) de la zone à déplacer ;
- largeur largeur de la zone à déplacer ;
- hauteur hauteur de la zone à déplacer ;
- versx est l'abscisse du coin inférieur bas de la zone de destination ;
- versy est l'ordonnée du coin inférieur bas de la zone de destination.
La zone d'origine (source) ne sera pas modifié après la copie. Si une portion de la zone origine chevauche une partie de la zone de destination, cette portion sera modifiée par le nouveau graphisme.
MODE 8
CIRCLE FILL 250 , 250 , 75
LINE 0 , 0 , 1279 , 1023
LINE 1279 , 1023 , 0 , 0
PRINT "Appuyez sur une touche pour déplacer le disque ..."
kpause = GET
RECTANGLE 150 , 150 , 300 , 300 TO 600 , 600
END
Si les caractéristiques de la surface graphique ont été modifiées avec une commande VDU 24, les zones d'origine et de destination peuvent tout de même se trouver hors de la surface graphique.
MODE 8
VDU 24 , 100 ; 100 ; 500 ; 500 ; : REM - restreint la surface graphique
GCOL 12
GCOL 143
CLG : REM - remplie la surface graphique de la couleur d'arrière-plan
CIRCLE FILL 250 , 250 , 75
LINE 100 , 300 , 500 , 300
LINE 300 , 100 , 300 , 500
RECTANGLE 150 , 150 , 200 , 200 TO 600 , 600 : REM - copie hors de la surface graphique
RECTANGLE 600 , 600 , 200 , 200 TO 200 , 700 : REM - copie exterieur à la surface graphique
LINE 0 , 0 , 1279 , 1023 : REM - trace temoin
END
Le tracé témoin LINE 0 , 0 , 1279 , 1023, programmé pour aller du coin inférieur-gauche au coin supérieur-droit, et qui n'est affiché que dans la surface graphique, démontre bien qu'il n'est pas possible de dessiner en dehors de la surface graphique, mais que les copies peuvent être fait vers et/ou depuis toute la fenêtre de sortie.
L'instruction RECTANGLE ... TO ... correspond à PLOT 187.
PERMUTER DEUX ZONES RECTANGULAIRES.
La forme de l'instruction RECTANGLE SWAP abscisse , ordonnee , largeur , hauteur TO versx , versy permutera le contenue de deux zones rectangulaires de la fenêtre de sortie.
abscisse, ordonnee, largeur, hauteur, versx et versy doivent être des nombres entiers compris entre −32768 et +32767. Après le tracé du segment de ligne, abscisse et ordonnee deviennent les nouvelles coordonnées du curseur graphique.
- abscisse est l'abscisse du coin inférieur bas de la première zone (primaire) ;
- ordonnee est l'ordonnée du coin inférieur bas de la première zone (primaire) ;
- largeur largeur de la zone à déplacer ;
- hauteur hauteur de la zone à déplacer ;
- versx est l'abscisse du coin inférieur bas de la deuxième zone (secondaire) ;
- versy est l'ordonnée du coin inférieur bas de la deuxième zone (secondaire).
primaire recevra le contenu de secondaire et secondaire recevra le contenu de primaire. Si primaire et secondaire se chevauchent, la partie de la zone de destination ne sera effacée après le transfère des graphismes.
MODE 8
LINE 0 , 0 , 1279 , 1023
LINE 1279 , 1023 , 0 , 0
GCOL 9 : CIRCLE FILL 250 , 250 , 75
GCOL 12 : CIRCLE FILL 250 , 775 , 75
PRINT "Appuyez sur une touche pour déplacer le disque ..."
kpause = GET
RECTANGLE SWAP 150 , 150 , 300 , 300 TO 150 , 675
END
Si les caractéristiques de la surface graphique ont été modifiées avec une commande VDU 24, les zones d'origine et de destination peuvent tout de même se trouver hors de la surface graphique.
MODE 8
GCOL 9 : CIRCLE FILL 250 , 775 , 50
VDU 24 , 100 ; 100 ; 500 ; 500 ; : REM - restreint la surface graphique
GCOL 12
GCOL 143
CLG : REM - remplie la surface graphique de la couleur d'arrière-plan
CIRCLE FILL 250 , 250 , 75
LINE 100 , 300 , 500 , 300
LINE 300 , 100 , 300 , 500
RECTANGLE SWAP 150 , 150 , 200 , 200 TO 800 , 600 : REM - echange hors de la surface graphique
RECTANGLE SWAP 800 , 600 , 200 , 200 TO 200 , 700 : REM - echange exterieur à la surface graphique
LINE 0 , 0 , 1279 , 1023 : REM - trace temoin
END
Le tracé témoin LINE 0 , 0 , 1279 , 1023, programmé pour aller du coin inférieur-gauche au coin supérieur-droit, et qui n'est affiché que dans la surface graphique, démontre bien qu'il n'est pas possible de dessiner en dehors de la surface graphique, mais que les échanges peuvent être fait vers et/ou depuis toute la fenêtre de sortie.
L'instruction RECTANGLE SWAP ... TO ... correspond à PLOT 253.
TRACES POLYVALENTS.
L'instruction PLOT permet de créer de tracés et de figures avec des spécifications plus précises. L'appel peut avoir la forme :
- PLOT mode , abscisse , ordonnee, avec des coordonnées absolues où :
- mode, définie le type de tracé à dessiner ;
- abscisse, précise l'abscisse du point de référence du tracé ;
- ordonnee, précise l'ordonnée du point de référence du tracé.
- PLOT mode , horizontal , vertical, avec des coordonnées relatives à la position actuelle du curseur graphique où :
- mode, définie le type de tracé à dessiner ;
- abscisse, précise l'abscisse du point de référence du tracé ;
- ordonnee, précise l'ordonnée du point de référence du tracé.
mode, définie le type de tracé à dessiner. mode est un nombre entier compris entre 0 et 253.
Les coordonnées du point de référence doivent être comprise entre −32768 et +32767. Après que le tracé soit effectué, les coordonnées du point de référence deviennent les coordonnées du curseur graphique.
Les modes disponibles pour l'instruction PLOT sont résumés ci-dessous. Voir l'instruction PLOT pour une description plus détaillée de chacun d'eux.
Donnez à mode une valeur :
- de 0 à 7 pour dessiner des lignes standards.
Trace des lignes continue de la position actuelle du curseur graphique aux coordonnées spécifiées.
- de 8 à 63 pour dessiner des lignes améliorées.
Trace des lignes dans l'un des 4 types de pointillées de la position actuelle du curseur graphique aux coordonnées spécifiées.
- de 64 à 71 pour dessiner un unique point.
Trace un point unique aux coordonnées spécifiées.
- de 72 à 79 pour dessiner une ligne horizontale entre 2 points sans arrière-plan.
Place le curseur graphique aux coordonnées spécifiées puis recherche, vers la gauche et vers la droite, les premiers points ayant une couleur hors arrière-plan, et trace une ligne horizontale entre ces 2 points.
- de 80 à 87 pour dessiner des triangles.
Trace un triangle formé à partir des coordonnées spécifiées et des 2 dernières positions du curseur graphique. Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les 2 autres sommets du triangle. Le triangle pourra être vide ou plein selon la valeur de mode.
- de 88 à 95 pour dessiner une ligne horizontale jusqu'au premier point d'arrière-plan à droite.
Place le curseur graphique aux coordonnées spécifiées puis recherche, vers la droite, le premier point ayant une couleur d'avant-plan. et trace une ligne horizontale entre ces 2 points.
- de 96 à 103 pour dessiner des rectangles ;
Trace un rectangle qui a pour diagonale, le segment de droite allant des coordonnées spécifiées à la position du curseur graphique. Il faudra donc, le plus souvent, utiliser une instruction MOVE pour définir l'autre sommet de la diagonale. Le rectangle pourra être vide ou plein selon la valeur de mode. Il est aussi possible de dessiner des rectangles avec l'instruction RECTANGLE ou RECTANGLE FILL.
- de 104 à 111 pour dessiner une ligne horizontale entre 2 points d'avant-plan.
Place le curseur graphique aux coordonnées spécifiées puis recherche, vers la gauche et vers la droite, les premiers points ayant une couleur d'avant-plan, et trace une ligne horizontale entre ces 2 points.
- de 112 à 119 pour dessiner des parallélogrammes.
Trace un parallélogramme donc les sommets sont, dans l'ordre, les coordonnées de l'avant-dernière position du curseur graphique (sommet A), les coordonnées actuelles du curseur graphique (sommet B), des coordonnées spécifiées (sommet C). Les coordonnées du quatrième sommet sont obtenues avec la formule : C - ( B + A ). Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les 2 premiers sommets. L'ordre dans lequel les points sont visités est important. Le parallélogramme pourra être vide ou plein selon la valeur de mode.
- de 120 à 127 pour dessiner une ligne horizontale jusqu'au premier point d'avant-plan à droite.
Place le curseur graphique aux coordonnées spécifiées puis recherche, vers la droite, le premier point ayant une couleur d'avant-plan, et trace une ligne horizontale entre ces 2 points.
- de 128 à 135 pour colorier une zone par remplissage jusqu'aux pixels de hors arrière-plan.
Place le curseur graphique aux coordonnées spécifiées puis colorie avec la couleur d'avant-plan tous les pixels, jusqu'à ce qu'un pixel hors arrière-plan soit rencontré, et cela, dans toutes les directions. Il est aussi possible de colorier des zones avec l'utilisation du mot clé FILL associé à certaines instruction de dessins.
- de 136 à 143 pour colorier une zone par remplissage jusqu'au pixels de premier plan.
Place le curseur graphique aux coordonnées spécifiées puis colorie avec la couleur d'avant plan tous les pixels, jusqu'à ce qu'un pixel de la couleur de premier plan soit rencontré, et cela dans toutes les directions. Il est aussi possible de colorier des zones avec l'utilisation du mot clé FILL associé à certaines instruction de dessin.
- de 144 à 147 pour dessiner des cercles en précisant son rayon.
Trace un cercle dont le centre correspond à la position du curseur graphique. abscisse ou ordonnee doit valoir 0, la valeur de l'autre coordonnée désigne alors le rayon du cercle. Il sera parfois utile d'utiliser une instruction MOVE pour définir le centre du cercle. Il est aussi possible de dessiner des cercles avec l'instruction CIRCLE.
- de 148 à 151 pour dessiner des cercles en donnant un point sur sa circonférence.
Trace un cercle dont le centre correspond à la position du curseur graphique. abscisse et ordonnee indiquent les coordonnées d'un point sur la circonférence du cercle. Il sera parfois utile d'utiliser une instruction MOVE pour définir le centre du cercle. Il est aussi possible de dessiner des cercles avec l'instruction CIRCLE.
- de 152 à 155 pour dessiner des disques en précisant son rayon.
Trace un disque dont le centre correspond à la position du curseur graphique. abscisse ou ordonnee doit valoir 0, la valeur de l'autre coordonnée désigne alors le rayon du cercle. Il sera parfois utile d'utiliser une instruction MOVE pour définir le centre du cercle. Il est aussi possible de dessiner des disques avec l'instruction CIRCLE FILL.
- de 160 à 167 pour dessiner des arcs de cercle.
Trace un arc de cercle dont le centre a les coordonnées de l'avant-dernière position du curseur graphique (point A). L'arc de cercle débute aux coordonnées actuelles du curseur graphique (point B). Le segment [AB] correspond donc à un des rayons du cercle. Les coordonnées spécifiées (point C) se trouvent sur un autre rayon du cercle qui coupe sa circonférence (point D). L'arc de cercle dessiné va du B à D sur la circonférence du cercle de rayon [AB] et de centre A. Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les 2 points A et B. L'ordre dans lequel les points sont visités est important. L'arc est toujours tracé dans le sens antihoraire.
- de 168 à 175 pour dessiner des segments de cercle plein.
Trace un arc de cercle dont le centre a les coordonnées de l'avant-dernière position du curseur graphique (point A). L'arc de cercle débute aux coordonnées actuelles du curseur graphique (point B). Le segment [AB] correspond donc à un des rayons du cercle. Les coordonnées spécifiées (point C) se trouvent sur un autre rayon du cercle qui coupe sa circonférence (point D). La surface comprise en l'arc de cercle de B à D et le segment de droite [BD] est ensuite coloriée avec la couleur d'avant-plan. Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les 2 points A et B. L'ordre dans lequel les points sont visités est important. L'arc est toujours tracé dans le sens antihoraire.
- de 176 à 183 pour dessiner des arcs de cercle plein.
Trace un arc de cercle dont le centre a les coordonnées de l'avant-dernière position du curseur graphique (point A). L'arc de cercle débute aux coordonnées actuelles du curseur graphique (point B). Le segment [AB] correspond donc à un des rayons du cercle. Les coordonnées spécifiées (point C) se trouvent sur un autre rayon du cercle qui coupe sa circonférence (point D). L'arc de cercle dessiné va du B à D sur la circonférence du cercle de rayon [AB] et de centre A. La surface ABD est ensuite coloriée avec la couleur d'avant-plan. Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les 2 points A et B. L'ordre dans lequel les points sont visités est important. L'arc est toujours tracé dans le sens antihoraire.
- 185 et 189 pour déplacer une zone rectangulaire.
D'abord, mémorise la zone rectangulaire (source) ayant pour diagonale le segment formé par les deux dernières positions du curseur graphique. Ensuite, recopie cette surface (source) en prenant les coordonnées spécifiées comme point inférieur gauche de la surface à dessiner (destination). Enfin, remplie de la couleur d'arrière-plan la surface mémorisée (source). Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les sommets de la diagonale de source. L'ordre dans lequel les points sont visités est important. Ces modes correspondent à l'instruction RECTANGLE FILL ... TO ....
- 187 et 191 pour copier une zone rectangulaire.
D'abord, mémorise la zone rectangulaire (source) ayant pour diagonale le segment formé par les deux dernières positions du curseur graphique. Puis, recopie cette surface (source) en prenant les coordonnées spécifiées comme point inférieur gauche de la surface à dessiner (destination). La surface mémorisée (source) n'est pas modifiée, sauf si elle est chevauchée par la zone redessinée. Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les sommets de la diagonale de source. L'ordre dans lequel les points sont visités est important. Ces modes correspondent à l'instruction RECTANGLE ... TO ....
- de 192 à 199 pour dessiner des ellipses.
Trace une ellipse dont le centre a les coordonnées de l'avant-dernière position du curseur graphique (point A). L'abscisse de la dernière position du curseur graphique correspond à la tangente verticale du rayon horizontal de l'ellipse (point B). Le troisième paramètre de l'instruction PLOT correspond à la tangente horizontale du rayon vertical de l'ellipse (point C). Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les 2 points A et B. L'ordre dans lequel les points sont visités est important. Il est aussi possible de dessiner des ellipses avec l'instruction ELISPSE.
- de 200 à 207 pour dessiner des ellipses pleines.
Trace une ellipse dont le centre a les coordonnées de l'avant-dernière position du curseur graphique (point A). L'abscisse de la dernière position du curseur graphique correspond à la tangente verticale du rayon horizontal de l'ellipse (point B). Le troisième paramètre de l'instruction PLOT correspond à la tangente horizontale du rayon vertical de l'ellipse (point C). L'intérieur de l'ellipse sera remplie de la couleur d'avant-plan.Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les 2 points A et B. L'ordre dans lequel les points sont visités est important. Il est aussi possible de dessiner des ellipses avec l'instruction ELISPSE FILL.
- 249 et 253 pour échanger une zone rectangulaire.
D'abord, mémorise la zone rectangulaire (primaire) ayant pour diagonale le segment formé par les deux dernières positions du curseur graphique. Ensuite, mémorise la zone rectangulaire (secondaire) ayant point inférieur gauche les coordonnées spécifiées et ayant les mêmes dimensions que primaire. Enfin, échange les contenus de primaire et de secondaire, c'est-à-dire que le contenu primaire est transféré dans secondaire et que le contenu de secondaire et transféré dans primaire. Si les deux zones se chevauchent, c'est le contenu de primaire qui sera conservé dans la partie commune aux deux zones. Il faudra donc, le plus souvent, utiliser 2 instructions MOVE pour définir les sommets de la diagonale de primaire. L'ordre dans lequel les points sont visités est important. Ces modes correspondent à l'instruction RECTANGLE SWAP ... TO ....
RUBRIQUES.
L'affichage des textes pour plus de détails sur les fonctions d'affichage de texte.
Les caractères personnalisés pour pour plus de détails sur la création de caractères personnalisés.
La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.