papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Panoramic et la récursivité Ven 12 Avr 2019 - 21:55 | |
| - Code:
-
rem ============================================================================ rem Tracer quatre courbes de Levy rem par une procédure récursive rem ============================================================================ dim order : order = 10 : ' Ordre de la courbe dim length : length = 2 : ' Longueur de la ligne à tracer dim dx(8),dy(8) : ' Tableaux pour stocker les directions et les longueurs des lignes dim depth,direction,x,y,oldx,oldy,i for i = 0 to 7 dx(i+1) = cos(i/4*pi) * length dy(i+1) = sin(i/4*pi) * length next i picture 10 : full_space 10 : 2d_target_is 10 : color 10,0,0,0 caption 0,"4 Courbes de Levy ... Tracé en cours ..." for i = 0 to 3 depth = 0 : direction = i*2 x = width_client(10) / 2 y = height_client(10) /2 select i case 0 : 2d_pen_color 255,0,0 case 1 : 2d_pen_color 0,255,0 case 2 : 2d_pen_color 0,0,255 case 3 : 2d_pen_color 255,255,0 end_select Forward() next i caption 0,"Terminé" end rem ============================================================================ ' Procédure récursive SUB Forward() if depth <= order depth = depth + 1 direction = direction + 1 : if direction > 7 then direction = 0 Forward() : ' 1er appel récursif direction = direction - 1 : if direction < 0 then direction = 7 direction = direction - 1 : if direction < 0 then direction = 7 Forward() : ' 2ème appel récursif direction = direction + 1 : if direction > 7 then direction = 0 depth = depth - 1 else oldx = x : oldy = y x = x + dy(direction) : y = y + dx(direction) 2d_line oldx, oldy, x, y : display end_if END_SUB rem ============================================================================
- Spoiler:
Dernière édition par papydall le Ven 12 Avr 2019 - 22:36, édité 1 fois | |
|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Panoramic et la récursivité Ven 12 Avr 2019 - 22:16 | |
| Bonsoir Papydall ! Merci de l'information. C'est super ! Je ne savais pas que l'on pouvais faire ça Et en plus, le résultat visuel est beau ! | |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Panoramic et la récursivité Ven 12 Avr 2019 - 22:33 | |
| Bon, comme ça te plait, voici un autre exemple récursif - Code:
-
rem ============================================================================ rem Fractal Tree rem ============================================================================ dim level : level = 12 : ' Niveau de ramification, essayer avec 10 ou 15 ou autre valeur dim long : long = 100 : ' Longueur initiale du tronc (branche initiale) dim rotation : rotation = pi/2 : ' arbre vertical dim a1 : a1 = pi/6 : ' valeurs à modifier pour ... dim a2 : a2 = pi/8 : ' ... les inclinaisons des sous-branches dim c1 : c1 = 0.7 : ' correction pour modifier les longueurs ... dim c2 : c2 = 0.8 : ' ... des sous-branches dim x,y,xs(level), ys(level)
picture 10 : full_space 10 : 2d_target_is 10 : color 10,0,0,0 : 2d_pen_color 0,255,0 x = width_client(10)*.5 : y = height_client(10)-20 caption 0,"tracé en cours .... <ESC> pour arrêter" Tree() caption 0,"Terminé " end rem ============================================================================ ' Procédure récursive SUB Tree() xs(level) = x : ys(level) = y : PutLine() if scancode = 27 then terminate if level > 0 level = level - 1 long = long * c1 rotation = rotation - a1 Tree() : ' 1er appel à la procédure en cours long = long / c1 * c2 rotation = rotation + a1 + a2 Tree() : ' second appel à la procédure en cours rotation = rotation - a2 long = long / c2 level = level + 1 end_if x = xs(level) : y = ys(level) END_SUB rem ============================================================================ SUB PutLine() dim_local xn,yn xn = cos(rotation)*long + x yn = -1*sin(rotation)*long + y 2d_line x,y,xn,yn display : ' pour suivre le tracé x = xn : y = yn END_SUB rem ============================================================================
- Spoiler:
| |
|
Contenu sponsorisé
| Sujet: Re: Panoramic et la récursivité | |
| |
|