Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Une énigme sous forme d’un poème : flocon de Von Koch | |
| | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Une énigme sous forme d’un poème : flocon de Von Koch Mer 29 Avr 2020 - 5:46 | |
| Quelqu’un m’a proposé (avec un air malicieux) une énigme sous forme d’un poème. - Voici le poème:
Au jardin des mathématiques, Un triangle aspirait à l'infini. Ses côtés trop isométriques Entravaient ses rêves inassouvis Et l'agaçaient de leur musique : Ton périmètre, il est fini ... fini.
Un jour, un ange bucolique Lui greffa, bien au centre des côtés Deux tiers de segments en oblique. Cet ange était excellent jardinier Et bientôt, surgeons identiques, Trois bébés trigones bourgeonnaient.
Voyant qu'ainsi le périmètre S'agrandissant en belle proportion, Il suivit son art de géomètre, Sautant de division en division. Cela fit une belle étoile Et tous les triangles à l'unisson, Se festonnèrent de fractales Qui rivalisaient en perfection.
Voici ma réponse en Panoramic - Code:
-
rem ============================================================================ rem L’énigme du flocon de Von Koch rem Papydall le 29 / 04 / 2020 rem ============================================================================ label choix dim x(4*65536),y(4*65536) dim sin60,cos60, maxx,generation,puissance4 dim l, longueur, aire
GUI() Init() Afficher_Poeme() Debut()
end rem ============================================================================ SUB GUI() width 0,1000 : height 0,800 picture 10 : width 10,550 : height 10,650 : top 10,20 : left 10,20 : 2d_target_is 10 font_bold 10 : font_size 10,14 : 2d_fill_color 200,100,20 : print_target_is 10 font_size 10,10 : 2d_fill_color 255,255,255 : 2d_pen_width 2 : 2d_pen_color 255,0,0 button 20 : top 20,700 : left 20,050 : caption 20,"&Précédent" : on_click 20,choix button 30 : top 30,700 : left 30,225 : caption 30,"&Suivant" : on_click 30,choix button 40 : top 40,700 : left 40,400 : caption 40,"&Quitter" : on_click 40,choix alpha 99 : top 99,50 : left 99,650 : font_bold 99 : font_size 99,12 font_color 99,20,100,200 caption 0,"Flocon de Von Koch." END_SUB rem ============================================================================ SUB Init() L = 400 : ' longueur en pixels du côté du triangle initial longueur = 3 : ' périmètre du triangle de départ de côté 1 maxx = width_client(10) sin60 = sqr(3)/2 : ' sin(60°) pour les déplacements cos60 = 0.5 : ' cos(60) x(0) = (maxx-L) / 2 : ' 1er point y(0) = (maxx-4*L*Sin60/3) / 2+L*Sin60 x(1) = x(0)+L*Cos60 : ' 2eme point y(1) = y(0)-L*Sin60 x(2) = x(0)+L : ' 3eme point y(2) = y(0) x(3) = x(0) y(3) = y(0) generation = 1 : puissance4 = 1 END_SUB rem ============================================================================ SUB Afficher_Poeme() dim_local a$,t$ read a$ while a$ <> "FIN" t$ = t$ + a$ + chr$(13) read a$ end_while caption 99,t$ END_SUB rem ============================================================================ Choix: select number_click case 20 : Precedent() case 30 : Suivant() case 40 : Quitter() end_select return rem ============================================================================ SUB Debut() cls Dessiner(1) END_SUB rem ============================================================================ SUB Generer(generation) dim_local i,j,dx,dy for j = puissance4 * 3 to 1 step -1 : ' On décale les points pour intercaler les 3 nouveaux points x(j*4) = x(j) : y(j*4) = y(j) next j for j = 0 to puissance4 * 3 - 1 : ' On intercale les 3 nouveaux points i = 4*j dx = (x(i+4)-x(i))/3 : dy = (y(i+4)-y(i))/3 : ' on coupe en 3 x(i+1) = x(i)+dx : y(i+1) = y(i)+dy : ' on part du 1/3 et on termine aux 2/3 x(i+2) = x(i+1)+cos60*dx+sin60*dy : ' on obtient le nouveau point, y(i+2) = y(i+1)-sin60*dx+cos60*dy : ' sommet du triangle équiltéral x(i+3) = x(i)+2*dx : y(i+3) = y(i)+2*dy next j END_SUB rem ============================================================================ SUB Dessiner(generation) dim_local i cls 2d_poly_from x(0),y(0) : ' on se positionne sur le 1er point for i = 1 to 3*puissance4 2d_poly_to x(i),y(i) : ' on trace de point en point next i Afficher() END_SUB rem ============================================================================ SUB Afficher() dim_local s$ 2d_fill_color 200,100,20 2d_rectangle 10,518,maxx-2,640 2d_fill_off print_locate 150,10 : print "Flocon de Von Koch par Papydall." print_locate 020,520 : print "Génération : " + str$(generation-1) + " " s$ = "Nombre de côtés : " + str$(3*puissance4) + " " print_locate 300,520 : print s$ longueur = 3*power(4/3,generation-1) print_locate 020,540 : print "Périmètre = " + str$(longueur) aire = 2*sqr(3)/5 - (3*sqr(3)/20) * power(4/9,generation-1) print_locate 300,540 : print "Aire = " + str$(aire) print_locate 020,560 : print "Le périmètre tend vers l'infini lorsque le nombre de générations tend vers l'infini." print_locate 020,580 : print "L'aire du flocon est finie et tend vers les 8/5 de l'aire du triangle de départ." print_locate 020,600 : print "Pour un triangle initial de côté 1, l'aire du flocon tend vers "+ str$(2*sqr(3)/5) print_locate 100,620 : print "La Dimension fractale est : " + str$(log(4)/log(3)) END_SUB rem ============================================================================ SUB Suivant() if puissance4 >= 1024 : ' on se limite à la génération 5; au-dela les calculs... message "On se limite à la génération 5 !" inactive 30 exit_sub : ' ... deviennent chronophages et il n'y a plus de ... end_if : ' ... différences sensibles entre une courbe et la suivante inactive 20 : inactive 30 : ' pour calmer Mr Bourrin puissance4 = puissance4 * 4 generation = generation + 1 Generer(generation) Dessiner(generation) active 20 : active 30 : ' Mr Bourrin peut se défouler END_SUB rem ============================================================================ SUB Precedent() dim_local j if puissance4 = 1 message "Il n'y a pas de précédent pour la génération 0 !!!" inactive 20 exit_sub end_if cls inactive 20 : inactive 30 : ' pour calmer Mr. Bourrin FOR j = 1 TO puissance4*3 : ' On décale les points pour suppimer les 3 nouveaux points x(j) = x(j*4) y(j) = y(j*4) next j puissance4 = puissance4 / 4 generation = generation - 1 Dessiner(generation) active 20 : active 30 END_SUB rem ============================================================================ SUB Quitter() if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1 terminate end_if END_SUB rem ============================================================================ data " E N I G M E" data "" data "Au jardin des mathématiques," data "Un triangle aspirait à l'infini." data "Ses côtés trop isométriques" data "Entravaient ses rêves inassouvis" data "Et l'agaçaient de leur musique :" data "Ton périmètre, il est fini ... fini." data "" data "Un jour, un ange bucolique" data "Lui greffa, bien au centre des côtés" data "Deux tiers de segments en oblique." data "Cet ange était excellent jardinier" data "Et bientôt, surgeons identiques," data "Trois bébés trigones bourgeonnaient." data "" data "Voyant qu'ainsi le périmètre" data "S'agrandissant en belle proportion," data "Il suivit son art de géomètre," data "Sautant de division en division." data "Cela fit une belle étoile" data "Et tous les triangles à l'unisson," data "Se festonnèrent de fractales" data "Qui rivalisaient en perfection." data "" data "Auteur inconnu" data "FIN" rem ============================================================================
- Résultat:
| |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mer 29 Avr 2020 - 17:04 | |
| on peut couper les cheveux en quatre ou refaire la guerre de... trois, il n'empêche qu'en moins de deux, Papydall en étonne plus d'un ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch Mer 29 Avr 2020 - 18:58 | |
| Bravo Froggy, quel poète ! J'ai essayé d'en faire une petite sub (du papydall, pas du poème) En recopiant bêtement les instructions du programme ci-dessus, sans trop approfondir ! Ça perd un peu de son charme poétique, mais bon... - Code:
-
dim x,y,w WIDTH 0,600: HEIGHT 0,600 PICTURE 10: FULL_SPACE 10: 2D_TARGET_IS 10: 2D_FILL_OFF x = 100: y = 50: w = 400 ' 2D_PEN_COLOR 64,64,64: 2D_PEN_DOT: 2D_RECTANGLE x,y,x+w,y+w 2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2 Cadretoile(10,x,y,w,4) END ' ============================================================================== SUB Cadretoile(p,x0,y0,w,gen) ' d'après PAPYDALL ' Cadre fantaisie dans picture p, forme gen = 1 (triangle) à 5 (étoilé) ' Tracé en x0,y0, w = largeur de la figure (enveloppe ~ carrée) ' Paramètres actuels: couleur et épaisseur de trait. DIM_LOCAL L,lg,sin60,cos60,x(4*65536),y(4*65536) DIM_LOCAL p4,i,j,k,dx,dy IF gen > 5 THEN gen = 5 i = 2*gen-2: p4 = POWER(2,i) ' Init L = w: ' longueur en pixels du côté du triangle initial lg = 3: ' périmètre du triangle de départ de côté 1 sin60 = sqr(3)/2: ' sin(60°) pour les déplacements cos60 = 0.5: ' cos(60) x(0) = x0: y(0) = y0+2+L*Sin60: ' 1er point x(1) = x(0)+L*Cos60: y(1) = y(0)-L*Sin60: ' 2ème point x(2) = x(0)+L: y(2) = y(0): ' 3ème point x(3) = x(0): y(3) = y(0) IF gen > 1 ' Générer FOR k = 2 TO gen for j = p4 * 3 to 1 step -1 : ' Intercaler les 3 nouveaux points x(j*4) = x(j) : y(j*4) = y(j) next j for j = 0 to p4 * 3 - 1 : ' On intercale les 3 nouveaux points i = 4*j dx = (x(i+4)-x(i))/3 : dy = (y(i+4)-y(i))/3 : ' Coupe en 3 x(i+1) = x(i)+dx : y(i+1) = y(i)+dy : ' Du 1/3 aux 2/3 x(i+2) = x(i+1)+cos60*dx+sin60*dy : ' nouveau point, y(i+2) = y(i+1)-sin60*dx+cos60*dy : ' sommet triangle équilatéral x(i+3) = x(i)+2*dx : y(i+3) = y(i)+2*dy next j NEXT k END_IF ' Dessiner 2d_poly_from x(0),y(0) : ' on se positionne sur le 1er point for i = 1 to 3*p4 2d_poly_to x(i),y(i) : ' on trace de point en point next i END_SUB ' ============================================================================== Ça peut servir pour encadrer un sprite de façon originale, dans une image du picture.
Dernière édition par JL35 le Mer 29 Avr 2020 - 21:03, édité 1 fois | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch Mer 29 Avr 2020 - 19:24 | |
| Quand les programmeurs deviennent bucoliques...! (ou plutôt bucolico-mathématiques) | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mer 29 Avr 2020 - 20:56 | |
| YES !!! il y a juste une coquille en ligne 27. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch Mer 29 Avr 2020 - 21:03 | |
| Bien vu ! manque une parenthèse, sans doute emportée par le vent... Je corrige | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch Jeu 30 Avr 2020 - 0:19 | |
| Merci à vous tous : Le poète, Le Martien et l’amateur des cadres. Et tant qu’on parle de cadrer un sprite ou même un petit Martien vert, voici comment j’imagine le cadre - Code:
-
dim x,y,w WIDTH 0,600: HEIGHT 0,600 PICTURE 10: FULL_SPACE 10: 2D_TARGET_IS 10: 2D_FILL_COLOR 255,255,0 x = 100: y = 50: w = 400 2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2 Cadretoile(10,x,y,w,5) picture 20 : width 20,200 : height 20,200 : top 20, 180 : left 20,200 stretch_on 20 file_load 20,"C:\Users\acer\Desktop\1.jpg" : ' <--- à adapter !!! END ' ============================================================================== SUB Cadretoile(p,x0,y0,w,gen) ' d'après PAPYDALL ' Cadre fantaisie dans picture p, forme gen = 1 (triangle) à 5 (étoilé) ' Tracé en x0,y0, w = largeur de la figure (enveloppe ~ carrée) ' Paramètres actuels: couleur et épaisseur de trait. DIM_LOCAL L,lg,sin60,cos60,x(4*65536),y(4*65536) DIM_LOCAL p4,i,j,k,dx,dy IF gen > 5 THEN gen = 5 i = 2*gen-2: p4 = POWER(2,i) ' Init L = w: ' longueur en pixels du côté du triangle initial lg = 3: ' périmètre du triangle de départ de côté 1 sin60 = sqr(3)/2: ' sin(60°) pour les déplacements cos60 = 0.5: ' cos(60) x(0) = x0: y(0) = y0+2+L*Sin60: ' 1er point x(1) = x(0)+L*Cos60: y(1) = y(0)-L*Sin60: ' 2ème point x(2) = x(0)+L: y(2) = y(0): ' 3ème point x(3) = x(0): y(3) = y(0) IF gen > 1 ' Générer FOR k = 2 TO gen for j = p4 * 3 to 1 step -1 : ' Intercaler les 3 nouveaux points x(j*4) = x(j) : y(j*4) = y(j) next j for j = 0 to p4 * 3 - 1 : ' On intercale les 3 nouveaux points i = 4*j dx = (x(i+4)-x(i))/3 : dy = (y(i+4)-y(i))/3 : ' Coupe en 3 x(i+1) = x(i)+dx : y(i+1) = y(i)+dy : ' Du 1/3 aux 2/3 x(i+2) = x(i+1)+cos60*dx+sin60*dy : ' nouveau point, y(i+2) = y(i+1)-sin60*dx+cos60*dy : ' sommet triangle équilatéral x(i+3) = x(i)+2*dx : y(i+3) = y(i)+2*dy next j NEXT k END_IF ' Dessiner ' 2d_poly_from x(0),y(0) : ' on se positionne sur le 1er point for i = 1 to 3*p4 ' 2d_poly_to x(i),y(i) : ' on trace de point en point 2d_circle x(i),y(i),5 : display next i END_SUB ' ==============================================================================
- Resultat:
| |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch Jeu 30 Avr 2020 - 8:30 | |
| Excellent ce cadre fractal ! Je suppose que si l'on voulait des tableaux dynamiques, il faudrait faire : - Code:
-
dim x(4 * p4), y(4 * p4)
(ceci pour une éventuelle adaptation crocodilienne !) EDIT : en fait c'est (12 * p4) d'après la variation des indices i et j dans le sous-programme. L'adaptation est en cours | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch Sam 2 Mai 2020 - 6:26 | |
| | |
| | | Contenu sponsorisé
| Sujet: Re: Une énigme sous forme d’un poème : flocon de Von Koch | |
| |
| | | | Une énigme sous forme d’un poème : flocon de Von Koch | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |