AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
SSD interne Crucial BX500 2,5″ SATA – 500 ...
Voir le deal
29.99 €

 

 [Tutoriel] Principe de Récursivité et Fractalisation

Aller en bas 
5 participants
AuteurMessage
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 0:37


Principe de Récursivité et Fractalisation


Sommaire
1-Introduction
2-Comment créer une fonction récursive ?
3-Applications mathématiques
4-Les fractales
5-Exercices


1- Introduction

Une fonction récursive est une fonction qui peut s'appeler elle-même au cours de son exécution.

Intérêts :
-Exécuter plusieurs fois une tâche identique.
-Nécessite l'écriture de petits programmes.
-Facilite la programmation

Bien que la récursivité soit très adapté pour faire des programmes simples, elle peut
augmenter considérablement la durée des calculs. Ce problème de vitesse peut être contourné
et nous verrons comment plus tard (peut être dans un autre topic même)


2-Comment créer une fonction récursive ?

Une fonction récursive est de cette forme :

Code:

fonction()
{
   fonction()
}

Seulement utiliser une fonction de cette manière serais dangereuse, vous
l'avez comprit, car nous aurions affaire a une instruction qui s'effectue a l'infinie.
Un moyen simple de remédier a ce problème est de poser une condition qui stopperas la
fonction au bout d'un certain moment.

Code:

fonction()
{
   if( condition )
   fonction()
}

De cette manière nous aurons alors la fonction qui s'appèlera tant que la condition est vrai.
Une manière simple de faire est d'arrêter la fonction au bout d'une certaine profondeur.
On choisis la profondeur dans un des paramètres de la fonction et on l'arrête quand la profondeur est
atteinte.

Code:

fonction(profondeur)
{
   if( argument0-1 < 0 ) exit
   fonction(argument0-1)
}


3-Applications mathématiques

Maintenant que nous connaissons le principe de la récursivité, voici quelques exemples de fonctions mathématiques.

Le factoriel, noté x!, et donné par la fonction : x! = 1*2*3* ... *x

Code:

factoriel(x)
{
   if( argument0 == 1 ) return 1
   return argument0 * factoriel(argument0-1)
}
La fonction puissance, avec n un entier positif
Code:

pow(x, n)
{
   if( argument1 == 0 ) return 1
   return argument0 * pow(argument0, argument1-1)
}

La racine carré, donnée par la formule : u(n+1) = 0,5 * ( u(n) + x/u(n))
On utiliseras la fonction avec temps=1

Code:

sqrt(itérations, x, temps)
{
   if( argument0 == 0) return argument2
   return sqrt( argument0-1 , argument1 , 0.5*( argument2 + argument1/argument2 ) )
}

Pour toutes ces fonctions, le résultat est d'autant plus précis que les itérations sont grandes.


4-Les fractales

Mais maintenant , que ce passera-t-il si nous appelons plusieurs fois notre fonction en elle même, comme ci dessous ?

Code:

fonction(profondeur, parametre, parametre, ...)
{
   if( argument0-1 < 0 ) exit

   fonction(argument0-1, parametre, parametre)
   fonction(argument0-1, parametre, parametre)
}

Et bien notre fonction va se fractaliser, et c'est de cette manière que l'on peut construire simplement de nombreuses fractales.

Pour commencer nous allons construire un arbre tout simple.
Celui-ci : [Tutoriel] Principe de Récursivité et Fractalisation Tuto2img1y

Le principe est simple. Dans notre fonction, on dessine deux branches. Et à l'extrémité de chaque branches, on dessine encore deux branches, etc.

Un algorithme de notre fonction serais :

Code:

draw(itérations, x, y, taille, rapport)
{
   if( iterations == 0 ) exit
   draw(itérations-1, x+taille, y+taille, taille*rapport, rapport)
   draw(itérations-1, x+taille, y-taille, taille*rapport, rapport)
}

Sous GM voici notre fonction :
Code:

draw(itérations, x, y, taille, rapport)
{
if( argument0 == 0 ) exit

var x1, y1, x2, y2;

x1 = argument1 + argument3
y1 = argument2 + argument3

x2 = argument1 + argument3
y2 = argument2 - argument3

draw_line(argument1, argument2, x1, y1)
draw_line(argument1, argument2, x2, y2)

draw( argument0 - 1 , x1, y1, argument3*argument4, argument4)
draw( argument0 - 1 , x2, y2, argument3*argument4, argument4)
}

Si vous êtes capables de coder cette fractale, alors vous avez compris le principe et vous pourrez coder de magnifique structures, arbres, dessins, etc.
Pour toutes les fractales il n'y a qu'une chose a respecter : avoir un motif basique qui se répète...


5-Exercices

Je vais ici mettre diverses images de fractales et le but seras de réussir a les recoder, pas forcement exactement la même, mais qu'il y ai une grande ressemblance.
Si vous arrivez a finir cet entrainement, les fractales n'aurons plus aucuns mystères pour vous, alors bonne chance.
Je rappelle que toutes la fractales qui suivent ont leurs sources dans ce pack d'exemple de fractales.

Pack d'exemples ( dernier upload le 2/7/2010 à 2h56 )
http://host-a.net/onilink_/Pack_Fractales.rar


[Tutoriel] Principe de Récursivité et Fractalisation Tuto2img3
[Tutoriel] Principe de Récursivité et Fractalisation Tuto2img2[Tutoriel] Principe de Récursivité et Fractalisation Tuto2img4[Tutoriel] Principe de Récursivité et Fractalisation Tuto2img5
[Tutoriel] Principe de Récursivité et Fractalisation Tuto2img6[Tutoriel] Principe de Récursivité et Fractalisation Tuto2img7
[Tutoriel] Principe de Récursivité et Fractalisation Tuto2img8


Dernière édition par onilink_ le Ven 2 Juil 2010 - 13:33, édité 12 fois
Revenir en haut Aller en bas
Invité
Invité




[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 1:15

je lis ça demain à tête reposée, mais d'avance bravo pour ce tuto
(ah et aussi je sais pas si c'est normal, mais maintenant j'arrive à savoir juste au nom du topic s'il est de toi :nezrouge: )
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer


Messages : 6938
Projet Actuel : Bataille de cake au fruits

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 2:16

triforce win coeur
sinon je crois comrpendre le principe, juste que quand vien l'affichage je capte pas comment tu fait poru tout afficher et non juste la partie en cours de traitement?
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 3:00

La récursivité est comparable aux boucles. Donc tout ce fait en un step, d'ou l'affichage immédiat.
En tout cas wow, coder toutes ces fractales d'un coup m'a donné envie de faire dodo
et Triforce win comme tu dit, bien content d'avoir (casiment) plié ce tuto.
Revenir en haut Aller en bas
alpha
Modérateur
alpha


Messages : 5030
Projet Actuel : Me taper la tête sur le mur.

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 14:12

Onilink et les fractales, une grande histoire d'amour awesome
Sinon, sympa le tuto.
Revenir en haut Aller en bas
http://www.perdu.com/
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 14:37

:coeur2: :coeur2: FRACTAAALES :coeur2: :coeur2:
Maintenant j'espere que tout le monde pourras faire des fractales sans problèmes :fier:
Envoyez donc vos créations coeur
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 15:25

tes tutoriels, tes scripts, tes exemples sont tous de plus en plus magnifique *snif*
c'est fou mais ou as-tu appris tout ca (le binaire, les fractales, ba tout quoi) ? tu as croisé ca sur le web ?
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Chlorodatafile
Utilisateur confirmé: Rang *****
Chlorodatafile


Messages : 2929
Localisation : Belfort
Projet Actuel :
Paralights

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 15:35

j'vais réaliser ma fractale moi, elle est importante pour mon jeu en plus Razz
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
Invité
Invité




[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 15:42

gabin49 a écrit:
c'est fou mais ou as-tu appris tout ca (le binaire, les fractales, ba tout quoi) ? tu as croisé ca sur le web ?

tu peux facilement apprendre à connaître tout ça, suffit de s'y intéresser + chercher ou lire un livre dessus happy1

Pour le binaire c'est pas très compliqué, si tu connais les bases (en mathématiques), tout devient très clair :oui:
Revenir en haut Aller en bas
Chlorodatafile
Utilisateur confirmé: Rang *****
Chlorodatafile


Messages : 2929
Localisation : Belfort
Projet Actuel :
Paralights

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 16:05

voilà ma fractale !

[Tutoriel] Principe de Récursivité et Fractalisation Alchimiecircle

PS : le cercle externe n'est pas inclus dans le script suivant :

Spoiler:

code du résultat précédent dans une room 640*640 :

Code:
draw_circle(room_width/2,room_height/2,250,1)
draw(4,room_width/2,room_height/2,100)
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
Invité
Invité




[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 16:18

gosc a écrit:

[Tutoriel] Principe de Récursivité et Fractalisation Alchimiecircle

ultimate minigun from "the death that kills".
Revenir en haut Aller en bas
Chlorodatafile
Utilisateur confirmé: Rang *****
Chlorodatafile


Messages : 2929
Localisation : Belfort
Projet Actuel :
Paralights

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 16:24

doh !

c'est la représentation schématisé de la physique des bios Razz

tu veux que je détaille ou ? Razz
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 16:28

gabin49 a écrit:
tes tutoriels, tes scripts, tes exemples sont tous de plus en plus magnifique *snif*
c'est fou mais ou as-tu appris tout ca (le binaire, les fractales, ba tout quoi) ? tu as croisé ca sur le web ?

Quand tu a vecu 15 ans de ta vie paumé dans la montagne sans avoir rien a faire(sans internet) et en etant presque tout le temps seul tu fait avec ^^, et tu cherche des trucs a faire.

Sinon content que mes tuto plaisent,et soient utiles, j'avais peur de mal expliquer =)

Edit : en tout cas gg gosc, et j'attend impatiemment d'autres fractales :coeur2:


Dernière édition par onilink_ le Ven 2 Juil 2010 - 16:49, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité




[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 16:49

lol nice les post de gosc et shm
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 16:58

oui nice gosc, par contre t'aurais pu faire plus court =p
Code:
//fifth_circle(iter, x, y, taille)
if( argument0 == 0 ) exit
var i, xx, yy;

for(i=0 ; i<360 ; i+=72)
{
    xx = argument1 + lengthdir_x(argument3*1.50,i)
    yy = argument2 + lengthdir_y(argument3*1.50,i)
    draw_circle(xx, yy, argument3,1)
    fifth_circle( argument0 - 1 , xx, yy, argument3*0.4)
}
Revenir en haut Aller en bas
Invité
Invité




[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 17:28

Est-ce que c'est toujours une fractale s'il y a de l'aléatoire ? Par exemple je fais un arbre mais avec du random dans l'angle des branches.

Sinon j'en ai fait une pour essayer et c'est sympa, merci pour ce tuto ange
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 17:33

d'apres wiki c'est toujours des fractales. Toute façon fractaliser veux juste dire briser ^^

Citation :
Les fractales aléatoires, générées par des processus stochastiques et non déterministes, par exemples les paysages fractals.
Revenir en haut Aller en bas
Chlorodatafile
Utilisateur confirmé: Rang *****
Chlorodatafile


Messages : 2929
Localisation : Belfort
Projet Actuel :
Paralights

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 17:34

woah, merci onilink_ !
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 17:35

Faut vraiment utiliser les boucles dès que l'on peut, c'est plus rapide et le code est plus court
Revenir en haut Aller en bas
Invité
Invité




[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 17:48

Voilà mon deuxième essai :
[Tutoriel] Principe de Récursivité et Fractalisation 10928533067397_fractale
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation EmptyVen 2 Juil 2010 - 18:12

ouai suuper coeur
Allez si tout le monde fait ça fractale on va pouvoir ouvrir une galerie :pac_dr:
Revenir en haut Aller en bas
Contenu sponsorisé





[Tutoriel] Principe de Récursivité et Fractalisation Empty
MessageSujet: Re: [Tutoriel] Principe de Récursivité et Fractalisation   [Tutoriel] Principe de Récursivité et Fractalisation Empty

Revenir en haut Aller en bas
 
[Tutoriel] Principe de Récursivité et Fractalisation
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Tutoriel] les fichiers ini
» [Tutoriel] GML vs D&D
» [Tutoriel] 'FOR'
» [Tutoriel] Ftp Dll
» [Tutoriel] Alléger son jeu !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Game Maker-
Sauter vers: