Outils pour utilisateurs

Outils du site


itc:tps:tp4:exercice1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
itc:tps:tp4:exercice1 [2021/12/03 15:21] goupillwikiitc:tps:tp4:exercice1 [2021/12/13 13:36] (Version actuelle) goupillwiki
Ligne 73: Ligne 73:
   * $C$ est tel que $\overrightarrow{AC} = \frac{1}{3} \overrightarrow{AB}$   * $C$ est tel que $\overrightarrow{AC} = \frac{1}{3} \overrightarrow{AB}$
   * $D$ est tel que $\overrightarrow{AD} = \frac{2}{3} \overrightarrow{AB}$   * $D$ est tel que $\overrightarrow{AD} = \frac{2}{3} \overrightarrow{AB}$
-  * $C$ est l'image de $D$ par la rotation de centre $C$ et d'angle $\frac{pi}{3}$.+  * $E$ est l'image de $D$ par la rotation de centre $C$ et d'angle $\frac{pi}{3}$.
  
-<WRAP box>**À faire :** écrire une fonction ''decoupe(a, b)'' qui reçoit les affixes de $A$ et $B$ et qui renvoie les affixes $C$, $E$, $D$ dans cet ordre, dans un tableau.+<WRAP box>**À faire :** écrire une fonction ''decoupe(a, b)'' qui reçoit les affixes de $A$ et $B$ et qui renvoie les affixes $A$, $C$, $E$, $D$, $B$ dans cet ordre, dans un tableau.
 </WRAP> </WRAP>
  
Ligne 86: Ligne 86:
 Et ainsi de suite jusqu'à une certaine limite -- mathématiquement on peut imaginer faire cela à l'infini, mais en informatique l'infini est hors de portée. Et ainsi de suite jusqu'à une certaine limite -- mathématiquement on peut imaginer faire cela à l'infini, mais en informatique l'infini est hors de portée.
  
-On a une fonction récursive. Nous allons écrire une fonction ''decoupe_rec(a,b,n)'' qui reçoit les affixes de $A$ et $B$ ainsi qu'un entier ''n'' indiquant la profondeur à atteindre dans la récursion. +On a une fonction récursive. Nous allons écrire une fonction ''decoupe_rec(affixes_in, n, extr)'' qui reçoit ''affixes_in'', un tableau d'affixes ; ''n'' indiquant la profondeur à atteindre dans la récursion. La fonction renvoie le tableau des affixes obtenues après découpage.
- +
-  * ''n = 0'' signifie qu'on ne découpe rien, on renvoie ''[]'', tableau vide. +
-  * ''n = 1'' signifie qu'on fait une étape de découpe, on renvoie alors ''[c, e, d]'' comme dans ''decoupe(a,b)'' +
-  * ''n = 2'' signifie que l'on calcule récursivement les points du découpage sur ''(a,c)'', ''(c,e)'', ''(e,d)'', ''(d,b)'' +
-  * etc.+
  
 <code lang-none linenums:1> <code lang-none linenums:1>
-FONCTION decoupe_rec(a, b, n)+FONCTION decoupe_rec(affixes_in, n)
 ENTRÉES: ENTRÉES:
-  a, baffixe des points A, B+  affixes_intableau d'affixes de la ligne à découper
   n: profondeur de la récursion   n: profondeur de la récursion
 +SORTIE: affixe_out, tableau des affixes résultant du découpage de affixe_in
 DÉBUT DÉBUT
   SI n = 0 ALORS   SI n = 0 ALORS
-    RENVOYER tableau vide +    RENVOYER affixes_in 
-  FIN SI +  FIN 
-  calculer c, e, avec decoupe +  N = nombre d'items dans affixe_in 
-  SI n = 1 +  affixes_out est tableau vide 
-    RENVOYER [c, e, d+  POUR i ALLANT DE 0 À N-2 FAIRE 
-  FIN SI +    A est affixes_in[i
-  calculer ac = decoupe_rec(ac+    B est affixes_in[i+1] 
-  calculer ce = decoupe_rec(ce+    ACEDB est le résultat de decoupe(AB
-  calculer ed = decoupe_rec(e, d) +    # on poursuit le découpage récursivement 
-  calculer db = decoupe_rec(d, b) +    rec_AB est le résultat de decoupe_rec(ACEDBn-1) 
-  RENVOYER ac + [c] + ce + [e] + ed + [d] + db+    ajouter les affixes de rec_AB au bout de affixes_out 
 +      sauf le dernier 
 +  FIN 
 +  ajouter l'affixe du dernier points au bout de affixes_out 
 +  RENVOYER affixes_out
 FIN FIN
 </code> </code>
Ligne 118: Ligne 118:
 ===== Dessiner le flocon ===== ===== Dessiner le flocon =====
  
-La fonction ''decoupe_rec'' prend $A$ et $B$ et renvoie les points intérieurs au découpage. Si on veut la ligne complète, incluant les extrémités $A$ et $B$, il faudra écrire : +<WRAP box>**À faire :** exécutez
 <code python> <code python>
-[a] + decoupe_rec(abn+ [b]+affixes = [0+0j, 3+0j, 6-j] 
 +flocon = decoupe_rec(affixes2) 
 +plot_complex(flocon'r')
 </code> </code>
  
-De la même façon, si on part d'une ligne brisée ABCDEF..., on pourra faire +Modifiez les affixes pour obtenir un flocon hexagonal.
-<code python> +
-[a] + decoupe_rec(a, b, n) + [b] + decoupe_rec(b, c, n) + [c] + ... +
-</code> +
- +
-<WRAP box>**À faire :** écrire une fonction ''line_to_koch(affixes, n)'' qui reçoit le tableau ''affixes'' contenant les affixes des points de la ligne et ''n'', la profondeur du découpage. Cette fonction renvoie le résultat du découpage de chaque segment de la ligne. +
- +
-Utilisez cette fonction pour calculer les positions d'un flocon de Koch et dessinez ce flocon.+
 </WRAP> </WRAP>
- 
itc/tps/tp4/exercice1.1638541297.txt.gz · Dernière modification : de goupillwiki