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 |
|
|
| Un arbre, un chapeau et rien d'autre. | |
| | 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: Un arbre, un chapeau et rien d'autre. Mer 10 Fév 2016 - 1:29 | |
| - Code:
-
rem ============================================================================ rem Arbre récursif rem ============================================================================ Init() Tree() end rem ============================================================================ ' Vous pouvez modifier toutes ces valeurs SUB Init() dim level : level = 12 dim long : long = 80 dim x : x = 300 dim y : y = 400 dim rot : rot = pi/2 dim a1 : a1 = pi/6 dim a2 : a2 = pi/8 dim c1 : c1 = 0.7 dim c2 : c2 = 0.85 dim xs(level+1) dim ys(level+1) color 0,0,128,128 END_SUB rem ============================================================================ ' Procédure récursive SUB Tree() xs(level) = x : ys(level) = y Branche() if level > 0 level = level - 1 : long = long*C1 : rot = rot - A1 Tree() : ' 1er Appel récursif long = long/C1*C2 : rot = rot + A1 + A2 Tree() : ' 2 second appel récursif rot = rot - A2 : long = long/C2 : level = level + 1 end_if x = xs(level) : y = ys(level) END_SUB rem ============================================================================ SUB Branche() dim_local xn,yn,w w = long/5 : if w < 1 then w = 1 2d_pen_width w : 2d_pen_color 15*w,255,10 yn = 0-sin(rot)*long + y : xn = cos(rot)*long + x : 2d_line x,y,xn,yn x = xn : y = yn : display END_SUB rem ============================================================================
Dernière édition par papydall le Jeu 11 Fév 2016 - 12:58, édité 1 fois (Raison : Pour ajouter le chapeau dans le titre.) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Mer 10 Fév 2016 - 15:51 | |
| Mon arbre ne plait à personne ! Pourtant il est généré par une procédure récursive et la documentation de Panoramic ne souffle pas un seul mot sur la récursivité. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Mer 10 Fév 2016 - 17:53 | |
| Je n'ai pas trop de temps en ce moment, alors je me suis contenté de lancer le code. c'est pourquoi je n'ai pas remarqué l'intérêt du code: la récursivité.
Donc à priori ça fonctionne en Panoramic, je ne le fait jamais car je pensais que ça pouvait poser problème.
Merci Papydall. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Mer 10 Fév 2016 - 18:36 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Mer 10 Fév 2016 - 19:03 | |
| Ton arbre est superbe, Papydall ! Pour la récursivité, ça marche dans certaines conditions. Mais surtout, ne pas utiliser de variables locales, car dès le premier appel récursif, Panoramic signale une erreur sur le DIM_LOCAL... Non, techniquement, Panoramic ne permet pas de procédures récursives, pour la boonne et simple raison qu'il n'y a de pile pour l'allocation de l'espace de travail propre à chaque instance de procédure. Les variables locales, tout comme les paramètres formels d'une SUB, sont définis dans la table de symboles de Panoramic, comme les autres variables, sous forme de noms tout en majuscules. La seule distinction est un préfixe qui est appliqué à ces noms: c'est le nom de la SUB, suivi d'un point d'exclamation, suivi du nom de la variable ou du paramètre. Et c'est ainsi que dès le premier appel récursif, ça plante sur un DIM_LOCAL. Pour les paramètres formels, ça passe au niveau de l'appel (et je ne sais même pas pourquoi...), car ça ne devrait pas passer non plus. Mais tant qu'au moins ça, ça marche, on ne va pas être plus royaliste que le Roi... Voici un exemple célèbre d'algorithme récursif. Il a fallu ruser car on ne peut pas définir de fonctions: - Code:
-
dim n%, fac% n% = 6 fac% = 1 faculte(n%) print str$(n%)+"! = "+str$(fac%) end
sub faculte(k%) if k%>1 n% = k% - 1 fac% = fac%*k% faculte(n%) end_if end_sub
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Mer 10 Fév 2016 - 23:53 | |
| Merci Klaus pour ces explications. Ton code fonctionne, mais j’ai corrigé un mini bug (pas notre ami, non, non) sur l’affichage du résultat puisque la sub modifie la variable n% passée comme paramètre. Voici le code modifié, en fait j’ai sauvegardé n% dans sauv% ( quel exploit j’ai réalisé !) - Code:
-
dim n%, fac%, sauv% n% = 6 : sauv% = n% fac% = 1 faculte(n%) print str$(sauv%)+"! = "+str$(fac%) end
sub faculte(k%) if k%>1 n% = k% - 1 fac% = fac%*k% faculte(n%) end_if end_sub
Et pour te remercier, je t’offre (à toi spécialement, mais aussi à tous ceux qui passent par là) mon chapeau_bas.basIl est un peu lent à se réaliser, mais ça vaut le coup de patienter le temps qu’il prendra. - Code:
-
rem ============================================================================ rem Chapeau_bas rem ============================================================================ width 0,650 : picture 10 : full_space 10 : 2d_target_is 10 : color 10,0,0,0 Chapeau() print_target_is 10 : font_bold 10 : font_name 10,"tahoma" : font_size 10,20 font_color 10,200,100,50 : print_locate 200,20 : print " Chapeau bas !!! " end rem ============================================================================ SUB Chapeau() dim_local x1,x2,x4,y1,y2,x,y,i,a,l,r,f x1 = 300 : y1 = 300 : x2 = x1*x1 : y2 = 200 For x = 0 to x1 x4 = x*x : L = 0-y1 : A = sqr(abs(x2 - x4)) For I = 0-A to A 2d_pen_color mod((abs(i/2)+x/2),255), abs(255-abs(i/2)),mod(abs(a/2),255) R = sqr(X4+I*I)/x1 : F = (1-R)*cos(12*R) : Y = I/5+F*y2 If Y > L then l = y : y = y1-y : 2D_point x1-x,y : 2D_point x1+x,y display Next I Next x END_SUB rem ============================================================================
- Voici le résultat:
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Jeu 11 Fév 2016 - 1:36 | |
| Très joli, Papydall ! Merci ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Jeu 11 Fév 2016 - 7:56 | |
| Notre papydall travaille du chapeau maintenant ! Très belles réalisations, bravo ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Jeu 11 Fév 2016 - 12:56 | |
| Bonjour tout le monde.
Aujourd’hui on a gagné un connaisseur de plus de la qualité des réalisations de Papydall. Alors, chapeau ! | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Jeu 11 Fév 2016 - 15:40 | |
| Pas mal, j'avais déjà vu cet arbre mais en monochrome. Pour ce qui est de la récursivité, c'est simple à faire avec l'interpréteur quand on a compris 'le truc'. J'ai posté un exemple de récursion: la tour de hanoï | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| | | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Jeu 11 Fév 2016 - 20:00 | |
| Heu... moi j'ai vu un flan aux œufs dans une assiette creuse avec une morille au centre. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Ven 12 Fév 2016 - 1:17 | |
| - jjn4 a écrit:
- Chapeau, chapeau,
c'est une soucoupe volante, ça ! Tu as de quoi retourner sur Mars. - Jean Claude a écrit:
- Heu... moi j'ai vu un flan aux œufs dans une assiette creuse avec une morille au centre.
On voit bien le chef cuisinier cordon bleu ! - Spoiler:
En réalité, en concoctant mon code, je ne savais pas ce que ça va donner. Comme ça m’a plu, j’ai dis « chapeau bas, Papydall ». Voilà vous connaissez tout. | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Chapeau bas (suite) Sam 13 Fév 2016 - 14:26 | |
| | |
| | | Invité Invité
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Sam 13 Fév 2016 - 15:09 | |
| Bonjour Papaiun. Je te répond car j'ai été surpris par ta question. Je me suis dit: "Quels scintillements? Je ne me souvenais pas en avoir eu.
J'ai donc relancé le programme de Papydall, et j'ai constaté une chose: Si j’agrandis un un peu la fenêtre sur le bord, j’ai effectivement ces effets. Si je rétrécie pour n'avoir que la zone noire, ils disparaissent. C'est d'ailleurs la première fois que je constate ce phénomène. |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Sam 13 Fév 2016 - 15:17 | |
| Salut Parpaiun. Je suis content de ton retour. - Parpaiun a écrit:
- Papydall, est ce normal ces effets de scintillements (ou de flashs répétitifs ) pendant l'affichage animé de ton "chapeau bas" sur l'écran ? Ça me fait mal aux yeux tu sais ! Pour les autres, ça craint de provoquer une crise d'épilepsie ! de Parpaiun
Le chapeau_bas n’est pas un dessin animé : c’est un dessin tout court. Il n’y a absolument pas de scintillements lors de son tracé. Tout au plus, un très léger effet de moiré à peine perceptible pour des yeux de lynx (ou de Lyncée) Pour les yeux, j’en sais quelque chose et je ne me permets pas de provoquer une crise d’épilepsie à quiconque ! Et si mon « chapeau bas » te gêne à ce point, tu as deux choix à faire : *** 1) Tu mets la ligne 19 display en REM : tu ne verra plus le chapeau se dessiner et il s’affichera d’un coup quand il sera dessiné. Mais là, tu perds le plaisir de voir l’œuvre en création ! *** 2) Tu envoies le fichier vers la corbeille pour t’épargner le mal aux yeux. Fais ton choix | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Sam 13 Fév 2016 - 15:47 | |
| - Cosmos70 a écrit:
J'ai donc relancé le programme de Papydall, et j'ai constaté une chose: Si j’agrandis un un peu la fenêtre sur le bord, j’ai effectivement ces effets. Si je rétrécie pour n'avoir que la zone noire, ils disparaissent. C'est d'ailleurs la première fois que je constate ce phénomène.
Ce phénomène je l’ai déjà constaté : ça arrive quand les dimensions du PICTURE correspondent exactement à celles du FORM. Tout changement de ces dimensions en cours d’exécution du programme provoque ces scintillements gênants. Essayer le code suivant - Code:
-
picture 10 : full_space 10 : color 10,0,0,0 : 2d_target_is 10 : 2d_pen_color 255,255,255 ' width 10,width(0) 2d_circle 300,220,200
Modifier les dimensions de la fenêtre à l’aide de la souris et bonjour les dégâts : le PICTURE scintille ! Activer la ligne 2 en enlevant le REM (‘) : toute modification des dimensions de la fenêtre NE provoque PLUS aucun scintillements ! Seules des "ascenseurs" (disgracieux ?) apparaîtront. Pour ne pas avoir ces ascenseurs, modifier le code comme ceci - Code:
-
picture 10 : full_space 10 : color 10,0,0,0 : 2d_target_is 10 : 2d_pen_color 255,255,255 width 10,width(0)-20 2d_circle 300,220,200
Il n'y a plus ni scintillements, ni ascenseurs. C'est à vous de tirer les conclusions.
Dernière édition par papydall le Sam 13 Fév 2016 - 18:59, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Sam 13 Fév 2016 - 18:55 | |
| Le problème du scintillement n'est pas nouveau, mais je n'avais jamais remarqué qu'une variation de dimension influait sur cet effet. Entre parenthèses, chapeau bas pour ton programme. Comme tu le sais, j'évite d'intervenir, cela ne signifie pas que ça m’épate. |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un arbre, un chapeau et rien d'autre. Sam 13 Fév 2016 - 19:01 | |
| | |
| | | Contenu sponsorisé
| Sujet: Re: Un arbre, un chapeau et rien d'autre. | |
| |
| | | | Un arbre, un chapeau et rien d'autre. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |