Tétraèdre

Extension PHP «graphe» pour générer des arbres de probabilités composées

au format PNG

Cette version est périmée et remplacée par un Constructeur d'arbre en ligne.

Fonctions disponibles et description

include "prob/graphe.php";
Contexte: Exercices de calcul des probabilités; dans le formulaire Exécuter en ligne un script PHP, on peut inclure l'extension «graphe»;
Voir les exemples: Utilisation de l'extension «graphe» pour dessiner des arbres de probabilités composées.

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().
Contact | Accueil   >   Scripts PHP   >   Script exécutable en ligne