PHP et GD ==> Camembert !
Fermé
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
-
20 avril 2009 à 05:22
le père - 20 avril 2009 à 09:41
le père - 20 avril 2009 à 09:41
A voir également:
- PHP et GD ==> Camembert !
- Camembert excel - Guide
- Easy php - Télécharger - Divers Web & Internet
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Php natif - Forum PHP
- Php?id=1 - Forum PHP
2 réponses
Re-
Je n'avais pas bien regardé l'algorithme du lien que tu as donné, en fait il marche à tous les coups et il est très simple.
Il consiste à dessiner tout le camembert en couleurs sombres, de bas en haut.
Puis on redessine le dessus en couleurs claires
Or toi tu dessines part par part. Et de plus, dans le dessin de chaque couche, tu alternes couleur sombre/couleur claire.
Donc tu ne respectes pas du tout l'aglorithme de l'exemple.
Ça devrait donner quelque chose du genre :
Je n'avais pas bien regardé l'algorithme du lien que tu as donné, en fait il marche à tous les coups et il est très simple.
Il consiste à dessiner tout le camembert en couleurs sombres, de bas en haut.
Puis on redessine le dessus en couleurs claires
Or toi tu dessines part par part. Et de plus, dans le dessin de chaque couche, tu alternes couleur sombre/couleur claire.
Donc tu ne respectes pas du tout l'aglorithme de l'exemple.
Ça devrait donner quelque chose du genre :
function unecouche ($image,$posy,$couleur,$arrliste,$somme) { $last_angle=0; foreach($arrListe as $value){ // On lit les valeurs une par une $moyenne_valeur = ($value * 100)/$somme; // Moyenne de chaque valeurs par rapport au total des valeurs $arclen = (360 * $moyenne_valeur) / 100; // Grandeurs de la portion correspondant à la valeur courante imagefilledarc($image, 400, $posy, 425, 225, $last_angle, ($last_angle + $arclen) , $couleur, IMG_ARC_PIE); $last_angle+=$arclen; } // function unecouche ($couleur,$arrliste) { // traçage de l'épaisseur for ($i = 260; $i > 230; $i--) unecouche( $image,$i,$sombre,$arrliste,$somme); // traçage de la surface unecouche( $image,230,$clair,$arrliste,$somme);
Bonjour
Pas très évident. Il faudrait commencer par dessiner les parts de camembert qui sont dans le fond, et terminer par celle qui est face à l'observateur. Comme je ne suis pas sûr d'imaginer tous les cas de figure, je ne suis même pas tout à fait sûr du résultat.
Si j'avais à le faire, je tenterais une approche 2D sur une ellipse, beaucoup plus simple, puis je tracerais des segments qui "descendent" du bord de l'ellipse pour faire l'épaisseur du camembert, sur la plage d'angles située face à l'observateur (de 180 à 360 degrés ? ça dépend de ton repère). Ça ne doit pas être très simple non plus, mais on est sûr du résultat comme ça.
Pas très évident. Il faudrait commencer par dessiner les parts de camembert qui sont dans le fond, et terminer par celle qui est face à l'observateur. Comme je ne suis pas sûr d'imaginer tous les cas de figure, je ne suis même pas tout à fait sûr du résultat.
Si j'avais à le faire, je tenterais une approche 2D sur une ellipse, beaucoup plus simple, puis je tracerais des segments qui "descendent" du bord de l'ellipse pour faire l'épaisseur du camembert, sur la plage d'angles située face à l'observateur (de 180 à 360 degrés ? ça dépend de ton repère). Ça ne doit pas être très simple non plus, mais on est sûr du résultat comme ça.