Dessiner les courbes de Cesàro

Cet exercice ne comporte pas de tests : la simple observation de la figure dessinée vous permet d'évaluer votre travail. Le corrigé sera toutefois automatiquement affiché après \(10\) validations.

Rappels sur la 🐢

On rappelle ci-dessous les instructions utiles du module turtle.

Appel Rôle
hideturtle() Cache la tortue.
speed(n) Définit la vitesse de l'animation.
n est un entier entre 1 (lent) et 10 (rapide).
animation(s) Autorise ou non les animations.
s est soit 'on' (avec animations, valeur par défaut)
soit 'off' (sans animations).
penup() Lève le crayon : les déplacements de la tortue ne sont plus dessinés.
pendown() Baisse le crayon : les déplacements de la tortue sont dessinés.
heading() Renvoie la direction vers laquelle pointe la tortue sous la forme d'une mesure d'angle en degrés.
setheading(d) Définit la direction vers laquelle pointe la tortue.
d est une mesure d'angle en degrés.
position() Renvoie la position de la tortue sous la forme d'un couple de nombres (x, y).
goto(x, y) La tortue se déplace à la position (x, y).
x et y sont des nombres.
left(a) La tortue tourne sur elle-même vers la gauche de a degrés.
a est un nombre.
right(a) La tortue tourne sur elle-même vers la droite de a degrés.
a est un nombre.
forward(p) La tortue avance de p pixels.
p est un nombre.

🏎 Dans CodEx, il est possible d'augmenter la vitesse jusqu'à speed(100) ! 🏎

Suite du flocon de Koch

Cet exercice est un prolongement de celui sur le flocon de Koch.

Il est recommandé de le traiter avant d'aborder celui-ci.

Quel est le point commun entre ces différentes fractales ?

Courbes tournées vers l'intérieur

Triangle Carré Pentagone

Et celles-ci ?

Courbes tournées vers l'extérieur

Triangle Carré Pentagone

Elles sont toutes construites à l'aide du même algorithme ! Par contre, de l'une à l'autre, on a fait varier différents paramètres :

  • le nombre de côtés du polygone de base (nommé par la suite n qui vaut ci-dessus 3, 4 ou 5) ;
  • l'angle utilisé entre certains segments (nommé angle et valant ci-dessus 60, 88 ou 75 degrés);
  • le fait de tracer les figures vers l'intérieur du polygone (en haut) ou l'extérieur (en bas). On appelle interieur le booléen indiquant si la figure est construite vers l'intérieur ou non.

Dans chaque cas, la construction est la même :

  • on construit un polygone à n côtés. Selon la valeur du booléen interieur, on tourne vers la gauche (interieur = True) ou vers la droite (interieur = False) entre chaque côté ;
  • chaque « côté » du polygone est en fait une courbe de Cesàro1 (voir ci-dessous).

Étant donné une longueur, un angle (exprimé en degrés) et un nombre d'étapes donnés (les paramètres longueur, angle et etape), la courbe de Cesàro peut se construire de façon récursive :

  • à l'étape \(0\), on trace un segment de la longueur donnée ;
  • à l'étape \(1\) on construit quatre segments plus petits. Leur longueur est égale à celle du segment de l'étape \(0\) multipliée par le coefficient de réduction valant 1/(2 + 2*cos(pi*angle/180))2. Après avoir dessiné l'un de ces segments, la « tortue » tourne d'un multiple de l'angle passé en paramètre (voir figure) ;
  • à l'étape \(2\) on réitère la même démarche en découpant chacun des segments de l'étape \(1\) en quatre petits segments (le coefficient de réduction et l'angle de rotation sont inchangés).

De façon générale, la courbe à l'étape \(n+1\) s'obtient de découpant chacun des segments de la courbe à l'étape \(n\) en quatre petits segments. Le coefficient de réduction et l'angle de rotation sont toujours égaux à 1/(2 + 2*cos(pi*angle/180)) et angle.

D'une courbe à l'autre

La même courbe de Cesàro à différentes étapes

Dans ces figures, la longueur à l'étape \(0\) vaut 150 et l'angle est toujours égal à 88.

Etape \(0\)

Etape \(1\)

Etape \(2\)

Etape \(3\)

Etape \(4\)

On demande de compléter les fonctions courbe et fractale ci-dessous dont les paramètres ont été décrits ci-dessus. La fonction courbe dessine une courbe de Cesàro, la fonction fractale dessine autant de courbes de Cesàro que nécessaire afin de construire la fractale complète.

Comme indiqué en préambule, cet exercice ne comporte pas de tests, le corrigé est automatiquement affiché après \(10\) tentatives. D'ici là, n'hésitez pas à faire varier les paramètres pour créer votre fractale !

Par défaut, on a supprimé les animations de la figure.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013:pbvà(40i2+edmx3s7= 1jo5w_lSnatf-)9Kh6,Rcrg*éyPFku8/050n0m0F0E0j0B0r0u0P0B0E0r0r0t010F0j0c010406050r0Y0o0o0E0Q0U040C0x0B0Y0^0x0D050!0 1113150}0c041e1l051o0!1o1q1l0}0n0j0e0-0/0;0?0L0j0R0L0B1E0L0F0{050(0d0B0m1z0:0=011D1F1H1F0F1N1P1L0F0d0x0n151M0Q1m0F0L0-180r0c0E0D0?0k011R1B010G0*0m0D0E0o0m1L1?1^1}1T201P23250{0a0u0V0Q0x0c0x0r0j1b0D0u0$1;0Q0Q0m0P2q1e280D1m0!1/2D0F1-1,1.0n2a0?1H0D222n1L1w1y0.1S2N0j2P0D1)1x1L0c2w1m2B2D2+0~1@2r2V1~2!0Q120B0{0u0v2A2/0|2.292;1T2?2^2`0k2}1^2 2B2M01340E2_040u0q382C0}3b320?3e3g0u0h3k3a2/3c3q2`0y3u3m3w3o3d0x2@3f2`0M3B302:1A333G353h0s3L3n3O3p3Q3I3h0Z3U3D3W3F3H3r0J3$313(3y040v0i3-3N2W3)3R0v2|1f2~3C3.3_3:0v373~39403^2=3Y3g0v3j463l3M3x4b0{0v3t4f3v414a3*4k3A4n484i4r3;3K4u4h3E433T4A3V424j3;3#4F3%4H4x0v3,4L4p3P4x0k3?4R494T3R0k3}2+4v4C4I0k454%4B3/4*4e4-4G4q4!4m4=4M4@3Z0k4t4`4S3X4U4z504Y524!4E554w4!4K5a4)4U4Q5e4/4x0q4W5i4N3R0q4$3 4.5o3Z0q4,5s4?4Z5v4;5y4{5A3g0q4_5D513`5v4 2~1n2)1e2T2G0n2K3c0P1)261m5S1p5Q2-4n055X0$2*5E0?0X0D0{0G2k0o3u5t1~0z2`5_5z3p5;040F0Y0Q0F1P5~5.015|3h685K5:0{0j0o2m653u0u5`1T0x0{0S3@3c6f045?0x5^5)5 6a5}6z690D61121/6d566B6c6D6e616h6j0F6l6n3p0{5X0r6J3c0`040N6T6A610c0j3B4(3(0P0v0{030u0O0T0R0/0R0m0,2Y2p0j0E0Y0p6s4C0{1^6h0E2z6N6K6#0g6Z3E0r1{04010x0G0G017g3(6#0I6l6m6A6:6=0u0r1^0,786H0j1c6Y4X3x0{0c220Y0c7q3_7e7t4n0u7v697x046?1P0-0Q0E0U1c0u6}0F0u1P0e0T753/0{0R0x0F0x7P1~7e7{6o0{0H7~0?0o0j4k0i5m5O6A6#6%7T6U01844k3=82017s7u8e7X6?2m2o2q0u6 0^3f0m0N0u0f0u0E0w0Y0r0F0m0Q7;427K220n0x0z1d7c6!0{0g7S2+7U8n6;7Y7-1Q0P7$7(2r7+0u0d0)0;7:4u066.3_0X0{0$0G8j6b6m8R4C7o045X640d0m8j7}8 7=040B1c0R0Y0m64970{8c8W8e610%0E7L9i6$6(6E770D6`96997Q0{0I0b3B7U8X6A8^040j8{8d6)0{9o9q9M696p040t0t9t5K8g0488398e6#9D4u9F9+7V5K610G3G0z130n9r7f9z2=0{9c9w9f9h9`1T8l9*9F8e9I0m0+9y2-8a0{9)4%9,a59N9b9d9 8I9R5K9T9Wan6K619}9e9gam9l6A9T0!9X7d8T8j9Z5x399-6K9T0laC3caGaN3E9T6rar7J922n9^8j6*6,aUaR6qaQ9a1^9xa)3_aAa-1~9Z0v0Z9#2C9%9B8V3 ag9G9uaW94aa896998abb0aual9r9k2~aJaV9Pb3aI8e9T81a$3(a=bba:339va,a10?a3afa~9m9|0m0G6Sbu8kaEbE61a+67bEbwa}byai930Q95aYbH9|akawbpbm8K04bgbq0?bkb%8f853;bYayb0bJbha_ac04a|47a~be76040Q1IbDb75Kb6b49Yb,aH2Cb|3(aSb*bI9wbKc2aDb^9EbOb0bQbSbLbGchaVb9bXcp9sbZ9{b#0(9Qb/ao80b*bocvbcbiaib;9rb_3lb{bz9bbBc1c5ci9_crb}cLcvcN0|cPbP0xb2bTcX9acta0c,9AcwcCas9OcAb=6cazcEcx1TcGc:7|9jcdbscgcU8Scj8;8?1~9I8`8|6Cd133915?0E2y8wc+d7b}c.axdp7rd3c~6Vcz9pc`a`c=bdcQcZdhbvdvc?aV8QdGbFdCcJb02Y8Gb cudM7saebNa 9.0{2k0(7bdJa%9UcFb,0q0Ma^c{9S0{aBdw3d0{dLdYca8@5=3Gd4040Ab*8O6gd{dP9.0dd#a+dAb@cWdtb!e7b?b59BdXb`cld!b1bRedek04ef9$aidrb.dDaib$cHe1dFegd2d9bxaga66g9Ld)9adR8H0jdUeGa2adckb{dZc@cRbCdoewb0d$7a7Fei5-c39BeX9,eLb#a99remcOeYeZaVb 1Ye%ejepe*d(eUdHeI3 8=cQdkdmd6e(e/euaFb,0h87eze86K9Z5IffcicIc98e9Zd/fmfu6A9Z5Cfrd8ftd;6e0P0{0W3f0resfgc#e}3E8o8#0u0G9c5X2r2t0K0x0P0L3L0!5+0m2D2(f+5R1x5T2G2I2E1(1*2G0E1Of.0!5S0}f~9o0*0r04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013:pbvà(40i2+edmx3s7= 1jo5w_lSnatf-)9Kh6,Rcrg*éyPFku8/050n0m0F0E0j0B0r0u0P0B0E0r0r0t010F0j0c010406050r0Y0o0o0E0Q0U040C0x0B0Y0^0x0D050!0 1113150}0c041e1l051o0!1o1q1l0}0n0j0e0-0/0;0?0L0j0R0L0B1E0L0F0{050(0d0B0m1z0:0=011D1F1H1F0F1N1P1L0F0d0x0n151M0Q1m0F0L0-180r0c0E0D0?0k011R1B010G0*0m0D0E0o0m1L1?1^1}1T201P23250{0a0u0V0Q0x0c0x0r0j1b0D0u0$1;0Q0Q0m0P2q1e280D1m0!1/2D0F1-1,1.0n2a0?1H0D222n1L1w1y0.1S2N0j2P0D1)1x1L0c2w1m2B2D2+0~1@2r2V1~2!0Q120B0{0u0v2A2/0|2.292;1T2?2^2`0k2}1^2 2B2M01340E2_040u0q382C0}3b320?3e3g0u0h3k3a2/3c3q2`0y3u3m3w3o3d0x2@3f2`0M3B302:1A333G353h0s3L3n3O3p3Q3I3h0Z3U3D3W3F3H3r0J3$313(3y040v0i3-3N2W3)3R0v2|1f2~3C3.3_3:0v373~39403^2=3Y3g0v3j463l3M3x4b0{0v3t4f3v414a3*4k3A4n484i4r3;3K4u4h3E433T4A3V424j3;3#4F3%4H4x0v3,4L4p3P4x0k3?4R494T3R0k3}2+4v4C4I0k454%4B3/4*4e4-4G4q4!4m4=4M4@3Z0k4t4`4S3X4U4z504Y524!4E554w4!4K5a4)4U4Q5e4/4x0q4W5i4N3R0q4$3 4.5o3Z0q4,5s4?4Z5v4;5y4{5A3g0q4_5D513`5v4 2~1n2)1e2T2G0n2K3c0P1)261m5S1p5Q2-4n055X0$2*5E0?0X0D0{0G2k0o3u5t1~0z2`5_5z3p5;040F0Y0Q0F1P5~5.015|3h685K5:0{0j0o2m653u0u5`1T0x0{0S3@3c6f045?0x5^5)5 6a5}6z690D61121/6d566B6c6D6e616h6j0F6l6n3p0{5X0r6J3c0`040N6T6A610c0j3B4(3(0P0v0{030u0O0T0R0/0R0m0,2Y2p0j0E0Y0p6s4C0{1^6h0E2z6N6K6#0g6Z3E0r1{04010x0G0G017g3(6#0I6l6m6A6:6=0u0r1^0,786H0j1c6Y4X3x0{0c220Y0c7q3_7e7t4n0u7v697x046?1P0-0Q0E0U1c0u6}0F0u1P0e0T753/0{0R0x0F0x7P1~7e7{6o0{0H7~0?0o0j4k0i5m5O6A6#6%7T6U01844k3=82017s7u8e7X6?2m2o2q0u6 0^3f0m0N0u0f0u0E0w0Y0r0F0m0Q7;427K220n0x0z1d7c6!0{0g7S2+7U8n6;7Y7-1Q0P7$7(2r7+0u0d0)0;7:4u066.3_0X0{0$0G8j6b6m8R4C7o045X640d0m8j7}8 7=040B1c0R0Y0m64970{8c8W8e610%0E7L9i6$6(6E770D6`96997Q0{0I0b3B7U8X6A8^040j8{8d6)0{9o9q9M696p040t0t9t5K8g0488398e6#9D4u9F9+7V5K610G3G0z130n9r7f9z2=0{9c9w9f9h9`1T8l9*9F8e9I0m0+9y2-8a0{9)4%9,a59N9b9d9 8I9R5K9T9Wan6K619}9e9gam9l6A9T0!9X7d8T8j9Z5x399-6K9T0laC3caGaN3E9T6rar7J922n9^8j6*6,aUaR6qaQ9a1^9xa)3_aAa-1~9Z0v0Z9#2C9%9B8V3 ag9G9uaW94aa896998abb0aual9r9k2~aJaV9Pb3aI8e9T81a$3(a=bba:339va,a10?a3afa~9m9|0m0G6Sbu8kaEbE61a+67bEbwa}byai930Q95aYbH9|akawbpbm8K04bgbq0?bkb%8f853;bYayb0bJbha_ac04a|47a~be76040Q1IbDb75Kb6b49Yb,aH2Cb|3(aSb*bI9wbKc2aDb^9EbOb0bQbSbLbGchaVb9bXcp9sbZ9{b#0(9Qb/ao80b*bocvbcbiaib;9rb_3lb{bz9bbBc1c5ci9_crb}cLcvcN0|cPbP0xb2bTcX9acta0c,9AcwcCas9OcAb=6cazcEcx1TcGc:7|9jcdbscgcU8Scj8;8?1~9I8`8|6Cd133915?0E2y8wc+d7b}c.axdp7rd3c~6Vcz9pc`a`c=bdcQcZdhbvdvc?aV8QdGbFdCcJb02Y8Gb cudM7saebNa 9.0{2k0(7bdJa%9UcFb,0q0Ma^c{9S0{aBdw3d0{dLdYca8@5=3Gd4040Ab*8O6gd{dP9.0dd#a+dAb@cWdtb!e7b?b59BdXb`cld!b1bRedek04ef9$aidrb.dDaib$cHe1dFegd2d9bxaga66g9Ld)9adR8H0jdUeGa2adckb{dZc@cRbCdoewb0d$7a7Fei5-c39BeX9,eLb#a99remcOeYeZaVb 1Ye%ejepe*d(eUdHeI3 8=cQdkdmd6e(e/euaFb,0h87eze86K9Z5IffcicIc98e9Zd/fmfu6A9Z5Cfrd8ftd;6e0P0{0W3f0resfgc#e}3E8o8#0u0G9c5X2r2t0K0x0P0L3L0!5+0m2D2(f+5R1x5T2G2I2E1(1*2G0E1Of.0!5S0}f~9o0*0r04.

Votre fractale

Votre tracé sera ici

Les différents paramètres

Triangle

Carré

Pentagone

Triangle

Carré

Pentagone


  1. Ernesto Cesàro (1859 - 1906) était un mathématicien italien. ↩

  2. le coefficient de réduction peut se retrouver en faisant un peu de trigonométrie. En effet, si à une certaine étape \(n\), la longueur du segment vaut \(l_n\), à l'étape suivante elle vaudra \(l_{n+1}\) et on aura \(l_{n+1} + 2\times l_{n+1}\cos\left(\frac{\pi\times angle}{180}\right) + l_{n+1} = l_n\). On peut alors isoler \(l_{n+1}\) et retrouver le coefficient annoncé. ↩