Bienvenue au pays des fractales...

Soyez le premier à donner votre avis sur cette source.

Vue 4 197 fois - Téléchargée 492 fois

Description

FRACTMONDE 3.2 (et des poussières)

Nouveauté : Légère Optimisation de l'algorithme de rendu pour Mandelbrot seulement (les julias, ce sont pas les même symétries)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- PROCHAINEMENT -
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  • Réduction de la limitation du zoom maximum (due aux limites du control PictureBox) (j'ai toujours pas trouvé comment *grrr**)=
  • La procédure de calcul va sûrement passer en C++ (faut juste que je m'y mette lol)
  • Ajout du paramètre de rotation de la fenêtre (rotation du cadre de zoom) (j'y suis presque)
  • Peut-être de nouveaux ensembles (Markus-Lyapunov et celles de Newton)
  • Interface MDI pour plus de maniabilité... (gros morceau)
  • Et le fin du fin (mais ça, ça va me prendre un peu de temps, car il faut que je trouve le moyen de le faire) : Création de vidéos sur les ensembles. (si quelqu'un sait comment on fait, à partir d'une séquence d'images bmp, je suis preneur...)

Source / Exemple :


'Tout est dans le ZIP !!

'*****************************

'SuiteCalc : Calcul de vitesse de divergence'

'Cette fonction constitue le coeur du programme : c'est elle qui fait tout
'le boulot !!!

'La boucle While est interrompu lorsque le module d'un élément de la suite
'est supérieur ou égal à 2, signe de la divergence de la suite. Je laisse
'le soin de la démonstration à ceux qui voudrait s'y atarder ;^).

Function SuiteCalc(Z As Double, ZI As Double, ByRef a As Double, ByRef b As Double, ByRef c As Integer)
  Dim Z1 As Double, ZI1 As Double, Tmp As Double
  Z1 = Z: ZI1 = ZI
  While c < MAX_Rec And (Z1 * Z1 + ZI1 * ZI1) < 4
    Tmp = Z1 * Z1 - ZI1 * ZI1 + a
  'Réalise les opérations sur les complexes : Z(n+1)= a+ ib + Z(n)^2
    ZI1 = 2 * Z1 * ZI1 + b
    Z1 = Tmp
    c = c + 1
  Wend
End Function

Conclusion :


Si vous augmentez le niveau de récurrence, le rendu sera d'autant plus long que votre zone de zoom comportera de zones noires (parce que pour ces zones, la fonction SuiteCalc va au bout des "Max_Rec" boucles).
Si vous faites un zoom sur une petite zone qui n'est pas entièrement noires et que le rendu ne donne presque que du noir, c'est peut-être que le niveau de récurrence est trop faible : ajustez le au fur et à mesure que le rendu se fait pour trouver celui qui donne le meilleur résultat..
Enfin, si, après un zoom, lorsque vous lancez le calcul, seule une ligne sur deux est colorée, ou un point sur deux, ou pire encore, c'est que vous avez atteind la limite de zoom due, je l'ai dit plus haut, aux limites même du contrôle PictureBox et de la procédure 'Scale'...
Faites moi part de vos remarques et suggestions, je les attends !!

(: Sibo :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
367
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010

Pour ne plus avoir de limites du tout, il y aurait bien une solution ... qui consisterait à simuler les opérateurs : + - / * ( Y'en a d'autre de vraiment utile ?)
Si on arrive à les simuler, on pourrait avoir des nombres avec autant de précision qu'on le souhaite ! Cependant, alors que le calcul est actuellement "friand" en ressources, là il va carrément "vampiriser" le processeur, a ce stade ça dépasse la gourmandise !
Une idée à creuser tu ne trouves pas ?
Perso, j'arrive à simuler "+" , "-" , "*" avec autant de précision que je le veux (euh en fait je suis limité par le nombre de caractères dans une variable de type string, soit 32767 il me semble)
Mais "/" résiste toujours à mes tentatives ):(
Messages postés
72
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
20 juin 2003

>> Dans très peu de temps (si ce n'est pas cet après midi, je devrais mettre une amélioration du programme, qui rend plus pratique le mode zoom (Merci à ZeroCool qui m'avait mis sur la voie ;)

@+ et... bonne prog... (: Sibo ;)
Messages postés
61
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 avril 2003

J'ai essayé avec ton prog, mais ca fai po la meme chose qu'avec le mien... tant pis...
@+
Messages postés
61
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 avril 2003

Si ca t'interesse voila une petite modif de Mandelbrot que j'avais fait ya pas mal de temps... Ca crée une autre fractale que g trouvé pas mal...

Do
t = c * c - d * d - 0.55
d = 2 * c * d - 0.55
c = t
Couleur = Couleur + 1
Loop Until (Couleur > maxIt) Or ((c ^ 2 + d ^ 2) > Max)

Dans ta source ca correspond au changement des variables a et b par -0.55
Voila, continue comme ca
Bon prog...
Messages postés
68
Date d'inscription
lundi 21 mai 2001
Statut
Membre
Dernière intervention
4 janvier 2003

puissant!!!
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.