Arbres avec des libellés de sommets écrits horizontalement, sans texte vertical
Fonctions disponibles et description
- retourchariot();
- Insère un retour de chariot '<br>' dans la page HTML d'output.
- retourchariot(2);
- Insère 2 retours de chariot '<br><br>' dans la page HTML d'output.
- initsommet()
- effectue l'initialisation des sommets du graphe de la manière indiquée par les exemples ci-dessous.
- initsommet(array(1, 2, 4));
- Exemple d'un graphe de deux niveaux comportant 7 sommets: 1 sommet au niveau 0, 2 sommets au niveau 1, 4 sommets au niveau 2;
- initsommet(array(1, 2, 4, 8));
- Exemple d'un graphe de trois niveaux comportant 15 sommets: 1 sommet au niveau 0, 2 sommets au niveau 1, 4 sommets au niveau 2, 8 sommets de niveau 3;
- initsommet(array(1, 2, 4, 8, 16));
- Exemple d'un graphe de quatre niveaux comportant 31 sommets: 1 sommet au niveau 0, 2 sommets au niveau 1, 4 sommets au niveau 2, 8 sommets de niveau 3, 16 sommets de niveau 4;
etc.
- //numérotation des sommets initialisés par initsommet()
- initsommet() numérote automatiquement les sommets à partir de 0, de gauche à droite sur le niveau 0; de gauche à droite sur le niveau 1; ... ; de gauche à droite sur le niveau maximal.
- Dans l'exemple initsommet(array(1, 2, 4));, les 7 sommets sont numérotés comme suit: 0, 1, 2, 3, 4, 5, 6:
- 0 est le numéro du sommet racine;
- 1, 2 sont les numéros des sommets de niveau 1;
- 3, 4, 5, 6 sont les numéros des sommets de niveau 2.
- // $niveaumax
- initsommet() initialise automatiquement la variable globale $niveaumax = nombre maximal de niveaux. Dans l'exemple initsommet(array(1, 2, 4)), on a $niveaumax = 2.
- $margeHaut = 30;
$margeBas = 40;
$hauteurImage = $margeHaut+$margeBas + 160*$niveaumax;
- Rappelons que l'output est une image PNG insérée dans une page HTML.
- $margeHaut = nombre de pixels entre le sommet racine et le bord supérieur de l'image;
- $margeBas = nombre de pixels entre les sommets de niveau maximal et le bord inférieur de l'image;
- $hauteurImage = hauteur de l'image PNG en output.
- $libelle = array( '', 'B', 'N', 'BB', 'BN', 'NB', 'NN' );
$libelle = array( '', 'B', '~B', 'BB', 'B~B', '~BB', '~B~B' );
- Libellés à écrire pour chaque sommet.
- Le nombre de libellés doit être égal au nombre total de sommets déclarés dans initsommet(), ici pour 7 sommets.
- Ces libellés sont des textes écrits horizontalement.
- L'ordre des libellés est: de gauche à droite sur le niveau 0; de gauche à droite sur le niveau 1; ... ; de gauche à droite sur le niveau maximal.
- Le symbole '' (deux apostrophes consécutifs) représente une chaîne vide (ici, rien n'est écrit à la racine de l'arbre).
- Le symbole ~ précédant un caractère signifie que le caractère qui suit doit être surligné;
- ~B se lit «non B».
- initarc(array(
array(0, 1), array(0, 2),
array(1, 3), array(1, 4), array(2, 5), array(2, 6), ));
- initarc() déclare les arcs à dessiner. Un arc est une paire de sommets:
- array(0, 1) représente l'arc joignant le sommet numéro 0 au sommet numéro 1.
- Ici, 6 arcs dont déclarés.
- $poids = array( '2/5', '3/5', '1/4', '3/4', '2/4', '2/4' );
- Les poids sont des textes à écrire sur les arcs.
- Le nombre de poids est égal au nombre d'arcs: ici 6 poids sont déclarés.
- Leur ordre doit être le même que celui dans lequel les arcs ont été déclarés.
- Pour ne rien écrire, utiliser la chaîne vide '' (deux apostrophes consécutifs).
- dessinegraphe($sommet, $libelle, $arc, $poids);
- Création du dessin PNG avec les données préalablement données.
Compléments pour écrire des libellés de sommets avec textes verticaux
éventuellement superposés à des textes horizontaux
Fonctions disponibles et description
- $margeHaut = 30;
$margeBas = 90;
$hauteurImage = $margeHaut+$margeBas + 160*$niveaumax;
- Les textes verticaux sont écrits vers le bas, raison pour laquelle la marge du bas doit être augmentée à raison de 10 pixels par caractère.
- $libelleVert = array( '', '', '', '', '', ', 'AAB', 'AAC', 'ABA', 'ABB', 'ABC', 'ACA', 'ACB', 'ACC' );
- Dans le cas où les sommets terminaux sont nombreux, s'il n'est pas possible de les écrire tous horizontalement, on peut les écrire verticalement.
- $libelleVert se superpose à $libelle, mais les chaînes de caractères sont écrites verticalement. Après une rotation d'un quart de tour dans le sens direct, les chaînes de caractères sont écrites de manière à déborder vers le bas de l'image.
- Le nombre de $libelleVert doit être égal au nombre total de sommets déclarés dans initsommet(). L'ordre des $libelleVert est le même que pour $libelle: de gauche à droite sur le niveau 0; de gauche à droite sur le niveau 1; ... ; de gauche à droite sur le niveau maximal.
- Si $libelle et $libelleVert doivent tous deux être écrits en un même sommet, il faut terminer la chaîne $libelleVert par un espace pour éviter le chevauchement des deux textes.
- dessinegraphe($sommet, $libelle, $arc, $poids, $libelleVert);
- $libelleVert doit être passécomme dernier argument de dessinegraphe().
|