arc

Définition Utilisation Exemple Côté technique
 

void arc(int x, int y, int rayon, byte debut_fin, word couleur);
void arc(int x, int y, int rayon, byte debut_fin);

Dessine un arc de cercle par pas de 45°
Paramètres passés:
x,y: coordonnés du centre
rayon: ben... rayon de courbure
debut_fin: octet définissant le début et la fin du tracé (voir plus bas)
couleur: couleur de l'arc, voir RGBcolor
Valeur retournée:
aucune

 

#define DEPART_NORD
#define DEPART_NORD_EST
#define DEPART_EST
#define DEPART_SUD_EST
#define DEPART_SUD
#define DEPART_SUD_OUEST
#define DEPART_OUEST
#define DEPART_NORD_OUEST

#define ARRIVEE_NORD
#define ARRIVEE_NORD_EST
#define ARRIVEE_EST
#define ARRIVEE_SUD_EST
#define ARRIVEE_SUD
#define ARRIVEE_SUD_OUEST
#define ARRIVEE_OUEST
#define ARRIVEE_NORD_OUEST

0x00
0x10
0x20
0x30
0x40
0x50
0x60
0x70

0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
Valeurs conseillées pour le paramètre debut_fin

 

En mode NORMAL, dessine l'arc avec la couleur spécifiée si présente, ou avec la dernière couleur utilisée par point(), rect(), circle(),... si le paramètre couleur n'est pas passé. La nouvelle couleur est mémorisée pour les prochains tracés graphiques. En mode INVERSE, cette fonction inverse la couleur sans tenir compte de la couleur éventuellement passée en paramètre; la nouvelle couleur du point n'est pas mémorisée.

Cette fonction n'est définie que parce qu'elle est utile pour dessiner les caractères. C'est pour cela que l'angle n'est pas en degré.

N'est dessiné que la partie qui tient dans l'écran et qui tient dans les limites données par la fonction setLimites()

 

Choix du début et de la fin du tracé, avec des noms :

Le paramètre debut_fin définit le début et la fin de l'arc. Le paramètre s'obtient en ajoutant deux constantes, une DEPART_????? et une ARRIVEE_????. Les ???? sont à remplacer par NORD, NORD_EST, EST, SUD_EST, SUD, SUD_OUEST, OUEST ou NORD_OUEST

Le tracé se fait à partir du point de départ jusqu'au point d'arrivé dans le sens horaire.

Pour tracer un cercle complet, il faut que les points de départs et d'arrivée soient les mêmes, par exemple DEPART_EST+ARRIVEE_EST... Mais cela a peu d'intérêt, on peut utiliser la fonction circle()! Le tracé de cercle utilise cette fonction: circle(x,y,rayon,couleur) fait appel à arc(x, y, rayon, DEPART_NORD+ARRIVEE_NORD, couleur).

 

Choix du début et de la fin du tracé, avec un mot binaire :

Le paramètre debut_fin définit le début et la fin de l'arc. Chacun de ces deux informations est codé sur 3 bits:

Le tracé se fait à partir du point de départ jusqu'au point d'arrivé dans le sens horaire. Il est bien pratique d'exprimer ce paramètre en hexadécimal (on met 0x devant les deux valeurs).

Pour tracer un cercle complet, il faut que les points de départs et d'arrivée soient les mêmes, par exemple 0x22, 0x66... Il est simple alors de donner 0x00 soit tout simplement 0! Le tracé de cercle utilise cette fonction: circle(x,y,rayon,couleur) fait appel à arc(x,y,rayon,0,couleur).
Les bits repérés X sont ignorés. arc=0x40 est identique à arc=0x48.

 

Voir aussi:
- circle(); Trace un cercle
- RGBcolor(); Transforme un triplet RGB en un code couleur
- MAX_X, MAX_Y...: Valeurs des coordonnés graphiques
- BLACK, WHITE, ...: Constantes couleurs
- setLimites(); Limite la zone de dessin
- setDrawInverse(); Choix du mode dessin ou inversion
- point(); Dessine un point
- line(); Trace une ligne
- rect(); Trace les bords d'un cadre
- fill(); Remplit avec la couleur demandée