2013-09-03 3 views
3

Je travaille dans un petit système SVG pour tracer des graphiques (ligne, barre et tarte) et j'ai quelques problèmes étranges avec le camembert ... Lorsque les sections dans le tableau sont plus petits que la moitié du cercle, la fonction fonctionne parfaitement et tout est dessiné correctement (voir l'image ci-dessous):Difficulté à tracer un graphique à secteurs avec SVG

enter image description here

Cependant, lorsqu'une partie de la tarte est plus grande que la moitié du cercle , la partie est tracée mal, comme si le centre de l'arc était déplacé (voir l'image ci-dessous et notez que la partie rouge est le cercle "vide" où les parties doivent être dessinées: je le remplis de couleur rouge pour vérifier si les portions sont correcly ou non):

enter image description here

J'utilise la fonction "path" de SVG avec des paramètres absolus pour dessiner chaque portion de tarte. Je passe certains paramètres à la fonction:

$ circleCenter_ correspond à la position X et Y du centre du cercle. $ valPos [i] [0-1] contient la position X et Y de chaque point du triangle formé par le centre et les deux points du cercle (où la partie devrait se terminer).

Voici le « chemin » J'utilise:

<path d="M<?php echo $circleCenterX." ".$circleCenterY; ?> 
L<?php echo $valPos[$i][0][0].",".$valPos[$i][0][1] ?> 
A<?php echo $circleRadius.",".$circleRadius; ?> 0 0,1 <?php echo $valPos[$i][1][0].",".$valPos[$i][1][1]; ?> Z" 
(...) /> 

Je ne comprends pas pourquoi cela fonctionne très bien lorsque la partie est inférieure à la moitié du cercle, et pourquoi il semble que le centre est " déplacé "lorsque la partie est plus grande que la moitié du cercle. Bien sûr, les variables $ circleCenter ne sont jamais modifiées à l'intérieur de la fonction de dessin de tarte ...

Une question à ce sujet?

Merci d'avance pour votre temps et vos efforts! :)

Répondre

0

Vous devez définir le drapeau grand-arc sur 1 si le pourcentage de la partie est> 50%.

Questions connexes