Bonjour,
Je voudrais réaliser un camembert fait maison.
Pour cela, je dessine un cercle, puis une droite de départ pour dessiner mes parts à partir de là si il y en a au moins 2.
Le problème pour moi, c'est pour dessiner les autres droites. Je récupère mes valeurs dans un vecteur, et je calcule l'angle de chaque part pour dessiner la droite qui va la délimiter. Mon idée, c'est de toujours dessiner la part par rapport ma droite de départ, donc j'ai deux angles, l'angle total parcouru jusqu'ici, et l'angle à ajouter. L'angle à ajouter va me permettre de colorer ma part en dessinant un triangle de point centre de mon cercle et de droite derniere droite dessinée-avant derniere droite dessinée.
Je sais, c'est pas très facile à comprendre, mais je vois pas comment expliquer plus simplement.![]()
Donc, mon souci pour le moment, c'est à partir d'un point donné (le centre de mon cercle), de ma droite de départ, tracer ma droite grâce à l'angle calculé.
J'ai ca comme code pour le moment:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public void paint(Graphics g){ //le nombre de budgets dans notre vecteur int nbBudgets=budget.getListeCategorie().size(); // Le montant du bugdet i du vecteur double montantBudget=0; // L'intitule du budget i du vecteur String nomBudget = null; //La somme des budgets dans le vecteur double montantTotal = 0; // l'angle de la proportion du budget par rapport au budget total float angleBudget = 0; // L'angle parcouru depuis le départ du dessinage du camembert float angleTotal = 0; // J'ai mis 2 angles pour pouvoir garder en mémoire l'angle du triangle que l'on va dessiner ensuite pour colorer la portion // Initialisation du cercle g.drawOval(150, 50, 200,200); //le centre du cercle est en fait x+rayon et y+rayon car on dessine le cercle dans un carré que l'on place par rapport //au coin en haut à gauche. On trace cette droite si on a au moins deux budgets if (nbBudgets > 1) g.drawLine(250, 150, 350, 150); g.drawString("Camembert des budgets", 50, 50); //Montant total des budgets dans le vecteur for (int i=0;i< nbBudgets;i++){ montantTotal += budget.retourneCategorie(i).getMontant(); } // Calcul de la part de chaque budget par rapport au buget total for (int i=0;i< nbBudgets;i++){ nomBudget=budget.retourneCategorie(i).getNom(); montantBudget=budget.retourneCategorie(i).getMontant(); angleBudget = (float) (360 * montantBudget / montantTotal); angleTotal += angleBudget; } }
Donc j'ai bien l'angle de calculé, j'ai mon centre, ma droite de départ.... manque que :
=> Trouver le point sur le cercle avec surement des sinus et cosinus dont je n'ai plus le souvenir
=> Colorier ma portion
Et ca sera fonctionnel![]()
SI quelqu'un a une méthode plus simple, je suis preneur. PS: jfreechart je n'ai pas "le droit" de l'utiliser ^^ (dommage)
Merci à tous ceux qui ont eu le courage de lire mon post jusqu'au bout
Partager