Aller au contenu

La courbe de Cantor

Le cadre

La courbe de Cantor est une courbe fractale continue qui relie deux points du plan \(A(x_A, y_A)\) et \(B(x_B, y_B)\).

On considère le milieu \(M\) de \([AB]\) et un segment horizontal \([CD]\) de longueur \(\dfrac{|x_B - x_A|}3\).

La courbe fractale de Cantor est composée :

  • d'une courbe de Cantor autosimilaire qui relie les points \(A\) et \(C\),
  • du segment \(CD\),
  • d'une courbe de Cantor autosimilaire qui relie les points \(D\) et \(B\).

Approximation d'une fractale

Nous allons tracer une approximation avec une fonction récursive et différents niveaux de précision.

  • Au niveau de précision \(0\), c'est juste une ligne qui joint \(A\) à \(B\).
  • Au niveau de précision \(n > 0\), on utilise un niveau de précision \(n - 1\) pour les deux morceaux autosimilaire.

Exercice

Coder une fonction cantor

  • qui prend en paramètres
    • A, un point du plan
    • B, un point du plan
    • n, un entier positif inférieur à 15
  • et qui construit l'approximation de la courbe de Cantor de A à B au niveau de précision n.

La fonction pourra appeler la fonction segment qui prend en paramètre deux points \(M\) et \(P\) et qui trace le segment \([MP]\).

⚠ Il est interdit d'utiliser des flottants dans le code.

👍 La fonction travaille de manière transparente avec des fractions, pour lesquelles on pourra utiliser les opérateurs classiques : + - * /

###(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 : /
.128013x,59/f.7B8r;nb _o=ylaepcwgu)vd*4613kAmhtsP(S0+2CD-i:050E0w0O0v0Z0u0P0p0y0u0v0P0P0s010O0Z0x010406050P0B0M0M0v0l0t040S0r0u0B0^0r0n050f0 1113150}0x04051l1e1o0f1l0}0E0Z0D0-0/0;0?0N0Z0A0N0u1C0N0O0{050(0o0u0w1x0:0=011B1D1F1D0O1L1N1J0O0l1m0O0N1P1z010g0*0w0n0v0M0w010-180P0x0v0n0?0V1J1`1|1*1R1-1N1:1=0{0a0p0Q0l0r0x0r0P0Z1b0n0p0$1^0l0l0w0y2j1e210n1m0f1(2w1#1%1$1K0E230?1F0n1/2g1J1u1w0.1Q2G0Z2I0n0r2M1J0x2p1m2u2w2!0~1{2k2O1+2T0l120u0{0p0I2t2(0|2%222*1R2,2.2:0V2?1|2^2u2F012}0v2/040p0J312v0}342{0?37390p0G3d332(353j2:0d3n3f3p3h360r2-382:0H3u2_2)1y2|3z2~3a0i3E3g3H3i3J3B3a0k3N3w3P3y3A3k0e3V2`3X3r040I0T3$3G2P3Y3K0I2=1f2@3v3%3/3)0I303@323_3.2+3R390I3c3 3e3F3q440{0I3m483o3`433Z4d3t4g414b4k3*3D4g1p2Y1e2M2z0E1%2E3x0y2U1?1m4x1n4v2$4t4D0$2Z3W3/0K0{0$0g3n4a3x0z2:4V3O3{0g0{0y1|0O3z4!4P1+0`040R4-4i2|0{0L4?421R4:0c3n0p4W3(0{0j4{354~50523{0{1d4t4#4/0{0C0!3u0p5l515f1R4R041Q0w0l0O595o0?0M0Z0{3,4g5n4.1R0r0{020u0O0m0s5w5F3i5c5O4@0?5H045J5L5S4|5y5A3*4m2$5x01585D5a1+0P1 04010S2R1c0c0-1O0n000w0P0O0p1{0,0l0)0P1c1:1M1?5k5m5.5p0{0Z4U5-5*0n5R6j5P015V0s5N6n5T015z5B563x4:5j4n5m6D5E6u6l040P0w0A1=0n5v5e6o4:4=6P6G4_6y3X5,2!6F5!36546W3/4:0C6c5l6e0?5q0w0+0w6(5g046B2!066E6d6k0{0W0q0b5Z356q746z0{6S5)6o6w043~6Z6.6p0{0F7753044`6T6#5V0h6@4^04736t7q0{0U7l5b04557p750{7s7F3x6H7w7b6u6*7B1+5V0f7Q1R7d476{6}6-6 04710t7U5U0{6s7g5*6R7t5Q7n7:7i047I7N6#6H7(7x7G047A7~7K6%7J3X7r7?7|7?7P82860{7T8c3/7d7f3^7Z6!3q707)7@7,2@8m83040Q0r2R6O7`57798870728a0{4 8g2+8E7}8A78046+4n6|7Z7h6H0X8F8J5G7+8p7/857C7o8N8d7^8D7v8p5V817-7c5$8j328t8+7k8Y7;7E8*3/878%8K8.934}5h8/8e8p7W6,6E8U0{8W8M8s7h768}5+8C967;8)2@9k7H8-9i8_9t808p6H8 9s5*9290949w2v7h8b8=6u7S9b8@9d6D9f040X99048r9x7#8w8y8G4;8-8W7M9D6Q8H9A9g0q9I4O7O988R8l9T4)6N4,9p9n9(9 6H9r329K9.9m6H0W9%8I9M7{6mad7 0Y9P4d9%8Q7Y8T7#6J6L1/8z9,9@a19G7uaa9 6Y9j7#9VaA9^an6}9{4*9~ax0?8$aM6$9Uab9/7DaSa8afaC6o5Vai9m7d3?aP9L3^1e4M0w2w2Xa.4w1v4y2z2C2x0v6a2w4x0}0f0$0(0*0P04.

Coder, cliquer sur 'Lancer', patienter... votre image sera ici !