Cours 4D tracer un graphe de Kiviat

Cours 4D tracer un graphe de Kiviat, tutoriel & guide de travaux pratiques en pdf.

Tracer un graphe de Kiviat

Comment dessiner de tel graphe dans une zone 4D Chart ?
La lecture de la documentation nous confirme que ces graphes n’existent pas en standard, et de plus il n’est pas possible de dessiner deux graphes dans une même zone sans passer par la programmation.
Par contre nous avons remarquer que 4DChart propose des outils permettant de dessiner par programmation des lignes, des cercles, des rectangles, des polygones … Nous sentons donc que nous pourrons nous en sortir en utilisant en outre quelques fonctions mathématiques proposées par le langage de 4D.
Afin de dessiner le graphe nous supposons que nous avons un formulaire avec une zone 4D Chart d’une taille de 600 x600 pixels et nommée « zChart ». Un bouton ayant le label « Dessin » permet de déclencher le code que nous allons expliquer ci-dessous.
Pour commencer notre graphe nous allons initialiser la zone 4D Chart.
ch_EXECUTER MENU (zChart;1001)
Le code 1001 correspond à l’item de menu nouveau du menu fichier. Nous commençons donc par rendre vierge la zone de travail.
Nous allons définir à 200 pixels des bords de la zone 4D Chart le centre du graphe grâce à deux variables :
zCentre_x:=300
zCentre_y:=300
De même nous définisons le rayon du graphe à 150 pixels :
zRayon:=150
Pour dessiner un graphe, il faut avoir des valeurs ! Nous avons donc un tableau de réel contenant les différentes valeurs du graphe :
TABLEAU REEL(_valeurs;6) _valeurs{1}:=3 _valeurs{2}:=2,5 _valeurs{3}:=4 _valeurs{4}:=1 _valeurs{5}:=4
_valeurs{6}:=3,5
Nous définissons de même pour définir les légendes des séries :
TABLEAU ALPHA(20;_legende_serie;6) _legende_serie{1}:= »Résolution » _legende_serie{2}:= »Rendu couleur » _legende_serie{3}:= »Sensibilité » _legende_serie{4}:= »Flash » _legende_serie{5}:= »Autofocus » _legende_serie{6}:= »Sensibilité »
Nous pouvons en déduire le nombre d’axes du graphe de Kiviat , et la valeur maximum a afficher :
zNbValeurs:=Taille tableau(_valeurs) $Max:=0 Boucle ($i;1;zNbValeurs;1) Si ($Max<_valeurs{$i}) $Max:=_valeurs{$i} Fin de si Fin de boucle $Max:=Ent($Max)+1
Nous pouvons à présent commencer le dessin proprement dit. Nous dessinerons dans l’ordre afin de respecter les effets de superposition : – Les lignes de niveau du fond (formant une sorte de toile d’araignée) – Le polygone des valeurs – Les axes – L’échelle – Les noms des axes
Le dessin des lignes de niveau utilise la fonction ch_Tableau vers polygone de 4D Chart permettant de dessiner un polygone défini par ses sommets.
Chaque valeur sera affichée sur un axe incliné d’un certain angle par rapport à l’horizontale. Cet angle dépend du nombre d’axes à dessiner. Cette série d’angles va servir un certain nombre de fois dans les calculs, il nous semble donc judicieux de les stocker temporairement dans un tableau dédié. Ceci présente l’avantage de réduire le code et de simplifier la maintenance si nous désirons faire évoluer le calcul des angles. Ici se pose le problème du sens horaire et du sens trigonométrique pour le calcul des angles. Dans 4D, les fonctions trigonométriques utilisent des angles définis en radians ; elles sont basées sur le cercle trigonométrique qui « tourne » dans le sens anti-horaire. Par contre les habitudes pour le dessin des graphes de Kiviat (comme pour les diagrammes en secteurs) veulent que l’on respecte le sens de lecture usuel c’est-à-dire en tournant dans le sens horaire. Nous devons donc en tenir compte pour calculer notre série d’angles ordonnée. De plus la lecture commence en haut du cercle (à 12 heures) alors que le cercle trigonométrique commence à droite (à 3 heures). Nous devons donc décaler d’autant nos angles. Dans le code, nous utilisons la constante Degré qui permet de convertir facilement une valeur en degré vers une valeur en radians.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *