Bonjour/bonsoir ,
pour mon cours de java, notre prof nous a demandé de créer une arbre récursif, selon lui c'est "très simple une fois qu'on l'a fait". C'est marrant car cela fait plusieurs heures que j'essaie et rien ne fonctionne.
Voici l’énoncé :
Bon déjà première chose, je me suis dit que l'histoire avec les 30°, je pouvais régler cette histoire par après (donc pour le moment je fais +/- 30°).Voilà mon code :
Je le mets car je n'ai pas envie que vous ayez l'impression que je viens juste pour avoir des réponses sans chercher par moi même, j'ai évidemment conscience que le résultat de ce code est loin du résultat escompté .J'ai beaucoup modifié ce code, et ce n'est peut être pas la version qui ressemble le plus au résultat de l’énoncer, mais de toute façon je pense que je cherche dans la mauvaise direction depuis le début...
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 public void drawTree(Graphics2D g, int n, int x, int y, int cpt,int t) { if (n == 0) { return; } if (cpt == 0) { double z; z = (y / 1.5); g.drawLine(x, y, x, (int) z); cpt++; t=(int)(Math.sqrt(Math.pow(z - y, 2) + Math.pow(x - x, 2))); drawTree(g, n - 1, x, (int) z, cpt,t*(2/3)); } else { double z; z = (y/3)*2; double x2, y2, x3, y3; x2 = x / (1.33333333); y2 = y / (1.33333); x3=x*1.3; y3 = y * 1.3; cpt++; //ici je fais un test pour savoir si la taille est >6 // j'ai oublié de le remettre. Random r = new Random(); int valeur = 1 + r.nextInt(100 - 1); if (valeur > 25) { g.drawLine(x, y, (int) x2, (int) y2); drawTree(g, n - 1, (int) x2, (int) y2, cpt,t); } r = new Random(); valeur = 1 + r.nextInt(100 - 1); if (Math.sqrt(Math.pow(z - y, 2) + Math.pow(x - x, 2)) > 6) { if (valeur > 25) { g.drawLine(x, y, x+t, y+t); drawTree(g, n - 1, (int) x, (int) z, cpt,t); } } r = new Random(); valeur = 1 + r.nextInt(100 - 1); if (valeur > 25) { if (Math.sqrt(Math.pow(y2 - y, 2) + Math.pow(x3 - x, 2)) > 6) { g.drawLine(x, y, (int) x3, (int) y2); drawTree(g, n - 1, (int) x3, (int) y2, cpt,t); } } } }
Au départ j'ai décidé de mettre le cpt à 0,afin d'initialiser le "tronc de base". ensuite j'ai décidé de multiplier (ou de diviser) par 1.3,afin de faire +/- les 30 degrés d'angles. Mes randoms me permettent de savoir si la branche va être dessinée ou pas (condition de l’énoncer) . En gros je post ce message pour avoir une piste, un "bon début", car honnêtement je vois pas dutout comment faire, j'ai pensé à utiliser des formules de trigo (car on a l'angle,la taille,....) mais le prof a dit que c'etait simple
Merci d'avance
Partager