2008-11-26 5 views
4

Voici le pseudo-code de la façon dont je configure un tableau représentant l'ensemble MandelBrot, mais il devient terriblement étiré en laissant un ratio d'aspect de 1: 1.Pourquoi cela produit-il une Fractale étirée?

xStep = (maxX - minX)/width; 
yStep = (maxY - minY)/height; 

for(i = 0; i < width; i++) 
for(j = 0; j < height; j++) 
    { 
    constantReal = minReal + xStep * i; 
    constantImag = minImag + yStep * j; 
    image[i][j] = inSet(constantReal, constantImag); 
    } 

Merci!

+0

Pouvez-vous montrer ce que fait la fonction 'inSet'. – Akusete

+0

Il calcule le nombre d'itérations de ce point, renvoyant le nombre d'itérations ou 0 s'il est "trop ​​loin". –

Répondre

7

Voici pseudo-code de la façon dont je configurer un tableau représentant l'ensemble de Mandelbrot, mais il devient horriblement allongée en laissant un rapport d'aspect de 1: 1.

xStep = (maxX - minX)/width; 
yStep = (maxY - minY)/height; 

Aha! C'est parce que vous devez garder le même ratio d'aspect les deux pour l'image que vous allez dessiner et pour la région de l'avion complexe que vous voulez dessiner. En d'autres termes, il doit tenir

width  maxX - minX 
---------- = --------------------- 
height maxY - minY 

(Il en résulte que Xstep == yStep.) Votre code ne probablement pas respecter cette exigence.

+0

C'est tout! Cela ne m'est jamais venu à l'esprit. Merci beaucoup. 2: 1 fonctionne quand j'ai un 2: 1 dans l'espace d'affichage et l'espace complexe. –

0

Il s'agit probablement de la façon dont vous affichez la matrice image. Vous utilisez la variable de largeur i comme premier index, mais généralement le premier index doit être le plus lent, c'est-à-dire la hauteur.

Essayez de changer la dernière ligne image[j][i] = ...

+0

Est-ce que ça ne le retournerait pas horizontalement et verticalement, plutôt que de l'étirer? – MusiGenesis

+0

Pire encore, il écrirait en mémoire en dehors du tableau si la largeur n'était pas égale à la hauteur, ce que l'OP essaie de faire! –

0

Assurez-vous que vos moulages sont tous corrects. xStep et yStep peuvent être les produits de la division entière au lieu de la division en virgule flottante attendue (si c'est C# dans votre échantillon, il faudrait des distributions explicites pour fonctionner correctement).

Questions connexes